rmp 程 序 包 管 理 介 紹
※包管理器
◎二進制應用程序的組成部分:
二進制文件、庫文件、配置文件、幫助文件
◎程序包管理器:
debian:deb文件, dpkg包管理器
redhat: rpm文件, rpm包管理器
rpm: Redhat Package Manager
RPM P ackage Manager
※rmp常用命令介紹
*安裝
◎安裝符合FHS標準,程序員把文件放在什么地方都有文件路徑存放路徑
◎CentOS系統上使用rpm命令管理程序包:安裝、卸載、升級、查詢、校驗、數據庫維護
安裝:
rpm {-i|–install} [install-options] PACKAGE_FILE…
-v : verbose
-vv :
-h : 以#顯示程序包管理執行進度
rpm -ivh PACKAGE_FILE …[常用的安裝命令
rpm -i(install)v(詳細信息)h(顯示進度條) ]安裝:
*升級:
◎升級:
◎rpm {-U|–upgrade} [install-options] PACKAGE_FILE…
◎rpm {-F|–freshen} [install-options] PACKAGE_FILE…
upgrade[有舊版本就升級,沒有就安裝軟件]:安裝有舊版程序包,則“升級”
如果不存在舊版程序包,則“安裝”
freshen[有舊版本就升級,沒有就不安裝軟件]:安裝有舊版程序包,則“升級”
如果不存在舊版程序包,則不執行升級操作
rpm -Uvh PACKAGE_FILE …
rpm -Fvh PACKAGE_FILE …
–oldpackage:降級[降級
rpm -ivh –oldpackage 舊版本包名]
–force: 強行升級
*卸載:
rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–notriggers] [–test] PACKAGE_NAME …
*查詢:
◎rpm {-q|–query} [select-options] [query-options]
◎[select-options]
-a: 所有包
-f: 查看指定的文件由哪個程序包安裝生成
-p rpmfile:針對尚未安裝的程序包文件做查詢操作;
–whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個包所提供
–whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴
◎rpm2cpio 包文件|cpio–itv預覽包內文件[
查看rpm的包內的文件。
◎rpm2cpio 包文件|cpio –id “*.conf”釋放包內文件[把rpm單個的文件解壓出來]
◎[query-options]
–changelog:查詢rpm包的changelog[更新日志]
-c: 查詢程序的配置文件
-d: 查詢程序的文檔
-i: information
-l: 查看指定的程序包安裝后生成的所有文件;
–scripts:程序包自帶的腳本片斷
-R: 查詢指定的程序包所依賴的CAPABILITY;
–provides: 列出指定程序包所提供的CAPABILITY;
◎查詢用法:
-qi PACKAGE, -qfFILE, -qc PACKAGE, -qlPACKAGE, -qdPACKAGE
-qpi PACKAGE_FILE, -qplPACKAGE_FILE, …
-qa :查詢所有的安裝包
*校驗:
◎rpm {-V|–verify} [select-options] [verify-options][rpm -V tree 查看文件包哪些屬性被修改過。
可以修改幫助文件內容,測試用一用。
查詢所有包的校驗
rpm -Va
S file Size differs
M Mode differs (includes permissions and file type)
5 digest (formerly MD5 sum) differs
D Device major/minor number mismatch
L readLink(2) path mismatch
U User ownership differs
G Group ownership differs
T mTimediffers
P capabilities differ
◎包來源合法性驗正及完整性驗正:
完整性驗正:SHA256
來源合法性驗正:RSA
◎公鑰加密:
對稱加密:加密、解密使用同一密鑰;
非對稱加密:密鑰是成對兒的
public key: 公鑰,公開所有人
secret key: 私鑰, 不能公開
◎導入所需要公鑰:
rpm -K | checksigrpmfile檢查包的完整性和簽名
rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7[R
oot@Centos7 /]# rpm -qa | grep gpg
gpg-pubkey-f4a80eb5-53a7ff4b
刪除 gpg-pubkey-f4a80eb5-53a7ff4b即可刪除公鑰
CentOS 7發行版光盤提供:RPM-GPG-KEY-CentOS-7
rpm -qa gpg-pubkey*
*數據庫:
◎數據庫重建:
/var/lib/rpm
◎rpm {–initdb | –rebuilddb}
initdb: 初始化
如果事先不存在數據庫,則新建之
否則,不執行任何操作
rebuilddb:重建
無論當前存在與否,直接重新創建數據庫
※rmp使用實例介紹
*安裝tree命令最新版,下載后校驗數據包的完整性,安裝前測試安裝,看看需要安裝后有哪些文件,該程序包依賴哪些軟件包?(主要在于熟悉軟件包的命令)
解:
1.我們在系統軟件光盤中查找 tree。
[root@Centos7 Packages]# ls | grep "^tree" tree-1.6.0-10.el7.x86_64.rpm [root@Centos7 Packages]# pwd /run/media/root/CentOS 7 x86_64/Packages [root@Centos7 Packages]#
2.需要校驗文件包,我們需要導入公鑰。
[root@Centos7 Packages]# rpm -K tree-1.6.0-10.el7.x86_64.rpm #檢測包的完整性 tree-1.6.0-10.el7.x86_64.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP#f4a80eb5) [root@Centos7 Packages]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #導入公鑰 [root@Centos7 Packages]# rpm -K tree-1.6.0-10.el7.x86_64.rpm tree-1.6.0-10.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK [root@Centos7 Packages]#
[root@Centos7 Packages]# rpm -qi gpg-pubkey-f4a80eb5-53a7ff4b #查看公鑰信息 Name : gpg-pubkey Version : f4a80eb5 Release : 53a7ff4b Architecture: (none) Install Date: Fri 19 Aug 2016 05:05:56 PM CST Group : Public Keys Size : 0 License : pubkey Signature : (none) Source RPM : (none) Build Date : Mon 23 Jun 2014 06:19:55 PM CST Build Host : localhost Relocations : (not relocatable) Packager : CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org> Summary : gpg(CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>) Description : -----BEGIN PGP PUBLIC KEY BLOCK----- Version: rpm-4.11.3 (NSS-3) mQINBFOn/0sBEADLDyZ+DQHkcTHDQSE0a0B2iYAEXwpPvs67cJ4tmhe/iMOyVMh9 Yw/vBIF8scm6T/vPN5fopsKiW9UsAhGKg0epC6y5ed+NAUHTEa6pSOdo7CyFDwtn 4HF61Esyb4gzPT6QiSr0zvdTtgYBRZjAEPFVu3Dio0oZ5UQZ7fzdZfeixMQ8VMTQ 4y4x5vik9B+cqmGiq9AW71ixlDYVWasgR093fXiD9NLT4DTtK+KLGYNjJ8eMRqfZ Ws7g7C+9aEGHfsGZ/SxLOumx/GfiTloal0dnq8TC7XQ/JuNdB9qjoXzRF+faDUsj WuvNSQEqUXW1dzJjBvroEvgTdfCJfRpIgOrc256qvDMp1SxchMFltPlo5mbSMKu1 x1p4UkAzx543meMlRXOgx2/hnBm6H6L0FsSyDS6P224yF+30eeODD4Ju4BCyQ0jO IpUxmUnApo/m0eRelI6TRl7jK6aGqSYUNhFBuFxSPKgKYBpFhVzRM63Jsvib82rY 438q3sIOUdxZY6pvMOWRkdUVoz7WBExTdx5NtGX4kdW5QtcQHM+2kht6sBnJsvcB JYcYIwAUeA5vdRfwLKuZn6SgAUKdgeOtuf+cPR3/E68LZr784SlokiHLtQkfk98j NXm6fJjXwJvwiM2IiFyg8aUwEEDX5U+QOCA0wYrgUQ/h8iathvBJKSc9jQARAQAB tEJDZW50T1MtNyBLZXkgKENlbnRPUyA3IE9mZmljaWFsIFNpZ25pbmcgS2V5KSA8 c2VjdXJpdHlAY2VudG9zLm9yZz6JAjUEEwECAB8FAlOn/0sCGwMGCwkIBwMCBBUC CAMDFgIBAh4BAheAAAoJECTGqKf0qA61TN0P/2730Th8cM+d1pEON7n0F1YiyxqG QzwpC2Fhr2UIsXpi/lWTXIG6AlRvrajjFhw9HktYjlF4oMG032SnI0XPdmrN29lL F+ee1ANdyvtkw4mMu2yQweVxU7Ku4oATPBvWRv+6pCQPTOMe5xPG0ZPjPGNiJ0xw 4Ns+f5Q6Gqm927oHXpylUQEmuHKsCp3dK/kZaxJOXsmq6syY1gbrLj2Anq0iWWP4 Tq8WMktUrTcc+zQ2pFR7ovEihK0Rvhmk6/N4+4JwAGijfhejxwNX8T6PCuYs5Jiv hQvsI9FdIIlTP4XhFZ4N9ndnEwA4AH7tNBsmB3HEbLqUSmu2Rr8hGiT2Plc4Y9AO aliW1kOMsZFYrX39krfRk2n2NXvieQJ/lw318gSGR67uckkz2ZekbCEpj/0mnHWD 3R6V7m95R6UYqjcw++Q5CtZ2tzmxomZTf42IGIKBbSVmIS75WY+cBULUx3PcZYHD ZqAbB0Dl4MbdEH61kOI8EbN/TLl1i077r+9LXR1mOnlC3GLD03+XfY8eEBQf7137 YSMiW5r/5xwQk7xEcKlbZdmUJp3ZDTQBXT06vavvp3jlkqqH9QOE8ViZZ6aKQLqv pL+4bs52jzuGwTMT7gOR5MzD+vT0fVS7Xm8MjOxvZgbHsAgzyFGlI1ggUQmU7lu3 uPNL0eRx4S1G4Jn5 =OGYX -----END PGP PUBLIC KEY BLOCK-----
3.測試模式安裝tree,查詢
[root@Centos7 Packages]# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm --test #測試安裝 Preparing... ################################# [100%] package tree-1.6.0-10.el7.x86_64 is already installed [root@Centos7 Packages]# rpm -qa | grep tree-1.6.0-10.el7.x86_64.rpm [root@Centos7 Packages]#
[root@Centos7 Packages]# rpm -qpi tree-1.6.0-10.el7.x86_64.rpm #查詢未安裝的包文件信息 Name : tree Version : 1.6.0 Release : 10.el7 Architecture: x86_64 Install Date: (not installed) Group : Applications/File Size : 89505 License : GPLv2+ Signature : RSA/SHA256, Fri 04 Jul 2014 01:36:46 PM CST, Key ID 24c6a8a7f4a80eb5 Source RPM : tree-1.6.0-10.el7.src.rpm Build Date : Tue 10 Jun 2014 03:28:53 AM CST Build Host : worker1.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://mama.indstate.edu/users/ice/tree/ Summary : File system tree viewer Description : The tree utility recursively displays the contents of directories in a tree-like format. Tree is basically a UNIX port of the DOS tree utility.
[root@Centos7 Packages]# rpm -qpl tree-1.6.0-10.el7.x86_64.rpm #查詢安裝后生成的文件 /usr/bin/tree /usr/share/doc/tree-1.6.0 /usr/share/doc/tree-1.6.0/LICENSE /usr/share/doc/tree-1.6.0/README /usr/share/man/man1/tree.1.gz
[root@Centos7 Packages]# rpm -qpR tree-1.6.0-10.el7.x86_64.rpm #查詢包安裝需要的庫文件 libc.so.6()(64bit) libc.so.6(GLIBC_2.14)(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.4)(64bit) libc.so.6(GLIBC_2.4)(64bit) rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rtld(GNU_HASH) rpmlib(PayloadIsXz) <= 5.2-1
4.rpm程序包安裝。
前3步沒有實際的安裝程序包,只是對文件包做檢測,查詢程序包的信息,查詢生成的文件,查詢需要的依賴庫文件等等。
#安裝rpm程序包[root@Centos7 Packages]# rpm -qa | grep tree [root@Centos7 Packages]# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm #安裝程序包Preparing... ################################# [100%]Updating / installing... 1:tree-1.6.0-10.el7 ################################# [100%][root@Centos7 Packages]# rpm -qa | grep treetree-1.6.0-10.el7.x86_64
小結:
以上是rpm包常用的安裝命令,由于rpm命令無法解決包與包之間的依賴關系,需要手工解決。手工卸載軟件時,當你卸載的軟件有其它軟件依賴時,無法正常的卸載,但是可以忽略依賴關系,但是不建議。例如你卸載bash時是無法正常卸載的,卸載的時候帶 –-nodeps 參數可以卸載,但是系統重啟后無法啟動,切記不要 –-nodeps卸載軟件。
原創文章,作者:linux_root,如若轉載,請注明出處:http://www.www58058.com/37718