目录
-
安装程序包
-
卸载
-
升级
-
查询
-
校验
-
来源合法性和完整性验证
-
数据库重建
1 安装程序包
rpm -ivh /path/to/package_file -v 显示执行过程的参数。 -h 使用 # 来表示安装进度。
>> –test选项
可以用来仅测试是否可以安装,而不是真的安装这个 rpm 包。
>> 依赖关系
如果安装的程序,有许多有依赖关系的包需要安装。我们则需要先解决依赖关系,才能安装这个程序包。
当然我们也可以忽略依赖关系(参数:–nodeps)。但该方法可能会导致安装程序无法运行。
>> 重新安装(–replacepkgs)
如果配置文件被修改过,则不会被替换。新生成的配置文件被另存为.new
2 卸载程序包
rpm -ev package_name ## 这里就不需要路径了,直接指定程序包名,即可卸载
>> 依赖关系
如果想要卸载的 rpm 包,被其他包依赖。则,我们可以将依赖与此包的所有包一并卸载。
同样,我们可以使用 –nodeps 参数忽略依赖关系,强行卸载此包。
注意,如果包的配置文件被修改过,那么卸载时,这个修改过的配置文件不会被卸载,而是重命名后保留。
3 升级程序包
也就是新版本,替代老版本。(不应该对内核执行升级操作。)
rpm -U | -F /path/to/package_file -U 升级或安装 -F 纯升级(需要有老版本程序)
>> 依赖关系
对于被依赖的包,升级之后可能导致版本冲突。我们可以使用 –force 强行升级。当然同样会产生问题。
4 查询
>> 查询某包是否安装
rpm -q package_name [root@localhost Packages]# rpm -q php package php is not installed ## 可以一次查询多个,用空格隔开。
>> 查询所有已安装的包
rpm -qa ## 查询结果,可以通过 grep 进一步筛选
>> 查询程序包描述信息(已安装)
[root@localhost Packages]# rpm -qi bash Name : bash Relocations: (not relocatable) Version : 4.1.2 Vendor: CentOS Release : 15.el6_4 Build Date: Thu 18 Jul 2013 06:21:24 AM PDT Install Date: Sat 17 Oct 2015 03:10:09 PM PDT Build Host: c6b10.bsys.dev.centos.org Group : System Environment/Shells Source RPM: bash-4.1.2-15.el6_4.src.rpm Size : 3139291 License: GPLv3+ Signature : RSA/SHA1, Thu 18 Jul 2013 06:46:10 AM PDT, Key ID 0946fca2c105b9de Packager : CentOS BuildSystem <http://bugs.centos.org> URL : http://www.gnu.org/software/bash Summary : The GNU Bourne Again shell Description : The GNU Bourne Again shell (Bash) is a shell or command language interpreter that is compatible with the Bourne shell (sh). Bash incorporates useful features from the Korn shell (ksh) and the C shell (csh). Most sh scripts can be run by bash without modification. ## relocations 安装过程是否允许自行指定安装位置
>> 查询某包安装生成了哪些文件
rpm -ql package_name [root@localhost Packages]# rpm -ql bash /bin/bash /bin/sh /etc/skel/.bash_logout /etc/skel/.bash_profile /etc/skel/.bashrc /usr/bin/bashbug-64 ...
(1)我们也可以单独查看生成的配置文件
[root@localhost Packages]# rpm -qc bash /etc/skel/.bash_logout /etc/skel/.bash_profile /etc/skel/.bashrc
(2)查询安装生成的帮助文件
[root@localhost Packages]# rpm -qd bash /usr/share/doc/bash-4.1.2/COPYING /usr/share/info/bash.info.gz /usr/share/man/man1/..1.gz /usr/share/man/man1/:.1.gz
(3) 查询程序包的脚本文件
[root@localhost Packages]# rpm -q --scripts bash 其中包括: preinstall postinstall preuninstall postunintall
(4) 查询某文件是由哪个包生成的
[root@localhost Packages]# rpm -qf /etc/fstab setup-2.8.14-20.el6_4.1.noarch
(5) 对尚未安装的包执行查询
[root@localhost Packages]# rpm -qpc zsh-4.3.10-7.el6.i686.rpm /etc/skel/.zshrc /etc/zlogin /etc/zlogout /etc/zprofile /etc/zshenv /etc/zshrc ## 在之前所有查询基础上,使用 p 参数。实现查询未安装程序包的各种信息。
5 校验
主要是检查程序包安装后,文件属性是否发生变化。
rpm -V package_name
如果校验结果正常,则不会输出任何结果。如果有不一致的,就会显示。 显示的输出格式是 8 位长得字符串,没有变化的,以"." 点号来表示。
-
S File Size
-
M Mode
-
5 MD5 校验码改变
-
D 主设备或次设备号发生改变
-
L ReadLink 路径
-
U 属主
-
G 属组
-
T 时间
-
P capabilityes 改变。
6 来源合法性和完整性检验
要完成检验,我们首先要导入程序包制作者的公钥。如果是光盘,则在光盘上会提供。
-r--r--r--. 2 root root 1706 Nov 27 2013 RPM-GPG-KEY-CentOS-6 ## 光盘上提供的制作者公钥信息
>> 导入公钥
[root@localhost CDROM]# rpm --import /media/CDROM/RPM-GPG-KEY-CentOS-6
>> 显示已导入的所有公钥
[root@localhost CDROM]# rpm -qa gpg-pubkey* gpg-pubkey-c105b9de-4e0fd3a3 gpg-pubkey-0608b895-4bd22942
>> 显示某公钥详细信息
[root@localhost CDROM]# rpm -qi gpg-pubkey-0608b895-4bd22942 Name : gpg-pubkey Relocations: (not relocatable) Version : 0608b895 Vendor: (none) Release : 4bd22942 Build Date: Tue 29 Mar 2016 02:16:32 AM PDT Install Date: Tue 29 Mar 2016 02:16:32 AM PDT Build Host: localhost Group : Public Keys Source RPM: (none) Size : 0 License: pubkey Signature : (none) Summary : gpg(EPEL (6) <epel@fedoraproject.org>) Description : -----BEGIN PGP PUBLIC KEY BLOCK----- Version: rpm-4.8.0 (NSS-3) mQINBEvSKUIBEADLGnUj24ZVKW7liFN/JA5CgtzlNnKs7sBg7fVbNWryiE3URbn1 JXvrdwHtkKyY96/ifZ1Ld3lE2gOF61bGZ2CWwJNee76Sp9Z+isP8RQXbG5jwj/4B M9HK7phktqFVJ8VbY2jfTjcfxRvGM8YBwXF8hx0CDZURAjvf1xRSQJ7iAo58qcHn XtxOAvQmAbR9z6Q/h/D+Y/PhoIJp1OV4VNHCbCs9M7HUVBpgC53PDcTUQuwcgeY6 pQgo9eT1eLNSZVrJ5Bctivl1UcD6P6CIGkkeT2gNhqindRPngUXGXW7Qzoefe+fV QqJSm7Tq2q9oqVZ46J964waCRItRySpuW5dxZO34WM6wsw2BP2MlACbH4l3luqtp Xo3Bvfnk+HAFH3HcMuwdaulxv7zYKXCfNoSfgrpEfo2Ex4Im/I3WdtwME/Gbnwdq 3VJzgAxLVFhczDHwNkjmIdPAlNJ9/ixRjip4dgZtW8VcBCrNoL+LhDrIfjvnLdRu vBHy9P3sCF7FZycaHlMWP6RiLtHnEMGcbZ8QpQHi2dReU1wyr9QgguGU+jqSXYar 1yEcsdRGasppNIZ8+Qawbm/a4doT10TEtPArhSoHlwbvqTDYjtfV92lC/2iwgO6g YgG9XrO4V8dV39Ffm7oLFfvTbg5mv4Q/E6AWo/gkjmtxkculbyAvjFtYAQARAQAB tCFFUEVMICg2KSA8ZXBlbEBmZWRvcmFwcm9qZWN0Lm9yZz6JAjYEEwECACAFAkvS KUICGw8GCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRA7Sd8qBgi4lR/GD/wLGPv9 qO39eyb9NlrwfKdUEo1tHxKdrhNz+XYrO4yVDTBZRPSuvL2yaoeSIhQOKhNPfEgT 9mdsbsgcfmoHxmGVcn+lbheWsSvcgrXuz0gLt8TGGKGGROAoLXpuUsb1HNtKEOwP Q4z1uQ2nOz5hLRyDOV0I2LwYV8BjGIjBKUMFEUxFTsL7XOZkrAg/WbTH2PW3hrfS WtcRA7EYonI3B80d39ffws7SmyKbS5PmZjqOPuTvV2F0tMhKIhncBwoojWZPExft HpKhzKVh8fdDO/3P1y1Fk3Cin8UbCO9MWMFNR27fVzCANlEPljsHA+3Ez4F7uboF p0OOEov4Yyi4BEbgqZnthTG4ub9nyiupIZ3ckPHr3nVcDUGcL6lQD/nkmNVIeLYP x1uHPOSlWfuojAYgzRH6LL7Idg4FHHBA0to7FW8dQXFIOyNiJFAOT2j8P5+tVdq8 wB0PDSH8yRpn4HdJ9RYquau4OkjluxOWf0uRaS//SUcCZh+1/KBEOmcvBHYRZA5J l/nakCgxGb2paQOzqqpOcHKvlyLuzO5uybMXaipLExTGJXBlXrbbASfXa/yGYSAG iVrGz9CE6676dMlm8F+s3XXE13QZrXmjloc6jwOljnfAkjTGXjiB7OULESed96MR XtfLk0W5Ab9pd7tKDR6QHI7rgHXfCopRnZ2VVQ== =V/6I -----END PGP PUBLIC KEY BLOCK-----
>> 利用密钥检查程序包
[root@localhost CDROM]# rpm -K ./Packages/zsh-4.3.10-7.el6.i686.rpm ./Packages/zsh-4.3.10-7.el6.i686.rpm: rsa sha1 (md5) pgp md5 OK ## 上面同时会检查完整性和来源合法性,我们也可以单独检查 --nodigest 不检查完整性 --nosignature 不检查来源合法性
7 rpm 数据库重建
rpm 数据库用来追踪每个程序包的依赖关系。数据库存放在 /var/lib/rpm 目录下,其中包括
[root@localhost CDROM]# ll /var/lib/rpm/ total 66820 -rw-r--r--. 1 root root 5513216 Jun 9 04:37 Basenames -rw-r--r--. 1 root root 12288 Apr 2 18:42 Conflictname -rw-r--r--. 1 root root 1474560 Jun 9 04:37 Dirnames -rw-r--r--. 1 root root 10182656 Jun 9 04:37 Filedigests -rw-r--r--. 1 root root 24576 Jun 9 04:37 Group -rw-r--r--. 1 root root 16384 Jun 9 04:37 Installtid -rw-r--r--. 1 root root 40960 Jun 9 04:37 Name -rw-r--r--. 1 root root 24576 Jun 9 04:37 Obsoletename -rw-r--r--. 1 root root 50925568 Jun 9 04:37 Packages -rw-r--r--. 1 root root 1310720 Jun 9 04:37 Providename -rw-r--r--. 1 root root 614400 Jun 9 04:37 Provideversion -rw-r--r--. 1 root root 12288 Mar 29 02:16 Pubkeys -rw-r--r--. 1 root root 446464 Jun 9 04:37 Requirename -rw-r--r--. 1 root root 241664 Jun 9 04:37 Requireversion -rw-r--r--. 1 root root 86016 Jun 9 04:37 Sha1header -rw-r--r--. 1 root root 81920 Jun 9 04:37 Sigmd5 -rw-r--r--. 1 root root 12288 Jun 9 04:37 Triggername ## 如果这些文件损坏,将会对 rpm 的安装,卸载,查询等功能产生影响。
>> 初始化
rpm --initdb ## 如果事先没有库,则新建。如果有,则不执行
>> 重建
rpm --rebuilddb ## 直接重建,覆盖原有数据
原创文章,作者:FoxPro,如若转载,请注明出处:http://www.178linux.com/18444
评论列表(1条)
赞,样式上调整的很专业,