您好,登錄后才能下訂單哦!
RPM命令簡介:
RPM 全名是『 RedHat Package Manager 』簡稱則為 RPM。RPM 是以一種數據庫記錄的方式來將你所需要的套件安裝到你的 Linux 主機的一套管理程序。
1.命令格式:
rpm [選項][文件]
2.命令功能:
RPM最大的特點就是將您要安裝的套件先編譯且打包好了,透過包裝好的套件里頭預設的數據庫記錄, 記錄這個套件要安裝的時候必須要的相依屬性模塊(Linux主機需要預先存在的幾個必須的套件),當安裝時RPM會先依照套件里頭的紀錄數據查詢Linux主機的相依屬性套件是否滿足,若滿足則予以安裝,若不滿足則不予安裝。那么安裝的時候就將該套件的信息整個寫入RPM的數據庫中,以便未來的查詢、驗證與反安裝!
這樣的優點是:
a. 由于已經編譯完成并且打包完畢,所以安裝上很方便( 不需要再重新編譯 );
b. 由于套件的信息都已經記錄在 Linux 主機的數據庫上,很方便查詢、升級與反安裝;
缺點是:
a. 安裝的環境必須與打包時的環境需求一致或相當;;
b. 需要滿足套件的相依屬性需求;
c. 反安裝時需要特別小心,最底層的套件不可先移除,否則可能造成整個系統的問題!
3.命令參數:
3.1.RPM 安裝包
rpm -i /PATH/TO/PACKAGE_FILE
-h: 以#顯示進度;每個#表示2%;
-v: 顯示詳細過程
-vv: 更詳細的過程
rpm -ivh /PATH/TO/PACKAGE_FILE
--nodeps: 忽略依賴關系;
--replacepkgs: 重新安裝,替換原有安裝;
--force: 強行安裝,可以實現重裝或降級,為--replacefiles與--replacepkgs的綜合體
--test :測試安裝該軟件,可找出是否有屬性相依的問題。
eg1: rpm -ivh pkgname.i386.rpm --test
--replacefiles: 安裝的過程當中出現了『某個文件已經被安裝在你的系統上面』的資訊,或出現版本不合的信息(confilcting files) 時,可以使用這個參數來直接覆蓋文件。
危險性:覆蓋的動作是無法復原的!否則會欲哭無淚!
[root@localhost]~# rpm -ivh zsh-4.2.6-3.el5.x86_64.rpm
rpm -ivh zsh-4.2.6-3.el5.x86_64.rpm
warning: zsh-4.2.6-3.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
package zsh-4.2.6-3.el5.x86_64 is already installed
[root@localhost]~# 網絡安裝某個文件
[root@localhost]~# rpm -ivh http://website.name/path/pkgname.rpm
3.2.RPM 查詢包
在查詢的部分,所有的參數之前都需要加上 -q 才是所謂的查詢!
查詢主要分為兩部分,一個是查已安裝,另一個則是查某個 rpm 檔案內容。
參數:
-q :僅查詢(query),后面接的套件名稱是否有安裝;
-qa :列出所有的(all),已經安裝在本機 Linux 系統上面的所有套件名稱;
-qi :列出該套件的詳細信息 (information),包含開發商、版本與說明等;
-ql :列出該套件所有的檔案與目錄所在完整文件名 (list);
-qc :列出該套件的配置文件 (找出在 /etc/ 底下的檔名而已)
-qd:列出該套件的所有說明檔 (找出與 man 有關的檔案document)
-qR :列出與該套件有關的相依套件所含的檔案 (Required)
-qf :由后面接的文件名稱(file),找出該檔案屬于哪一個已安裝的套件;
rpm -q --scripts PACKAGE_NAME: 查詢指定包中包含的腳本(scripts);
-qp[i|c|d|l|R]:未安裝時,查詢RPM檔案內將含有的信息(Package)
注意 -qp 后面接的所有參數與上面的說明一致。
但用途僅在于找出RPM檔案內的信息,而非已安裝的套件信息!
[root@localhost]/media/Server# rpm -qi bash
Name : bash Relocations: (not relocatable)
Version : 3.2 Vendor: Red Hat, Inc.
Release : 24.el5 Build Date: Tue 21 Oct 2008 08:15:56 PM CST
Install Date: Thu 17 Apr 2014 11:41:58 AM CST Build Host: hs20-bc1-5.build.redhat.com
Group : System Environment/Shells Source RPM: bash-3.2-24.el5.src.rpm
Size : 5388767 License: GPLv2+
Signature : DSA/SHA1, Mon 08 Dec 2008 08:25:44 PM CST, Key ID 5326810137017186
Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
URL : http://www.gnu.org/software/bash
Summary : The GNU Bourne Again shell (bash) version 3.1.
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. This
package (bash) contains bash version 3.1, which improves POSIX
compliance over previous versions.
[root@localhost]/media/Server# rpm -ql bash
/bin/bash
/bin/sh
/etc/skel/.bash_logout
/etc/skel/.bash_profile
/etc/skel/.bashrc
/usr/bin/bashbug-64
...
[root@localhost]/media/Server# rpm -qf /bin/ls
coreutils-5.97-23.el5
[root@localhost]/media/Server# rpm -q --scripts zsh
postinstall scriptlet (using /bin/sh): 安裝后要執行的程式
if [ ! -f /etc/shells ] ; then
echo "/bin/zsh" > /etc/shells
else
grep -q "^/bin/zsh$" /etc/shells || echo "/bin/zsh" >> /etc/shells
fi
/sbin/install-info /usr/share/info/zsh.info.gz /usr/share/info/dir \
--entry="* zsh: (zsh). An enhanced bourne shell."
preuninstall scriptlet (using /bin/sh):卸載前要執行的程式
if [ "$1" = 0 ] ; then
/sbin/install-info --delete /usr/share/info/zsh.info.gz /usr/share/info/dir \
--entry="* zsh: (zsh). An enhanced bourne shell."
fi
postuninstall scriptlet (using /bin/sh):卸載后要執行的程式
if [ "$1" = 0 ] ; then
if [ -f /etc/shells ] ; then
TmpFile=`/bin/mktemp /tmp/.zshrpmXXXXXX`
grep -v '^/bin/zsh$' /etc/shells > $TmpFile
cp -f $TmpFile /etc/shells
rm -f $TmpFile
chmod 644 /etc/shells
fi
fi
3.3.RPM 升級包
rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE: 如果裝有老版本的,則升級;否則,則安裝;
-Uvh --oldpackage: 降級
rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE:如果裝有老版本的,則升級;否則,退出;
3.4.RPM 校驗
參數:
-V :后面加的是套件名稱,若該套件所含的檔案被更動過,才會列出來;
-Va :列出目前系統上面所有可能被更動過的檔案;
-Vp :后面加的是文件名稱,列出該套件內可能被更動過的檔案;
-Vf :列出某個檔案(file)是否被更動過~
[root@linux ~]# rpm -Va
[root@linux ~]# rpm -V 已安裝的套件名稱
[root@linux ~]# rpm -Vp 某個 RPM 檔案的檔名
[root@linux ~]# rpm -Vf 在系統上面的某個檔案
3.5.RPM 卸載包
[root@linux ~]# rpm -e logrotate <==卸載套件,無信息反饋即OK
[root@linux ~]# rpm --rebuilddb <==重建數據庫
3.6.RPMBUILD 安裝包
--rebuild
這個參數會將后面的 SRPM 進行『編譯』與『打包』的動作,最后會產生 RPM 的檔案,但是產生的 RPM 檔案并沒有安裝到系統上。
--recompile
這個動作會直接的『編譯』『打包』并且『安裝』啰!請注意, rebuild 僅『編譯并打包』而已,而 recompile 不但進行編譯跟打包,還同時進行『安裝』了!
3.7.重建數據庫
rpm
--rebuilddb: 重建數據庫,一定會重新建立;
--initdb:初始化數據庫,沒有才建立,有就不用建立;
[root@localhost ~]# ls /var/lib/rpm 鎖文件
Basenames __db.001 Dirnames Installtid Providename Requirename Sigmd5
Conflictname __db.002 Filemd5s Name Provideversion Requireversion Triggername
__db.000 __db.003 Group Packages Pubkeys Sha1header
3.8.檢驗來源合法性,及軟件包完整性 ( rpm -K 英文:check)
加密類型:
對稱:加密解密使用同一個密鑰
公鑰:一對兒密鑰,公鑰,私鑰;公鑰隱含于私鑰中,可以提取出來,并公開出去;
單向:
# ls /etc/pki/rpm-gpg/
RPM-GPG-KEY-redhat-release
rpm -K /PAPT/TO/PACKAGE_FILE
dsa, gpg: 驗正來源合法性,也即驗正簽名;可以使用--nosignature,略過此項
sha1, md5: 驗正軟件包完整性;可以使用--nodigest,略過此項
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release: 導入密鑰文件
[root@localhost ~]# rpm -K zsh-4.2.6-3.el5.x86_64.rpm
zsh-4.2.6-3.el5.x86_64.rpm: (SHA1) DSA sha1 md5 (GPG) NOT OK (MISSING KEYS: GPG#37017186)
[root@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[root@localhost ~]# rpm -K zsh-4.2.6-3.el5.x86_64.rpm
zsh-4.2.6-3.el5.x86_64.rpm: (sha1) dsa sha1 md5 gpg OK
[root@localhost ~]# rpm -K --nodigest zsh-4.2.6-3.el5.x86_64.rpm
zsh-4.2.6-3.el5.x86_64.rpm: (sha1) dsa gpg OK
---end---
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。