使用RPM包管理工具
1、RPM簡介
PRM:RedHat Package Manager,因為這個RPM格式的關鍵包格式是由Red Hat公司首先提出並使用的,後得到廣泛使用。它建立統一的數據庫文件,詳細記錄軟件包安裝、卸載等變化信息,能夠自動分析軟件包依賴關系。
RPM包的一般格式為:bash-3.1-16.1.i386.rpm(軟件名稱,版本號,發布次數,硬件平台,擴展名)
當然這個格式不固定,因為有時候可能還會加上所適用的操作系統信息,如:wget-1.10.2-7.el5.i386.rpm
2、使用RPM包管理命令
RPM命令的主要功能是:
(1). 查詢RPM軟件、包文件的相關信息
查詢已安裝的RPM軟件信息:rpm -q[子選項] [軟件名]
查詢文件/目錄屬於哪個RPM軟件 :rpm -qf 文件/目錄名
(備注:使用“-q”選項時實際上調用了“/usr/bin/rpmquery”程序完成查詢工作,對於“-qa”查詢選項,命令參數(即軟件包名)是非必須的;一般查詢時,軟件名不需要指定版本號)
[root@localhost ~]# rpm -q bash ==>查詢是否已安裝有bash軟件包 bash-3.1-16.1 [root@localhost ~]# rpm -qa | grep bash bash-3.1-16.1 [root@localhost ~]# rpm -qf /usr/bin/vim ==>查詢vim是由哪個軟件包安裝的 vim-enhanced-7.0.109-3 [root@localhost ~]# rpm -ql dhcp ==>查詢dhcp軟件包安裝的文件列表 /etc/dhcpd.conf /etc/rc.d/init.d/dhcpd ……
查詢未安裝的RPM軟件包文件:rpm -qp[子選項] [RPM包文件]
用法:結合不同的子選項 完成不同查詢
-qpi:通過.rpm包文件查看該軟件的詳細信息
-qpl:查看.rpm安裝包內所包含的目錄、文件列表
-qpc:查看.rpm安裝包內包含的配置文件列表
-qpd:查看.rpm安裝包內包含的文檔文件列表
[root@localhost Server]# rpm -qpl lynx-2.8.5-28.1.i386.rpm /etc/lynx-site.cfg /etc/lynx.cfg …… ==>查詢lynx安裝包中的文件列表
(2). 安裝、升級、卸載RPM軟件包
安裝或升級RPM軟件:rpm [選項] [RPM包文件]...
用法:不同選項適用於不同情況
-i:安裝一個新的rpm軟件包
-U:升級某個rpm軟件,若原本未裝,則進行安裝
-F:更新某個rpm軟件,若原本未裝,則放棄安裝
卸載指定的RPM軟件:rpm -e 軟件名 (備注:卸載軟件時只需要指定軟件名即可,無需指定版本號)輔助選項簡單介紹:
--force:強制安裝所指定的rpm軟件包
--nodeps:安裝、升級或卸載軟件時,忽略依賴關系
-h:以“#”號顯示安裝的進度
-v:顯示安裝過程中的詳細信息
(備注:--force 輔助選項主要應用於以下兩種情況:
1)缺失某個軟件包的文件時,需要進行覆蓋安裝以找回丟失文件
2)安裝一個比現有軟件版本陳舊的軟件包(多為測試用途)
當安裝、卸載軟件包時,提示缺少依賴包無法進行時,如果仍要繼續執行,應結合 --nodeps 選項而不 是 --force 選項)
[root@localhost ~]# rpm -ivh lynx-2.8.5-28.1.i386.rpm ==>安裝一個新的RPM包 warning: lynx-2.8.5-28.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186 Preparing... ########################################### [100%] 1:lynx ########################################### [100%] ==>安裝lynx軟件包同事顯示安裝進度 [root@localhost ~]# rpm -q lynx lynx-2.8.5-28.1 [root@localhost ~]# rpm -e lynx ==>卸載lynx軟件包 [root@localhost ~]# rpm -q lynx package lynx is not installed
(備注:“warning:……NOKEY……”的警告信息是由於沒有導入RedHat提供的公鑰所致,但並不影響安裝效果,可以忽略,如果需要導入公鑰文件,可以參考如下步驟(以後從RHEL5光盤中安裝軟件時,就不會再出現警告提示了):[root@localhost ~]# cd /media/cdrom
[root@localhost cdrom]# rpm --import RPM-GPG-KEY-redhat-release)
[root@localhost ~]# rpm -i wget-1.10.2-3.2.1.i386.rpm [root@localhost ~]# rpm -q wget wget-1.10.2-3.2.1 [root@mail ~]# rpm -Uvh /media/cdrom/wget-1.10.2-7.el5.i386.rpm ==>升級wget軟件包 warning: /media/cdrom/wget-1.10.2-7.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186 Preparing... ########################################### [100%] 1:wget ########################################### [100%] [root@localhost ~]# rpm -q wget wget-1.10.2-7.el5
(備注:在系統中不存在被升級的軟件包時,升級命令的功能等同於安裝命令)
解決軟件包依賴關系:
1)、安裝有依賴關系的多個軟件時
被依賴的軟件包需要先安裝
同時指定多個.rpm包文件進行安裝
(備注:如果需要同時安裝相互依賴的數十個.rpm軟件包,可以結合Shell通配符“*”同時指定這些文件作為參數)
2)、卸載有依賴關系的多個軟件時
依賴其他程序的軟件包需要先卸載
同時指定多個軟件名進行卸載
3)、忽略依賴關系
結合“--nodeps”選項,但可能導致軟件異常
(3). 維護RPM數據庫信息
當RPM數據庫損壞時,需要進行數據庫重建:rpm --rebuilddb 或者rpm --initdb