标签:包管理系统
1.什么是RPM
RPM Package Manager(RPM)是一个开放式的包管理系统,它既可以运行于RHEL系统,也可以运行于其他Linux或Unix系统。
1.1 RPM包的命名方式一般为:
zip-3.0-1.el6.i686.rpm
package name zip
version 3.0
release 1
major version el6
CPU architecture i686
2.安装,升级,刷新和卸载
rpm {-i|--install} [install-options] PACKAGE_FILE ...
安装一个包
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
升级一个包到最新的版本,或者安装一个包
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
刷新一个包到最新版本,同-U,但包必须先被安装在系统上才会执行
rpm -Fvh *.rpm 升级所有已经安装的包
2.1 安装时加入-v可以获得更多信息,加入-h使用哈希符号显示进度表,所以它们组合起来是这样的
[root@localhost ~]# rpm -Uvh createrepo-0.9.9-18.el6.noarch.rpm
warning: createrepo-0.9.9-18.el6.noarch.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing... ########################################### [100%]
1:createrepo ########################################### [100%]
notice:Linux提供了两个可以安装包的选项(-U & -i),-U选项包含了安装和升级,所以推荐使用-U选项,但
在安装内核时,请使用-i选项,因为-U升级完成后会删除旧内核,如果升级完成之后的内核无法使用则会造成系统故障
未解决的依赖关系
RPM安装包有时会依赖于其它安装包,这时需要被依赖包安装才能正确运行
列如:
[root@localhost ~]# rpm -Uvh nginx-1.0.15-12.el6.i686.rpm
warning: nginx-1.0.15-12.el6.i686.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
error: Failed dependencies:
GeoIP is needed by nginx-1.0.15-12.el6.i686
gd is needed by nginx-1.0.15-12.el6.i686
libGeoIP.so.1 is needed by nginx-1.0.15-12.el6.i686
libgd.so.2 is needed by nginx-1.0.15-12.el6.i686
nginx-filesystem is needed by nginx-1.0.15-12.el6.i686
nginx-filesystem = 1.0.15-12.el6 is needed by nginx-1.0.15-12.el6.i686
notice:如果想nginx包安装,这时有两个方法:
方法1:
安装对应的RPM包,解决依赖关系
方法2:
使用--nodeps选项忽略依赖关系(虽然可以安装,但可能导致程序运行不正常)
rpm -Uvh --nodeps nginx-1.0.15-12.el6.i686.rpm
配置文件被更改
当您升级一个包时,可能会出现一下的信息,
saving /etc/ntp.conf as /etc/ntp.conf.rpmsave
这是因为您对旧版本程序配置文件修改不能被新版本兼容,因此RPM保存了之前修改的文件,并
安装了一个新的
2.2 卸载
rpm -e nginx
#卸载时使用包名,而不是包的全部名称
3.查询,校验及RPM数据库管理
rpm {-q|--query} [select-options] [query-options]
-q <Package_Name> 对某包进行查询
-p <Package_Name> 对未安装的包进行查询
-a 在所有已被安装的包中查询
-f <File_Name> 查询文件被哪个包拥有
下列选项用于选择指定查询哪些信息
-i 显示某包的详细信息
-l 显示某包中的所有文件
-d 显示某包的说明文档
-c 显示某包的配置文件
例:
rpm -qpi <Package_File> 查询一个尚未安装包的详细信息
rpm -ql <Package_Name> 查询某个已被安装包生成的文件列表
3.1 校验
rpm -V <package_name>
用于检查安装生成的文件属性是否发生变化,主要描述有
5 MD5检查
S 文件大小
L 符号链接
T 文件修改时间
D 设备
U 用户
G 组
M 权限
? 不可理解文件(文件权限错误)
. 没有发生改变
3.2 检查包的数字签名
校验RPM包必须先要导入GunPG key
[root@localhost ~]# rpm --import /media/cdrom/RPM-GPG-KEY-CentOS-6
显示所有已经导入的GunPG key
[root@localhost ~]# rpm -qa gpg-pubkey*
gpg-pubkey-c105b9de-4e0fd3a3
想要显示key的详细信息
[root@localhost ~]# rpm -qi gpg-pubkey-c105b9de-4e0fd3a3
对包进行数字签名检查
[root@localhost Packages]# rpm -K zip-3.0-1.el6.i686.rpm
zip-3.0-1.el6.i686.rpm: rsa sha1 (md5) pgp md5 OK
3.3 RPM数据库管理
RPM所有查询功能都是基于数据库的
#数据库目录为/var/lib/rpm
rpm --initdb #初始化,如果没有则新建,有则不执行
rpm --rebuilddb #数据库重建,覆盖原有
参考文档:
Red_Hat_Enterprise_Linux-6-Deployment_Guide-en-US
标签:包管理系统
原文地址:http://5778452.blog.51cto.com/5768452/1745848