rpm程序包管理器的使用詳解
說到程序包管理器,就會想到基于CentOS系統上的rpm命令與其對應的前端處理器yum。所謂程序包,是將源代碼轉換為二進制格式,再組織成一個或者多個包文件供用戶安裝使用。rpm程序包的命名格式如下:
name-VERSION-release.arch.rpm
軟件名-版本號(分為主版本major和次版本minor)-發行版本號.架構型號.rpm后綴。比如:
lib-1.2.7-15.el7.i686.rpm zlib-1.2.7-15.el7.x86_64.rpm zlib-devel-1.2.7-15.el7.i686.rpm zlib-devel-1.2.7-15.el7.x86_64.rpm zlib-static-1.2.7-15.el7.i686.rpm zlib-static-1.2.7-15.el7.x86_64.rpm zsh-5.0.2-14.el7.x86_64.rpm zsh-html-5.0.2-14.el7.x86_64.rpm zziplib-0.13.62-5.el7.i686.rpm zziplib-0.13.62-5.el7.x86_64.rpm zziplib-devel-0.13.62-5.el7.i686.rpm zziplib-devel-0.13.62-5.el7.x86_64.rpm zziplib-utils-0.13.62-5.el7.x86_64.rpm
其中對于一種軟件包分為主包和支包,支包的格式是在名字后面注明功能,比如:zziplib-0.13.62-5.el7.x86_64.rpm 是zziplib的主包
zziplib-devel-0.13.62-5.el7.i686.rpm
zziplib-devel-0.13.62-5.el7.x86_64.rpm
zziplib-utils-0.13.62-5.el7.x86_64.rpm
這三個為zziplib的支包,紅色字體分別代表支包的不同功能。
當我們查找到合法來源程序包并驗證其安全信息后,使用rpm命令就可隨意對其裝、刪、查、改了,下面一一介紹rpm的使用。
一.使用rpm安裝程序包
rpm -ivh /PATH/TO/Package_FILE,是最常用的程序包安裝方法,-i表示install安裝,-v表示安裝的詳細信息,-h表示安裝進度。比如我們安裝光驅上的某個程序包:
[root@localhost ~]# rpm -ivh /media/Packages/zsh-5.0.2-14.el7.x86_64.rpm warning: /media/Packages/zsh-5.0.2-14.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Preparing... ################################# [100%] Updating / installing... 1:zsh-5.0.2-14.el7 ################################# [100%]
安裝zsh5.0.2版本成功。
除此之外還有:
–test:測試安裝,顯示安裝過程,并不真正安裝
–repalcepkgs:重新安裝,重裝。
二.使用rpm升級程序包
升級程序包的安裝使用-U或者-F選項。同樣后面要接新版程序包的完整路徑:
rpm -U或-F /PATH/TO/Package_FILE。其中-U與-F是有區別的。
-U:如果之前沒有這個程序包,那么直接安裝新版程序包,如果有,就更新。所以安裝程序包也可以使用-Uvh。
-F:只有升級的功能,如果之前沒有此程序包,會提醒錯誤信息。
–oldpackage:降級程序包,也就是還原之前版本,當新版本不好用bug多時需要進行還原操作恢復生產。
–force:強制安裝。因為rpm安裝程序包之間有互相依存關系,有時安裝a需要若干b c d程序包,這個選項就將其完全忽略,就是安裝,用不了也裝。
[root@localhost ~]# rpm -Uvh /media/Packages/zsh-5.0.2-14.el7.x86_64.rpm warning: /media/Packages/zsh-5.0.2-14.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Preparing... ################################# [100%] package zsh-5.0.2-14.el7.x86_64 is already installed
使用-U選項,這里提示已經安裝過了。
三.使用rpm卸載程序包
這個很好理解,就是卸載,不同的是安裝和升級都要提供完整路徑,而卸載只需要提供程序包名稱即可。使用-e選項:
[root@localhost ~]# rpm -e zsh [root@localhost ~]# rpm -q zsh package zsh is not installed
將剛才安裝的zsh程序包卸載,-q選項是查詢,下面會講。
四.使用rpm進行程序包查詢
這個是很重要的命令選項,今后會常常使用,為-q選項。其后面可以跟上其他的查詢選項,所以完整格式為:rpm -q [select-options] [query-options]。
select-options:
-a:查詢所有安裝的包 rpm -qa,查找一系列的包文件常常使用rpm -qa | grep “###”的格式。比如:
[root@localhost ~]# rpm -qa | grep "^bash" bash-4.2.46-19.el7.x86_64 bash-completion-2.1-6.el7.noarch
查找安裝的bash程序包。
-f file:查詢指定的文件由那個程序包生成。這個太有用了,用來查找文件來源:
[root@localhost ~]# rpm -qf /etc/passwd setup-2.8.71-6.el7.noarch
由此可見/etc/passwd文件由setup-2.8.71-6.e17.noarch這個程序包生成。
-p Package_file:用于對未安裝的程序包執行查詢操作。比如:
[root@localhost ~]# rpm -qp /media/Packages/lohit-tamil-fonts-2.5.3-2.el7.noarch.rpm warning: /media/Packages/lohit-tamil-fonts-2.5.3-2.el7.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY lohit-tamil-fonts-2.5.3-2.el7.noarch
查到了未安裝的程序包信息。
query-options:
–changelog:查詢rpm包的歷史。后接程序包名稱。舉例:
[root@localhost ~]# rpm -q --changelog tree * Fri Jan 24 2014 Daniel Mach <dmach@redhat.com> - 1.6.0-10 - Mass rebuild 2014-01-24 * Fri Dec 27 2013 Daniel Mach <dmach@redhat.com> - 1.6.0-9 - Mass rebuild 2013-12-27 ... ... * Mon Oct 20 1997 Otto Hammersmith <otto@redhat.com> - updated version - fixed src url * Fri Jul 18 1997 Erik Troan <ewt@redhat.com> - built against glibc
顯示的是此程序包的歷史發展。
-l:列出程序包生成的所有文件。這個也非常有用。就不舉例了
-i:程序包的相關信息,包括版本號,發行號,大小,安裝日期..等等一堆
-c:查詢程序包的所有配置文件
-d:查詢程序包提供的文檔
五.使用rpm校驗程序包
我們可以使用rpm -V命令校驗程序包,舉例:
[root@localhost media]# rpm -qc bash /etc/skel/.bash_logout /etc/skel/.bash_profile /etc/skel/.bashrc [root@localhost media]# vim /etc/skel/.bash .bash_logout .bash_profile .bashrc [root@localhost media]# vim /etc/skel/.bashrc [root@localhost media]# rpm -V bash S.5....T. c /etc/skel/.bashrc
這里我查找了bash的配置文件并對/etc/skel/.bashrc修改多加了一個空行,這時校驗bash就如上所示得到結果。
如果校驗的文件有變動,結果一共有9項校驗項目,使用8個字母來表示,從前往后依次含義為:
S:文件大小更改了
M:表示權限更改了
5:表示MD5檢查和 ?????
D:表示主從設備號更改
L:表示符號鏈接文件更改
U:文件屬主更改
G:文件屬組更改
T:文件最后修改時間更改
所以上例結果表示為:/etc/skel/.bashrc 文件大小、MD5檢查和、最后修改時間被更改。
原創文章,作者:mcgeewang,如若轉載,請注明出處:http://www.www58058.com/38426
rpm包管理器對的選項是比較多的,我們只需要對rpm包的查詢語句熟練掌握就很好了。希望下來多加練習