OSWikiHK: 請協力 GPLv3 的中文翻譯工作。
使用 rpm 管理套件
OSWikiHK,自由中文開源知識庫
| 標準文章 | |
|---|---|
| 作者: | Jadedragon, Roy Chan |
| 協力: | - |
| 校對: | - |
| 級別: | 初階 |
| 分享本文: | |
指令 rpm 是管理 RPM 套件管理系統的最簡單命令列前端,可以安裝、更新及移除套件。因為 RPM 早已成為業界最流行的套件管理系統, rpm 都所有使用 RPM 的 distribution (包括 CentOS、Red Hat Linux、Red Hat Enterprise Linux、Fedora Linux、Mandriva Linux、SuSE Linux) 都可以使用。
目录 |
安裝/升級套件 (-i/-U/-F)
要安裝 RPM 套件最簡單可以使用 -i 選項 (長寫為 --install):
rpm -i 套件檔案
和大部份 Unix/Linux 的命令一樣,如果執行命令後沒有顯示任何訊息就表示安裝成功。不過一般人都會再加上 -h (長寫 --hash) 和 -v (長寫 --verbose) 兩個選項以顯示更多訊息和用 "#" 顯示安裝的進度:
# rpm -ihv httpd-0:2.0.54-10.i386.rpm Preparing... ####################################### [100%] 1:httpd ####################################### [100%]
然而,-i 選項只可以安裝一個未安裝在系統的套件。如果套件在系統中已有一個版本,會安裝失敗並出現錯誤訊息。所以不少人喜歡使用 -U 選項 (長寫 --upgrade) 多於 -i 選項。因為這選項兼具安裝和升級的功能。當要安裝的套件未有安裝在系統中,「rpm -U 套件檔」自然會安裝該套件。如果套件在系統中已有一個版本,「rpm -U 套件檔」則會將該套件升級至新的版本:
rpm -Uhv httpd-0:2.0.54-10.i386.rpm
除了 -i 和 -U , 還有一個 -F 選項 (長寫 --freshen) 可以升級套件。 -F 選項只在要安裝的套件在系統已有一個版本的情況下才會升級該套件至新版本。如果系統原先並未沒有安裝該套件,該套件將不會被安裝或升級。這個選項在升級整個系統時特別有用。
例如您的系統只安裝了基本的 OpenOffice.org 套件和 OpenOffice.org 的繁體中文語言套件 openoffice.org-langpack-zh_TW,並沒有安裝 OpenOffice.org 的其他語言套件。而您又把所有最新版本的 OpenOffice.org RPM 套件檔都下載至一個資料夾中,把選用 rpm 指令一次過把系統上的 OpenOffice.org 及相關套件升級。如果您在該資料夾使用命令「rpm -Uhv *.rpm」升級所有套件,就會連一些原本系統並沒有安裝的套件如西班牙語言套件 openoffice-langpack-es 都安裝至系統中。但如果您使用命令「rpm -Fhv *.rpm」,曾只有那些原先系統已安裝了套件才會被升級。
移除套件 (-e)
要移除一個已安裝的套件,可以使用 -e 選項 (長寫 --erase):
rpm -e 套件
留意要移除的套件一定已安裝在系統中,所以 -e 之後只雖寫上套件的名稱,而不是寫上整個套件檔案的名稱,例如:
rpm -e httpd
和大部份 Unix/Linux 的命令一樣,如果執行命令後沒有顯示任何訊息就表示移除成功。
查詢 RPM 資訊 (-q, --query)
顯示已安裝 RPM 套件列表 (-qa, --query --all)
rpm -qa
要在已安裝套件列表中搜尋一些套件,
rpm -qa | egrep -i httpd
顯示 RPM 套件資訊 (-qi, --query --info)
rpm -qi httpd
例如:
rpm -qpi httpd-0:2.0.54-10.i386.rpm
顯示 RPM 套件安裝的檔案列表 (-ql, --query --list)
rpm -ql httpd
$ rpm -ql zip /usr/bin/zip /usr/bin/zipcloak /usr/bin/zipnote /usr/bin/zipsplit /usr/share/doc/zip-2.31 /usr/share/doc/zip-2.31/BUGS /usr/share/doc/zip-2.31/CHANGES /usr/share/doc/zip-2.31/LICENSE /usr/share/doc/zip-2.31/MANUAL /usr/share/doc/zip-2.31/README /usr/share/doc/zip-2.31/TODO /usr/share/doc/zip-2.31/WHATSNEW /usr/share/doc/zip-2.31/WHERE /usr/share/doc/zip-2.31/algorith.txt /usr/share/man/man1/zip.1.gz
rpm -qpl httpd-0:2.0.54-10.i386.rpm
詢問檔案所屬套件的名稱 (qf, --query --file)
rpm -qf /usr/sbin/httpd
檢查已安裝套件中的檔案 (-V, --verify)
rpm -Va
基本使用方法:
- 安裝:
rpm -ivh <path_to_your_rpm_package_file>
- 移除:
rpm -e <name_of_your_package>
- 例出所以已安裝的rpm:
rpm -qa
- 例出rpm包內將會安裝的文件:
rpm -qlp some_program-1.0-1.i386.rpm (未安裝的rpm) 或 rpm -ql some_program (已安裝的rpm) 例子: [root@localhost ~]# rpm -ql zip /usr/bin/zip /usr/bin/zipcloak /usr/bin/zipnote /usr/bin/zipsplit /usr/share/doc/zip-2.31 /usr/share/doc/zip-2.31/BUGS /usr/share/doc/zip-2.31/CHANGES /usr/share/doc/zip-2.31/LICENSE /usr/share/doc/zip-2.31/MANUAL /usr/share/doc/zip-2.31/README /usr/share/doc/zip-2.31/TODO /usr/share/doc/zip-2.31/WHATSNEW /usr/share/doc/zip-2.31/WHERE /usr/share/doc/zip-2.31/algorith.txt /usr/share/man/man1/zip.1.gz
- 查詢該檔安是屬於哪一個rpm封包
rpm -qf path/to/the/file 例子: [root@localhost ~]# rpm -qf /bin/bash bash-3.1-16.1
- 查詢安裝/反安裝時執行的 scripts
rpm -q --scripts package_name
例子: [root@localhost ~]# rpm -q --scripts sysstat postinstall scriptlet (using /bin/sh): /sbin/chkconfig --add sysstat preuninstall scriptlet (using /bin/sh): if [ "$1" = 0 ]; then # Remove sa logs if removing sysstat completely rm -f /var/log/sa/* # Remove service /sbin/chkconfig --del sysstat fi
注意: postinstall scriptlet 是安裝時最後執行, 而 presuninstall scriptlet 是裝除安裝時首先執行。
- 查證(verify) 已安裝的RPM:
rpm -Va ( 所有已安裝的 RPM) rpm -V pam ( 查證其中的一個package - pam ) 例子: [root@localhost ~]# rpm -V pam ....L... c /etc/pam.d/system-auth
例子中的結果, 代表 /etc/pam.d/system-auth 曾經改動。












