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
(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
當咱們在試圖安裝一個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
忽略依賴關係,安裝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
(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軟件倉庫。