rpm程序包的管理(2)

Centos系統rpm命令的運用node

   rpm命令的運用分別從rpm包的安裝、升級、卸載、查詢、校驗來簡單的介紹rpm命令的使用。nginx



方式 選項 選項介紹
安裝 -i 安裝新包,其後跟的是包文件
-v 輸出包安裝過程,其後跟的是包文件
-h 以「#」進度顯示包的安裝過程,其後跟的是包文件
--nodeps 安裝時忽略包的依賴關係,其後跟的是包文件,此選項可使用如下的升級、卸載
--replacepkgs 從新安裝且覆蓋原有包所安裝的文件,其後跟的是包文件
--test 測試安裝,可用查看包之間的依賴關係或衝突報告等。此選項可使用如下的升級、卸載
--force 強制安裝,不論當前程序是版本,都使用此包進行安裝,其後跟的是包文件
升級 -U|--upgrade 升級或安裝,如此前已安裝有相應的舊版本的包並升級直現有包的版本,如沒有安裝,則進行安裝操做,其後跟的是包文件
-F|--freshen 純升級操做,若是沒有安裝舊版本的程序,此選項是不會安裝新版本的,只有舊版本存在纔會進行升級操做,其後跟的是包文件
卸載 -e 卸載跟在選項其後的包名程序,其後跟的是包名
--allmatches 若是一個程序包同時安裝多個版本,則此選項一次所有卸載;其後跟的是包名
查詢 -q 查詢某包或某些包是否安裝,其後跟的是包名
-qa 查詢當前系統上全部安裝的包程序
-qf 查詢某文件是由哪一個包安裝時所產生的,其後跟的是一個文件路徑
-qi 查詢某包的簡要說明信息,其後跟的是包名
-ql 查詢某包所產生的文件列表,其後跟的是包名
-qc 查詢某包安裝完成後產生的配置文件,其後跟的是包名
-qd 查詢某包安裝完成後產生的幫助文件,其後跟的是包名
-q--changelog 查看某包製做時隨着版本的變化的全部變化信息,其後跟的是包名
-q--provides 查詢某包提供的capabilities,其後跟的是包名
-q --requires 查詢包中的依賴關係,其後跟的是包名
-q--scripts 查詢某包安裝或卸載時所執行的腳本;,其後跟的是包名
-p [options] 查詢未安裝包的以上信息,[options]除了-q-qa外其全部查詢選項均可以使用,,其後跟的是包文件
檢驗 -V|--verify 查詢包安裝以後所生成的文件是否發生了改變,其後跟的是一個包名
--import 導入驗證文件,其後跟的一個驗證文件
-K|--checksig 驗證程序包的完整性,其後跟的是包文件

提示:web

  包文件指的是一個擁有完整的包命令格式的文件,如:nginx-1.6.2-1.el6.ngx.x86_64.rpmshell

         包名指的是當一個包文件被安裝後,其包的程序名,如:nginx



rpm命令實戰:apache

(1)程序包的安裝「-i」選項,如安裝nginxcentos

wKioL1UpLIehBVXMAAY1dOSJBYo701.bmp

(2)程序包的安裝「-ivh」選項,如安裝tree命令安全

[root@Bisc-lab01 ~]# rpm -ivhtree-1.5.3-2.el6.x86_64.rpm 
warning: tree-1.5.3-2.el6.x86_64.rpm:Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY
Preparing...              ########################################### [100%]
   1:tree                 ########################################### [100%]

提示:你能夠試試-ivvh選項,你將會能看到更詳細的安裝過程。bash


(3)忽略安裝時所產生的依賴關係ide

wKioL1UpLTzhDMi_AARPoHqeHhY946.bmp

  當咱們在試圖安裝一個zabbix-web的程序包時,在安裝過程提示錯誤:安裝失敗,此時會列出此程序包所需依賴關係,安裝過程將停止。有些程序包在依賴包關係上會顯示出所依賴的程序包,而有些只會提示你它所依賴的庫文件,這就須要查看此程序包所依賴的是什麼庫文件,並安裝此庫文件程序後在安裝相應的程序包。post

[root@Bisc-lab01 Packages]#rpm -ivh --test tk-8.5.7-5.el6.x86_64.rpm
warning:tk-8.5.7-5.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID c105b9de:NOKEY
error: Failed dependencies:
    libtcl8.5.so()(64bit) is needed by tk-1:8.5.7-5.el6.x86_64
    tcl = 1:8.5.7 is needed by tk-1:8.5.7-5.el6.x86_64

wKioL1UpOP2BztJDAAKjcFSo2s8148.bmp

  忽略依賴關係,安裝zabbix-web程序,忽略依賴能程序能安裝成功,但未必能成功的運行。有些程序所依賴的有關係是能夠忽略的,如缺乏某個文件等。

[root@Bisc-lab01 ~]# rpm -ivh--nodeps zabbix-web-2.4.0-1.el6.noarch.rpm 
warning:zabbix-web-2.4.0-1.el6.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID79ea5ed4: NOKEY
Preparing...                   ###########################################[100%]
   1:zabbix-web          ###########################################[100%]

 

(4)查詢zabbix-web程序是否安裝成功

[root@Bisc-lab01 Packages]#rpm -q zabbix-web
zabbix-web-2.4.0-1.el6.noarch
[root@Bisc-lab01 Packages]#rpm -q zabbix-web
package zabbix-web is notinstalled

wKiom1UpN_PzrHAJAAOzLPxfUt8080.bmp

5)升級程序ntp程序包

[root@Bisc-lab01 ~]# rpm -qntp                          #查詢程序包ntp並無安裝
package ntp is not installed
[root@Bisc-lab01 ~]# rpm -Fntp-4.2.4p8-3.el6.centos.x86_64.rpm  #進行純升級操做
warning: ntp-4.2.4p8-3.el6.centos.x86_64.rpm:Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
[root@Bisc-lab01 ~]# rpm -qntp                          #純升級完成後,發現程序包並無安裝
package ntp is not installed

#小結:

  當程序在進行純升級操做時,若是原程序沒有進行安裝過,在純升級時並不會安裝程序包。因此純升級只有在原程序包已經安裝在系統中,才能進行純升級操做,升級纔能有效。

6)升級或安裝程序包

  ntp程序存在時進行升級操做:

[root@Bisc-lab01 ~]# rpm -qntp                                  #查詢ntp程序包是否安裝
ntp-4.2.4p8-3.el6.centos.x86_64
[root@Bisc-lab01 ~]# rpm -Untp-4.2.6p5-1.el6.centos.x86_64.rpm     #進行升級操做
warning:ntp-4.2.6p5-1.el6.centos.x86_64.rpm: Header V3 RSA/SHA1 Signature, key IDc105b9de: NOKEY
 [root@Bisc-lab01 ~]# rpm -q ntp                              #查詢ntp程序包,已經升級成功
ntp-4.2.6p5-1.el6.centos.x86_64


 ntp程序不存在是進行升級操做:

[root@Bisc-lab01 ~]# rpm -e--nodeps  ntp   #卸載ntp包來模擬包未安裝
[root@Bisc-lab01 ~]# rpm -qntp            #查詢包的是否安裝,顯示未安裝
package ntp is not installed
[root@Bisc-lab01 ~]# rpm -Untp-4.2.6p5-1.el6.centos.x86_64.rpm #進行升級ntp程序包
warning:ntp-4.2.6p5-1.el6.centos.x86_64.rpm: Header V3 RSA/SHA1 Signature, key IDc105b9de: NOKEY
[root@Bisc-lab01 ~]# rpm -qntp            #查詢ntp包已經安裝並是升級的版本
ntp-4.2.6p5-1.el6.centos.x86_64

#小結:

   當使用「-U」選項時,若是程序不存在,程序包會被安裝,此時還會忽略依賴關係進行升級安裝;程序包存在時,會自動升級至指定的程序包的版本,並忽略依賴關係。

7)查詢ntp程序包的詳細說明信息;

[root@Bisc-lab01 ~]# rpm -qi bash
Name        : bash                         Relocations: (not relocatable)
Version     : 4.1.2                             Vendor: CentOS
Release     : 29.el6                        Build Date: Thu 16 Oct 2014 09:58:35 PM CST
Install Date: Mon 23 Mar 2015 06:03:29 PM CST      Build Host: c6b8.bsys.dev.centos.org
Group       : System Environment/Shells     Source RPM: bash-4.1.2-29.el6.src.rpm
Size        : 3140846                          License: GPLv3+
Signature   : RSA/SHA1, Sat 18 Oct 2014 04:03:01 AM CST, 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.


#以上選項說明:

#Name:包名                        #Relocations: 是否被從新定義到另的位置

#Version:版本號                     #Vendor:製做商或提供商

#Release:發行號                     #BuildDate:編譯時間,包的構造時間

#Install Date:安裝時間                #BuildHost:編譯時所在的主機

#Group:在Centos和REHL上是分組的,包屬於的組/子組          #SourceRPM:源碼格式的RPM包

#Size:包的大小                                #License:包的許可

#Signature:包的簽名信息,與包的安全相關

#Packager:包的製做者

#URL:包的源代碼程序的獲取方式

#Summary:簡要說明

#Description:較詳細的說明信息

8)查詢某文件是由哪一個程序包所產生的

[root@Bisc-lab01 ~]# rpm -qf/etc/passwd
setup-2.8.14-20.el6_4.1.noarch

9)查詢某包所依賴關係

[root@Bisc-lab01 ~]# rpm -q--requires tree
libc.so.6()(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

10)查詢某包安裝或卸載時所執行的腳本

[root@Bisc-lab01 ~]# rpm -q--scripts httpd
preinstall scriptlet (using/bin/sh):       #安裝前要所執行的腳本
# Add the "apache"user
getent group apache>/dev/null || groupadd -g 48 -r apache
getent passwd apache >/dev/null|| \
  useradd -r -u 48 -g apache -s /sbin/nologin \
    -d /var/www -c "Apache" apache
exit 0
postinstall scriptlet (using/bin/sh):      #安裝完所執行的腳本
# Register the httpd service
/sbin/chkconfig --add httpd
/sbin/chkconfig --addhtcacheclean
preuninstall scriptlet (using/bin/sh):     #卸載前所執行的腳本
if [ $1 = 0 ]; then
    /sbin/service httpd stop > /dev/null 2>&1
    /sbin/chkconfig --del httpd
    /sbin/service htcacheclean stop > /dev/null 2>&1
    /sbin/chkconfig --del htcacheclean
fi
posttrans scriptlet (using/bin/sh):        #卸載完所要執行的腳本
test -f/etc/sysconfig/httpd-disable-posttrans || \
 /sbin/service httpd condrestart >/dev/null2>&1 || :

11)查詢某包安裝後生成的文件是否有變更

  當你安裝一個些程序後,通過一段時間你發生系統最近有被人動過的跡象,如何查看某程序下的文件是否有變更,使用rpm命令的「-V」選項就能夠查出。

[root@Bisc-lab01 ~]# rpm -Vhttpd
S.5....T.  c /etc/httpd/conf/httpd.conf

#若是文件有改變相應位會以相位的字母或數字來表示:

 S file Size differs                 

 M Mode differs (includes permissions and filetype)

 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 mTime differs 

 P caPabilities differ

12)驗證光盤中程序包的來源及完整性

[root@Bisc-lab01 ~]# mount -r/dev/cdrom /media/cdrom/          #掛載光盤
[root@Bisc-lab01 ~]# cd/media/cdrom/                    #切換着剛纔掛載目錄
[root@Bisc-lab01 cdrom]# rpm--import RPM-GPG-KEY-CentOS-6        #倒入驗證碼
[root@Bisc-lab01 cdrom]# rpm-K  Packages/tree-1.5.3-2.el6.x86_64.rpm #驗證包文件,顯示OK
Packages/tree-1.5.3-2.el6.x86_64.rpm:rsa sha1 (md5) pgp md5 OK

小結:

  對於程序包的管理,說簡單又不簡單,說複雜也不復雜,對於以上的命令選項,在使用中結給你帶來很你想不到的意外驚喜,以上的選項均可以經過man命令來獲取,要善於使用幫助信息來給你提供相應的幫助。對於程序包的依賴關係,可使用yum命令來解決一個程序在安裝過程當中所依賴的關係,請看下一篇博文,關於yum命令的使用,及創建屬於本身的yum軟件倉庫。

相關文章
相關標籤/搜索