Rpm - Linux命令 - UNIX命令

Linux / Unix命令 :rpm

名稱

rpm - RPM軟件包管理器

概要

查詢和驗證包裹:

rpm { -q | --query } [ select-options ] [ query-options ]

rpm { -V | --verify } [ select-options ] [ verify-options ]

rpm --import PUBKEY ...

rpm { -K | --checksig } [ --nosignature ] [ --nodigest ]
PACKAGE_FILE ...

安裝,升級和刪除軟件包:

rpm { -i | --install } [ install-options ] PACKAGE_FILE ...

rpm { -U | --upgrade } [ install-options ] PACKAGE_FILE ...

rpm { -F | --freshen } [ install-options ] PACKAGE_FILE ...

rpm { -e | --erase } [ --allmatches ] [ --nodeps ] [ --noscripts ]
[ --notriggers ] [ --repackage ] [ --test ] PACKAGE_NAME ...

雜:

rpm { --initdb | --rebuilddb }

rpm { --addsign | --resign } PACKAGE_FILE ...

rpm { --querytags | --showrc }

rpm { --setperms | --setugids } PACKAGE_NAME ...

選擇選項


[ PACKAGE_NAME ] [ -a, - all ] [ -f, - 文件 文件 ]
[ -g, - group GROUP ] { -p, - package PACKAGE_FILE ]
[ --fileid MD5 ] [ --hdrid SHA1 ] [ --pkgid MD5 ] [ --tid TID ]
[ --querybynumber HDRNUM ] [ - PACKAGE_NAME ]
[ - 提供 能力 ] [ - 需要 能力 ]

查詢選項


[ --changelog ] [ -c, - configfiles ] [ -d, - docfiles ] [ --dump ]
[ --filesbypkg ] [ -i, - info ] [ --last ] [ -l, - list ]
[ - 提供 ] [ --qf, - queryformat QUERYFMT ]
[ -R, - requires ] [ --scripts ] [ -s, - state ]
[ - 觸發器, - triggerscripts ]

驗證選項


[ --nodeps ] [ --nofiles ] [ --noscripts ]
[ --nodigest ] [ --nosignature ]
[ --nolinkto ] [ --nomd5 ] [ --nosize ] [ --nouser ]
[ --nogroup ] [ --nomtime ] [ --nomode ] [ --nordev ]

安裝選項


[ --aid ] [ --allfiles ] [ --badreloc ] [ --excludepath OLDPATH ]
[ --excludedocs ] [ --force ] [ -h, - hash ]
[ - 禁用 ] [ - 禁用 ] [ - 禁用 ]
[ --includedocs ] [ --justdb ] [ --nodeps ]
[ --nodigest ] [ --nosignature ] [ --nosuggest ]
[ - 註冊] [ --noscripts ] [ --notriggers ]
[ --oldpackage ] [ --percent ] [ --prefix NEWPATH ]
[ --relocate OLDPATH = NEWPATH ]
[ --repackage ] [ --replacefiles ] [ --replacepkgs ]
[ --test ]

描述

rpm是一個功能強大的軟件包管理器 ,可用於構建,安裝,查詢,驗證,更新和擦除單個軟件包。 一個軟件包包含用於安裝和清除存檔文件的文件和元數據的存檔。 元數據包括幫助程序腳本,文件屬性和關於軟件包的描述性信息。 軟件包有兩種:二進制軟件包,用於封裝要安裝的軟件;源代碼軟件包,包含生成二進制軟件包所需的源代碼和配方。

必須選擇以下基本模式之一: 查詢驗證簽名檢查安裝/升級/清新卸載初始化數據庫重建數據庫辭職添加簽名設置所有者/組顯示查詢標籤顯示配置

常規選項

這些選項可以用於所有不同的模式。

-?, - 幫幫我

然後正常打印更長的使用信息。

- 版

打印一個包含正在使用的rpm版本號的行。

- 安靜

盡可能少地打印 - 通常只會顯示錯誤信息。

-v

打印詳細信息 - 通常會顯示常規進度消息。

-vv

打印大量醜陋的調試信息。

--rcfile FILELIST

每個以冒號分隔的FILELIST中的文件都按rpm讀取配置信息。 只有列表中的第一個文件必須存在,並且代字號將被擴展為$ HOME的值。 默認的FILELIST/ usr / lib / rpm / rpmrc/ usr / lib / rpm / redhat / rpmrc〜/ .rpmrc

- 管 CMD

rpm的輸出傳送到命令CMD

--dbpath 目錄

使用DIRECTORY中的數據庫比默認路徑/ var / lib / rpm更快

- 根 目錄

所有操作都使用以DIRECTORY為根的文件系統樹。 請注意,這意味著DIRECTORY中的數據庫將用於依賴性檢查,並且任何scriptlet(例如安裝後的%post ,如果是構建包,則為%prep )將在到目錄的chroot(2)之後運行。

安裝和升級選項

rpm安裝命令的一般形式是

rpm { -i | --install } [ install-options ] PACKAGE_FILE ...

這將安裝一個新的軟件包。

rpm升級命令的一般形式是

rpm { -U | --upgrade } [ install-options ] PACKAGE_FILE ...

這會升級或安裝當前安裝到新版本的軟件包。 這與安裝相同,只是在安裝新軟件包後刪除了所有其他版本的軟件包。

rpm { -F | --freshen } [ install-options ] PACKAGE_FILE ...

這將升級軟件包,但僅限於當前存在早期版本。 PACKAGE_FILE可能被指定為ftphttp URL ,在這種情況下,軟件包將在安裝之前下載。 有關rpm的內部ftphttp客戶端支持的信息,請參閱FTP / HTTP選項

- 援助

在需要時將建議的軟件包添加到事務集。

- 全部文件

安裝或升級軟件包中的所有missingok文件,無論它們是否存在。

--badreloc

--relocate一起使用 ,允許在所有文件路徑上進行重定位,而不僅僅是包含在二進制包重定位提示中的OLDPATH

- 排除路徑OLDPATH

不要安裝名稱以OLDPATH開頭的文件。

--excludedocs

不要安裝任何標記為文檔的文件(其中包括手冊頁和texinfo文檔)。

- 力

與使用--replacepkgs--replacefiles--oldpackage相同

-h,--hash

在軟件包歸檔文件解壓縮時打印50個哈希標記。 與-v | --verbose一起使用以獲得更好的顯示效果。

--ignoresize

在安裝此軟件包之前,請勿檢查安裝文件系統是否有足夠的磁盤空間

--ignorearch

即使二進制包和主機的體系結構不匹配,也允許安裝或升級。

--ignoreos

即使二進制包和主機的操作系統不匹配,也允許安裝或升級。

--includedocs

安裝文檔文件。 這是默認行為。

--justdb

只更新數據庫,不更新文件系統。

--nodigest

閱讀時不要驗證包或標題摘要。

--nosignature

閱讀時不要驗證包或標頭簽名。

--nodeps

在安裝或升級軟件包之前不要執行依賴關係檢查。

--nosuggest

不要建議提供缺失依賴的軟件包。

--noorder

不要重新安排軟件包的順序。 軟件包列表通常會被重新排序以滿足依賴關係。

--noscripts

--nopre

--nopost

--nopreun

--nopostun

不要執行相同名稱的scriptlet。 --noscripts選項等同於

--nopre --nopost --nopreun --nopostun

並關閉相應的%pre%post%preun%postun scriptlet(s)的執行。

--notriggers

--notriggerin

--notriggerun

--notriggerpostun

不要執行指定類型的任何觸發器scriptlet。 --notriggers選項相當於

- 未 觸發 - 觸發 - 觸發

並關閉相應的%triggerin%triggerun%triggerpostun scriptlet(s)的執行。

--oldpackage

允許升級使用較舊的軟件包替換較新的軟件包。

- 百分

打包百分比作為文件從軟件包檔案中解壓縮。 這是為了使rpm易於從其他工具運行。

- 前綴NEWPATH

對於可重定位的二進制包,將所有以包重定位提示中的安裝前綴開頭的文件路徑轉換為NEWPATH

--relocate OLDPATH = NEWPATH

對於可重定位的二進制包,請將包重定位提示中以OLDPATH開頭的所有文件路徑轉換為NEWPATH 。 如果要重新定位包中的多個OLDPATH,則可以重複使用此選項。

--repackage

擦除前重新打包文件。 以前安裝的軟件包將根據宏%_repackage_name_fmt命名,並將在宏%_repackage_dir所指定的目錄中創建(缺省值為/ var / tmp )。

--replacefiles

即使它們替換其他已安裝的軟件包中的文件,也要安裝軟件包。

--replacepkgs

即使它們中的一些已經安裝在這個系統上,也要安裝它們。

- 測試

不要安裝軟件包,只需檢查並報告潛在的衝突。

刪除選項

rpm擦除命令的一般形式是

rpm { -e | --erase } [ --allmatches ] [ --nodeps ] [ --noscripts ] [ --notriggers ] [ --repackage ] [ --test ] PACKAGE_NAME ...

以下選項也可以使用:

--allmatches

刪除與PACKAGE_NAME匹配的所有版本的軟件包。 如果PACKAGE_NAME匹配多個包,通常會發出錯誤。

--nodeps

在卸載軟件包之前不要檢查依賴關係。

--noscripts

--nopreun

--nopostun

不要執行相同名稱的scriptlet。 包擦除期間的--noscripts選項等同於

--nopreun --nopostun

並關閉相應的%preun%postun scriptlet(s)的執行。

--notriggers

--notriggerun

--notriggerpostun

不要執行指定類型的任何觸發器scriptlet。 --notriggers選項相當於

--notriggerun --notriggerpostun

並關閉對應的%triggerun%triggerpostun scriptlet(s)的執行。

--repackage

擦除前重新打包文件。 以前安裝的軟件包將根據宏%_repackage_name_fmt命名,並將在宏%_repackage_dir所指定的目錄中創建(缺省值為/ var / tmp )。

- 測試

不要真正卸載任何東西,只是通過運動。 與-vv選項一起用於調試。

查詢選項

rpm查詢命令的一般形式是

rpm { -q | --query } [ select-options ] [ query-options ]

您可以指定打印信息包的格式。為此,請使用


--qf | --queryformat QUERYFMT

選項,後跟QUERYFMT格式字符串。 查詢格式是標準printf(3)格式的修改版本。 該格式由靜態字符串(可能包括換行符,製表符和其他特殊字符的標準C字符轉義字符)和printf(3)類型格式化程序組成。 由於rpm已經知道要打印的類型,因此必須省略類型說明符,並用由{}字符括起來的要打印的頁眉標記的名稱替換。 標籤名稱是大小寫無效的,標籤名稱的前導RPMTAG_部分也可以省略。

替代輸出格式可以通過以下標籤來請求 typetag 。 目前,支持以下類型:

:盔甲


用ASCII裝甲包裹公鑰。

:BASE64

使用base64編碼二進制數據。

:日期

使用strftime(3)“%c”格式。

:天

使用strftime(3)“%a%b%d%Y”格式。

:depflags

格式依賴性標誌。

:FFLAGS

格式化文件標誌。

:十六進制

以十六進制格式。

:八進制

以八進制格式。

:燙髮

格式化文件權限。

:shescape

轉義單引號以便在腳本中使用。

:triggertype

顯示觸發器後綴。

例如,要只打印查詢包的名稱,可以使用%{NAME}作為格式字符串。 要以兩列打印包名稱和分發信息,可以使用%-30 {NAME}%{DISTRIBUTION}rpm會打印一個列表,列出它使用--querytags參數調用時所知道的所有標記。

有兩個查詢選項子集:包選擇和信息選擇。

包裝選擇選項:

包裹名字

查詢名為PACKAGE_NAME的已安裝軟件包。

-a, - 全部

查詢所有安裝的包。

-f, - 文件FILE

查詢包擁有文件

--fileid MD5

查詢包含給定文件標識符的包,即文件內容的MD5摘要。

-g,--group GROUP

使用GROUP組查詢軟件包。

--hdrid SHA1

查詢包含給定標題標識符的包,即不可變標題區域的SHA1摘要。

-p,--package PACKAGE_FILE

查詢(卸載)的軟件包PACKAGE_FILEPACKAGE_FILE可以被指定為ftphttp風格的URL,在這種情況下,包頭將被下載和查詢。 有關rpm的內部ftphttp客戶端支持的信息,請參閱FTP / HTTP選項PACKAGE_FILE參數(如果不是二進制包)將被解釋為ASCII包清單。 註釋是允許的,以'#'開始,並且包清單文件的每一行可能包括空格分隔的glob表達式,包括帶有遠程glob表達式的URL,這些表達式將被擴展到代替包清單的路徑附加的PACKAGE_FILE參數給查詢。

--pkgid MD5

查詢包含給定包標識符的包,即組合標頭和有效內容內容的MD5摘要。

--querybynumber HDRNUM

直接查詢HDRNUM th數據庫條目; 這僅用於調試。

--specfile SPECFILE

像解析包一樣解析和查詢SPECFILE 。 雖然並非所有信息(例如文件列表)都可用,但此類查詢允許使用rpm從spec文件中提取信息,而無需編寫specfile解析器。

--tid TID

查詢具有給定TID事務標識符的包。 當前使用unix時間戳作為事務標識符。 所有在單個事務中安裝或刪除的軟件包都有一個共同的標識符。

- 被 PACKAGE_NAME 觸發

查詢由包“ PACKAGE_NAME”觸發的包。

- 什麼提供 能力

查詢提供CAPABILITY功能的所有軟件包。

- 什麼要求 能力

查詢所有需要CAPABILITY才能正常運行的軟件包。

包裝查詢選項:

--changelog

顯示包裹的變更信息。

-c,--configfiles

僅列出配置文件(隱含-l )。

-d, - doc文件

僅列出文檔文件(隱含-l )。

- 傾倒

轉儲文件信息如下:

路徑大小mtime md5sum模式所有者組isconfig isdoc rdev符號鏈接

該選項必須至少與-l-c-d中的一個一起使用。

--filesbypkg

列出每個選定軟件包中的所有文件。

-i,--info

顯示軟件包信息,包括名稱,版本和說明。 如果指定了一個,則使用--queryformat

- 持續

根據安裝時間對軟件包列表進行訂購,使最新的軟件包位於頂部。

-l,--list

列出軟件包中的文件。

--provides

列出此軟件包提供的功能。

-R, - 需要

列出該軟件包依賴的軟件包。

--scripts

列出用作安裝和卸載過程一部分的軟件包特定腳本。

-s, - 狀態

顯示包中的文件狀態 (隱含-l )。 每個文件的狀態都是正常的未安裝替換的

- 觸發器, - 觸發器

顯示包中包含的觸發腳本(如果有)。

驗證選項

rpm verify命令的一般形式是

rpm { -V | --verify } [ select-options ] [ verify-options ]

驗證軟件包會將軟件包中已安裝文件的信息與從存儲在rpm數據庫中的軟件包元數據中提取的文件信息進行比較。 除此之外,驗證會比較每個文件的大小,MD5總和,權限,類型,所有者和組。 顯示任何差異。 沒有從包中安裝的文件(例如,使用“ --excludedocs ”選項安裝時排除的文檔文件)將被忽略。

軟件包選擇選項與軟件包查詢(包括軟件包清單文件作為參數)相同。 驗證模式的其他唯一選項是:

--nodeps

不要驗證包的依賴關係。

--nodigest

閱讀時不要驗證包或標題摘要。

- 沒有文件

不要驗證包文件的任何屬性。

--noscripts

不要執行%verifyscript scriptlet(如果有的話)。

--nosignature

閱讀時不要驗證包或標頭簽名。

--nolinkto

--nomd5

--nosize

--nouser

--nogroup

--nomtime

--nomode

--nordev

不要驗證相應的文件屬性。

輸出的格式是8個字符的字符串,一個可能的屬性標記:

c %配置配置文件。 d %doc文檔文件。 g %ghost文件(即文件內容不包含在包有效載荷中)。 l 許可證文件。 r %readme自述文件。

從包頭,然後是文件名。 8個字符中的每一個表示文件的屬性與數據庫中記錄的那些屬性的值的比較結果。 單個“ ”(句點)表示測試通過,而單個“ ”(問號)表示測試不能執行(例如文件權限阻止閱讀)。 否則,(符號助記符)字符表示相應的驗證測試失敗:

S文件大小不同M M ode不同(包括權限和文件類型) 5 MD 5和不同D D設備主要/次要編號不匹配L讀取L墨水(2)路徑不匹配U用戶所有權不同G組所有權不同T m T ime不同

數字簽名和消息驗證

rpm 數字簽名命令的一般形式是

rpm --import PUBKEY ...

rpm { --checksig } [ --nosignature ] [ --nodigest ]
PACKAGE_FILE ...

--checksig選項檢查包含在PACKAGE_FILE中的所有摘要和簽名,以確保包的完整性和來源。 請注意,無論何時讀取包,都會驗證簽名,並且--checksig可用於驗證與包關聯的所有摘要和簽名。

沒有公鑰就不能驗證數字簽名。 可以使用--import將一個ascii裝甲公鑰添加到rpm數據庫中。 導入的公鑰在標題中攜帶,密鑰環管理與包管理完全相同。 例如,所有當前導入的公鑰都可以通過以下方式顯示:

rpm -qa gpg-pubkey *

有關特定公鑰的詳細信息,當導入時,可以通過查詢顯示。 以下是關於紅帽GPG / DSA密鑰的信息:

rpm -qi gpg-pubkey-db42a60e

最後,公共密鑰可以像導入包一樣進行擦除。 以下是刪除紅帽GPG / DSA密鑰的方法

rpm -e gpg-pubkey-db42a60e

簽署一個包裹

rpm --addsign | - 重新設置 PACKAGE_FILE ...

--addsign--resign選項都會為每個給定的包PACKAGE_FILE生成並插入新簽名,替換任何現有的簽名。 由於歷史原因有兩種選擇,目前行為沒有區別。

使用GPG標記包

為了使用GPG對軟件包進行簽名,必須將rpm配置為運行GPG,並能夠使用適當的鍵找到密鑰環。 默認情況下, rpm使用與GPG相同的約定來查找密鑰環,即$ GNUPGHOME環境變量。 如果您的密鑰環未位於GPG預期的位置,則需要將宏%_gpg_path配置為要使用的GPG密鑰環的位置。

為了與較早版本的GPG,PGP和rpm兼容,只應配置V3 OpenPGP簽名數據包。 DSA或RSA驗證算法都可以使用,但DSA是首選。

如果您想要簽署自己創建的軟件包,則還需要創建自己的公鑰和密鑰對(請參閱GPG手冊)。 您還需要配置rpm

%_簽名

簽名類型。 目前只支持gpg和pgp。

%_gpg_name

您希望用來簽署包裹的“用戶”的名稱。

例如,要使用GPG以用戶“John Doe 身份使用可執行文件/ usr / bin / gpg從位於/etc/rpm/.gpg中的密鑰環中對GPG進行簽名,包括

%_signature gpg%_gpg_path /etc/rpm/.gpg%_gpg_name John Doe %_gpgbin / usr / bin / gpg

在宏配置文件中。 對於每個系統配置使用/ etc / rpm / macros ,對於每個用戶配置使用〜/ .rpmmacros

重建數據庫選項

rpm重建數據庫命令的一般形式是

rpm { --initdb | --rebuilddb } [ -v ] [ --dbpath DIRECTORY ] [ --root DIRECTORY ]

使用--initdb創建新數據庫,使用--rebuilddb從已安裝的軟件包頭重建數據庫索引。

SHOWRC

命令

rpm --showrc

顯示rpm將用於所有選項的值當前是在rpmrc配置文件中設置的。

FTP / HTTP選項

rpm可以充當FTP和/或HTTP客戶端,以便可以從互聯網上查詢或安裝軟件包。 用於安裝,升級和查詢操作的軟件包文件可以指定為ftphttp樣式的URL:

FTP://用戶名:密碼@ HOST:PORT /路徑/到/ package.rpm

如果省略:PASSWORD部分,則會提示輸入密碼(每個用戶/主機名對一次)。 如果用戶和密碼均被省略,則使用匿名ftp 。 在所有情況下,執行被動(PASV) ftp傳輸。

rpm允許以下選項與ftp URL一起使用:

--ftpproxy 主機

主機HOST將用作所有ftp傳輸的代理服務器,它允許用戶通過使用代理系統的防火牆機器進行ftp。 該選項也可以通過配置宏%_ftpproxy來指定。

- 支持 主機

用於代理ftp服務器上的ftp連接而不是默認端口的TCP 端口號。 該選項也可以通過配置宏%_ftpport來指定。

rpm允許以下選項與http URL一起使用:

--httpproxy 主機

主機HOST將用作所有http傳輸的代理服務器。 該選項也可以通過配置宏%_httpproxy來指定。

--httpport PORT

用於代理http服務器上的http連接而不是默認端口的TCP 端口號。 該選項也可以通過配置宏%_httpport來指定。

遺留問題

執行rpmbuild

rpm的構建模式現在駐留在/ usr / bin / rpmbuild可執行文件中。 儘管下面的彈出式別名提供的遺留兼容性已經足夠,但兼容性並不完美; 因此通過popt別名構建模式兼容性正在從rpm中刪除。 安裝rpmbuild軟件包,並參閱rpmbuild (8)以獲取之前在rpm (8)中記錄的所有rpm構建模式的文檔。

如果您希望從rpm命令行繼續調用rpmbuild ,請將以下行添加到/ etc / popt中

rpm exec --bp rpmb -bp rpm exec --bc rpmb -bc rpm exec --bi rpmb -bi rpm exec --bl rpmb -bl rpm exec --ba rpmb -ba rpm exec --bb rpmb -bb rpm exec --bs rpmb -bs rpm exec --tp rpmb -tp rpm exec --tc rpmb -tc rpm exec --ti rpmb -ti rpm exec --tl rpmb -tl rpm exec --ta rpmb -ta rpm exec - tb rpmb -tb rpm exec -ts rpmb -ts rpm exec --rebuild rpmb --rebuild rpm exec --recompile rpmb --recompile rpm exec --clean rpmb --clean rpm exec --rmsource rpmb --rmsource rpm exec --rmspec rpmb --rmspec rpm exec --target rpmb --target rpm exec - 短路電路rpmb - 短路電路

也可以看看

popt (3), rpm2cpio (8), rpmbuild (8),

http://www.rpm.org/ http://www.rpm.org/>

重要提示:使用man命令( %man )查看特定計算機上的命令使用方式。