目錄
-
安裝程序包
-
卸載
-
升級
-
查詢
-
校驗
-
來源合法性和完整性驗證
-
數據庫重建
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.www58058.com/18444
贊,樣式上調整的很專業,