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 ...
select選項
引用 [PACKAGE_NAME] [-a,--all] [-f,--file FILE]
???? [-g,--group GROUP] {-p,--package PACKAGE_FILE]
???? [--fileid MD5] [--hdrid SHA1] [--pkgid MD5] [--tid TID]
???? [--querybynumber HDRNUM] [--triggeredby PACKAGE_NAME]
???? [--whatprovides CAPABILITY] [--whatrequires CAPABILITY]
query選項
引用 [--changelog] [-c,--configfiles] [-d,--docfiles] [--dump]
???? [--filesbypkg] [-i,--info] [--last] [-l,--list]
???? [--provides] [--qf,--queryformat QUERYFMT]
???? [-R,--requires] [--scripts] [-s,--state]
???? [--triggers,--triggerscripts]
verify選項
引用 [--nodeps] [--nofiles] [--noscripts]
???? [--nodigest] [--nosignature]
???? [--nolinkto] [--nomd5] [--nosize] [--nouser]
???? [--nogroup] [--nomtime] [--nomode] [--nordev]
install選項
引用 [--aid] [--allfiles] [--badreloc] [--excludepath OLDPATH]
???? [--excludedocs] [--force] [-h,--hash]
???? [--ignoresize] [--ignorearch] [--ignoreos]
???? [--includedocs] [--justdb] [--nodeps]
???? [--nodigest] [--nosignature] [--nosuggest]
???? [--noorder] [--noscripts] [--notriggers]
???? [--oldpackage] [--percent] [--prefix NEWPATH]
???? [--relocate OLDPATH=NEWPATH]
???? [--repackage] [--replacefiles] [--replacepkgs]
???? [--test]
說明:
????rpm是一個強有力的包管理工具,它可以用于建造、安裝、查詢、檢驗、更新和刪除個別的軟件包。文件包由文件的檔案組成且元數據過去常用于安裝和刪除存檔文件。元數據包括幫助角本、文件屬性和關于這個包的可描述性信息。包通常有兩個變體:二進制包,用于壓縮軟件的安裝;另一個是源程序包,包括原代碼和產生二進制包的的方法說明。
????必須選擇下面的基本模式:Query, Verify,??Signature??Check, Install/Upgrade/Freshen, Uninstall, Initialize Database, Rebuild Database, Resign, Add Signature, Set Owners/Groups, Show Querytags, and Show Configuration。
二、一般選項
那些選項可以用于所有的不同的模式中。
引用 -?, --help
?????? 正常情況下輸出使用方法。
--version
?????? 輸出包括目前所使用的rpm版本數據的單行。
--quiet
?????? 輸出盡可能少-正常情況下,如果有錯誤出現,僅輸出錯誤。
-v???? 輸出詳細信息-正常的常規的進程信息。
-vv????輸出很多的調試信息。
--rcfile FILELIST
???? 第一個在FILELIST中由冒號區分的文件將被rpm作為配置信息讀出。在列表中的第一個文件必須存在,且tildes將被寫入到$HOME的值中。默認的FILELIST is /usr/lib/rpm/rpmrc:/usr/lib/rpm/redhat/rpmrc:~/.rpmrc。
--pipe CMD
???? rmp到命令CMD的輸出管道。
--dbpath DIRECTORY
???? 在DIRECTORY中數據庫而不是使用默認的路徑/var/lib/rpm。
--root DIRECTORY
???? 使用文件系統樹為所有操作在DIRECTORY進行登錄(rooted)!注意這意味著在DIRECTORY內的數據庫將對所有的依賴的檢測和任何角本使用 (例如:在一個包中%post安裝了或%prep已經建立),將在一個chroot(2)之后運行并賦給DIRECTORY。
安裝和更新選項:
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被指定為一個ftp或http的URL,那么在安裝之前這個包將會被下載。參見FTP/HTTP選項。
引用 --aid??在必要的時候為交易集增加暗示包。
--allfiles
????安裝或升級所有的在包中不正確的文件,不管它們是否存在。
--badreloc
???? 使用此選項,允許在所有的文件路徑中重新定位,不僅是那些包含在二進制包中重定位的hint(s)中的那些OLDPATH.
--excludepath OLDPATH
???? 不安裝那些名字在OLDPATH中的文件。
--excludedocs
???? 不安裝那些文檔文件(那些man頁和texinfo文檔)。
--force
???? 與使用—replacepkgs、--replacefiles和—oldpackage一樣。
-h, --hash
???? 在被有效的解開時輸出50個信息符。使用-v|--verbose可以優選顯示。
--ignoresize
???? 在安裝包之前不檢測mount的文件系統的空間是否夠。
--ignorearch
???? 即使二進制包的結構和主機不符也進行安裝或升級。
--ignoreos
???? 即使二進制文件名的操作系統與主機不符也允許進行升級和安裝。
--includedocs
???? 安裝文檔,這是默認屬性。
--justdb
???? 僅更新數據庫而不更新文件系統。
--nodigest
???? 在讀時不檢驗包或包頭的摘要。
--nosignature
???? 當讀時不檢測包或包頭的簽名。
--nodeps
???? 在安裝或升級一個包之前不進行一個依賴性的檢測。
--nosuggest
???? 不建議包提供一個不可少的信賴。
--noorder
??????不為安裝訂制包。正常情況下,包列表將已經訂制完畢。
--noscripts
--nopre
--nopost
--nopreun
--nopostun
????不執行同名的角本。--noscripts選項與--nopre --nopost --nopreun –nopostun相同。并且關閉相應的%pre、%post,、%preun和%postun角本的執行。
--notriggers
--notriggerin
--notriggerun
--notriggerpostun
????不執行指定類型的觸發角本。--notriggers選項與--notriggerin --notriggerun –notriggerpostun含義相同。且關閉了相應的%triggerin、%triggerun和%triggerpostun角本。
--oldpackage
???? 允許使用舊包替換或“升級”一個新的包。
--percent
???? 在解包時輸出文件解包的百分比。
--prefix NEWPATH
???? 對于可重定位的二進制包,翻譯在包重定位線索中以安裝前綴開頭的文件給NEWPATH.。
--relocate OLDPATH=NEWPATH
???? 針對重定位的二進制包,翻譯在包重定位線索中以OLDPATH開頭的文件給NEWPATH。如果在包中的幾個OLDPATH被重新裝載,選項可以重復使用。
--repackage
???? 在刪除之前重新打包文件。先前安裝的包將由宏%_repackage_name_fmt指定,且其創建目錄也由宏%_repackage_dir指定(默認值是/var/tmp)。
--replacefiles
???? 安裝包,即使他們已經從別的地方已經安裝的包中替換了文件。
--replacepkgs
???? 完全安裝包,即使其中的一些文件已經在系統中安裝完成。
--test??不安裝包,僅僅簡單檢測或報告潛在的沖突。
刪除選項:
刪除格式的rpm命令是:?
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers]
[--repackage] [--test] PACKAGE_NAME ...
下面的選項也可以使用:
引用 --allmatches
????刪除所有那些包匹配PACKAGE_NAME的版本。如果PACKAGE_NAME有多個匹配,正常情況下將有一個錯誤說明。
--nodeps
???? 在沒有安裝包之前,不檢測依賴關系。
--noscripts
--nopreun
--nopostun
???? 不執行同名角本。--noscripts、--nopreun –nopostun含義相同。關閉%preun、%postun角本的響應。
--notriggers
--notriggerun
--notriggerpostun
???? 不執行任何指定類型的觸發器角本。--notriggers、--notriggerun、 --notriggerpostun含義相同。同時關閉%triggerun、%triggerpostun角本響應。
--repackage
???? 在刪除之前重新打包文件。先前安裝的包將由宏%_repackage_name_fmt指定,且其創建目錄也由宏%_repackage_dir指定(默認值是/var/tmp)。
--test??不真的卸載任何東西, 僅僅是經歷一下這個動作。與-vv選項聯合使用。
查詢選項:
rpm查詢選項的通用格式:
rpm {-q|--query} [select-options] [query-options]
????可以指定包信息被打印的格式,如果想做這些,可以使用下面的方式:
引用 --qf|--queryformat QUERYFMT
選項,后邊是格式字符串QUERYFMT。查詢格式是標準printf(3)的標準輸出版本。其格式由靜態字符串組成(應包括標準C字符,除了換行符、tables或其它特殊字符串)和printf(3)類型格式符。當rpm已經知道打印的類型后,無論如何,類型指定必須被忽略,且被頭標簽替代的部分將被打印,被符上{}字符。標簽名是一個固定的實例,這標簽名主要的RPMTAG_ portion也可以被忽略。
交替的輸出格式可以由帶:typetag標簽申請。通常,支持下面的類型:?
引用 :armor??外面包一層ASCII鍵值。
:base64
????使用base64編碼二進制數據。
:date??使用strftime(3) "%c"格式。
:day?? 使用strftime(3) "%a %b %d %Y"格式。
:depflags
????格式從屬標記。
:fflags
???? 格式文件標記。
:hex?? 十六進制格式。
:octal??八進制格式。
:perms??文件許可格式。
:shescape
????不能在角本單個引用。
:triggertype
???? 顯示觸發器后綴。
例如,僅僅輸出被查詢的包的名字,可以使用%{NAME}做為一個格式字符串。在兩列上輸出包名和分區信息,可以使用%-30{NAME}%{DISTRIBUTION}。當調用時使用--querytags 參數,Rpm輸出所有它所知道的標簽列表。
有兩個查詢的子集選項:包選擇和信息選擇。
包選擇選項:
引用 PACKAGE_NAME
???? 查詢名字為PACKAGE_NAME的被安裝的包。
-a, --all
???? 查詢所有已經安裝過的包。
-f, --file FILE
???? 查詢擁有文件FILE的包。
--fileid MD5
????查詢包含一個給定的文件檢測符,也就是MD5文件內容目錄。
-g, --group GROUP
???? 查詢組GROUP的包。
--hdrid SHA1
???? 查詢包含給定的頭標識的包,也就是包含SHA1的不可變頭區的包。
-p, --package PACKAGE_FILE
???? 查詢(卸載)的包PACKAGE_FILE。PACKAGE_FILE可以以ftp或http風格的URL指定,這種情況下包頭的實例將被下載和查詢。在rpm的內部的ftp和http支持參見FTP/HTTP選項。PACKAGE_FILE參數,如果不是一個二進制包,將被解釋為一個ASCII包的形式。可以存在注釋,以#開頭,且包說明文件的每一行都可以包括空白分隔的表達式。包括包含有遠程一組解釋的URL,將展開到作為附加的包PACKAGE_FILE參數賦值給查詢代替包說明的路徑下。
引用 --pkgid MD5
???? 查詢包,包括給定的包認證信息,也就是說是一個MD5摘要。
--querybynumber HDRNUM
???? 直接查詢HDRNUMth數據庫入口,僅用于調試方式。
--specfile SPECFILE
???? 直接分析和查詢SPECFILE,好象它就是一個包。雖然不是所有的信息(也就是說文件列表)都是有效的,允許rpm查詢的類型常被用做從specfile中摘要信息而不必寫specifle分析。
--tid TID
???? 查詢給出TID的包事務認證。Unix時間戳當前被用作事務認證。所有內部有單個事務的被安裝或刪除的包都有一個簡單的認證。
--triggeredby PACKAGE_NAME
???? 查詢由包PACKAGE_NAME觸發的包。
--whatprovides CAPABILITY
???? 查詢所有提供CAPABILITY容量的包。
--whatrequires CAPABILITY
查詢所有正確功能的CAPABILITY的請求的包。
包查詢選項:
引用 --changelog
???? 顯示包改變的信息。
-c, --configfiles
???? 只顯示配置文件(意味著-l)。
-d, --docfiles
???? 只顯示出文件文件(意味著-l)。
--dump 向下面那樣備份文件:?
???? path、size、mtime、md5sum、mode、owner、group、isconfig、isdoc、rdev、symlink
???? 此選項必須與-l, -c, -d中的一個配合使用。
--filesbypkg
???? 在被選中的包中列出所有的文件。
-i, --info
???? 顯示包信息,包括名稱、版本和說明。如果指定的顯示內容的話需要使用--queryformat選項。
--last Orders??
以包安裝的順序來列出包內容,結果是最后一個安裝的包在最上層列出。
-l, --list
????列出包中的文件。
--provides
????列出包中規定的容量。
-R, --requires
????列出這個包所依賴的包。
--scripts
????列出部分包的指定角本作為安裝和卸載的信息。
-s, --state
????列出在包中文件的狀態(意味著-l)文件的狀態包括正常、未安裝、替換。
--triggers, --triggerscripts
????顯示觸發器角本,它包含在包中。
校驗選項:
格式如下:
rpm {-V|--verify} [select-options] [verify-options]
????校驗在包中已經安裝且在rpm數據庫中帶有來自于中的元數據存儲的文件比較信息在這些東西中,校驗比較大小、MD5數、許可、類型、擁有者及每個文件的組。所有明細信息都將顯示。沒有從包中安裝的文件,例如:使用—excludedocs選項將文件文檔文件沒有安裝,則文檔文件將被默認忽略。
????包選擇選項與包查詢選項相同(包括象參數的包的說明文件)。別的選項的唯一校驗格式如下:
引用 --nodeps
???? 不校驗包的從屬部分。
--nodigest
???? 在讀時不校驗包或頭的摘要。
--nofiles
???? 不校驗包文件的屬性。
--noscripts
???? 不執行%verifyscript角本(if any)。
--nosignature
???? 當讀時不校驗包或頭的信號。
--nolinkto
--nomd5
--nosize
--nouser
--nogroup
--nomtime
--nomode
--nordev
不校驗相應文件的屬性。
輸出格式是一個8個字符的字符串,可能的屬性標記是:
引用 c %config 配置文件。
d %doc 文檔文件。
g %ghost file (也就是說文件內容不沒有包含在包的有效負荷中)。
l %license license文件。
r %readme readme文件。
從后面跟著文件名的包頭中,8個字符每個都指出在數據庫中屬性記錄值文件屬性的比較結果。句號"."意味著測試通過,而"?"說明沒有不能執行(也就是說文件許不能讀)。無論怎樣,這些字符都指出了校驗測試沒有成功。
S 文件大小不同
M 模式不同(包括許可和文件類型)
5 MD5數不同
D 設置主要/較小的不匹配數
L readLink(2) 路徑不匹配
U 用戶所屬關系不同
G 組所屬關系不同
T mTime不同。
數字符號和摘要校驗:
rpm數字符號命令的格式是:?
rpm --import PUBKEY ...
rpm {--checksig} [--nosignature] [--nodigest]
????PACKAGE_FILE ...
引用 --checksig選項檢查所有的包含在PACKAGE_FILE中的摘要和簽名,來確認包的完整性及來源。注意,無論包什么時候讀,簽名都要進行校驗,且--checksig對于校驗所有的與包相關的摘要和簽名都是很有用的。
????在沒有公鑰的情況下,數字符號不能校驗。使用--import將一個ascii公鑰加到你的rpm數據庫中。導入的公鑰存在于頭中,且key回響管理是象一個包管理一樣正確執行。例如,所有當前輸入的公鑰可以由下面的式子列出:
rpm -qa gpg-pubkey*
????當導入時關于指定的公鑰的說明,能被查詢所顯示。,下面是關于Red Hat GPG/DSA key的顯示信息:
rpm -qi gpg-pubkey-db42a60e
最后,公鑰可以在輸出后名象包一樣被刪除,下面是刪除Red Hat GPG/DSA key:
rpm -e gpg-pubkey-db42a60e
包簽名:
rpm --addsign|--resign PACKAGE_FILE ...
引用 --addsign和—resign選項產生和插入新的簽名給每一個指定的PACKAGE_FILE 包,用來代替所有存在的簽名。由于歷史的原因,有兩個選面,這兩者的行為沒有什么不同。
使用GPG簽名:
為了使用GPG為包做簽名,rmp必須被配置成運行GPG且可以找到有適當KEY的鍵環。默認情況下,rpm查找鍵環的方式與GPG方式相同。也就是$GNUPGHOME 環境變量。如果你的鍵環沒有定位到GPG預設的位置,那么你需要配置宏%_gpg_路徑到GPG鍵環指定的位置。
為了保證與舊版的GPG、PGP和rpm兼容,只有V3 OpenPGP簽名包被配置上了。DSA或者RSA的加密算法可以使用,但DSA是首選項。
如果你想要為你自己創建的包進行簽名,也需要創建自己的公鑰和私鑰對(參見GPG手冊)。你將也需要配置rpm宏。
%_signature
????簽名類型。僅支持gpg與pgp方式。
%_gpg_name
????你希望使用的給你的包進行簽名的鍵的“user”名。
例如,使用GPG使用類似于用戶"John Doe??;"從鍵環位置/etc/rpm/.gpg使用可執行的/usr/bin/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
顯示所有在rpmrc和macros配置文件中設置的選項中使用的rpm值。
引用 FTP/HTTP選項:
????Rpm能象FTP和/或HTTP客戶端那樣,所以包能從internet中進行查詢和安裝。安裝、更新和查詢包文件的操作可以作為一個ftp或http風格的URL指定。
ftp://USER:PASSWORD@HOST:PORT/path/to/package.rpm
????如果忽略了:PASSWORD部分,將會提示輸入密碼(針對每個用戶/主機對)。如果用戶和密碼都忽略,ftp將使用匿名(anonymous)方式。實際上,ftp進行的是被動的傳輸。
Rpm允許在ftp的URLs中使用下面的選項:
--ftpproxy HOST
????主機HOST將做為所有傳輸的代理服務器,允許用戶穿過那些使用代理的系統的防火墻去ftp。這個選項也可以通過使用宏%_ftpproxy來配置。
--ftpport HOST
????ftp使用連接到ftp代理服務器的TCP??PORT號來代替默認值。這個選項也可以由宏%_ftpport來指定。
Rpm允許以下面的格式使用http URLs:
--httpproxy HOST
?????? 主機HOST將作為所有http傳輸的代理服務器。這個選項也可以由宏%_httpproxy指定。
--httpport PORT
????http使用連接到http代理服務器的TCP??PORT號來代替默認值。這個選項也可以由宏%_httpport來指定。
三、后續說明
執行rpm構建:
rpm的構建模式目前使用/usr/bin/rpmbuild進行。雖然由 popt別名提供的兼容性已經足夠了,但還不是完美的。因此通過popt別名的兼容性目前正在被從rpm中刪除。安裝rpmbuild包,可參見rpmbuild(8)。在rpm(8)中可以找到所有的當前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 --short-circuit????rpmb --short-circuit
相關日志
[原]使用Mock 實現跨平臺跨發行版編譯RPM
[原]創建VPS OS模板
[原]RDAC的spec生成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 ...
select選項
引用 [PACKAGE_NAME] [-a,--all] [-f,--file FILE]
???? [-g,--group GROUP] {-p,--package PACKAGE_FILE]
???? [--fileid MD5] [--hdrid SHA1] [--pkgid MD5] [--tid TID]
???? [--querybynumber HDRNUM] [--triggeredby PACKAGE_NAME]
???? [--whatprovides CAPABILITY] [--whatrequires CAPABILITY]
query選項
引用 [--changelog] [-c,--configfiles] [-d,--docfiles] [--dump]
???? [--filesbypkg] [-i,--info] [--last] [-l,--list]
???? [--provides] [--qf,--queryformat QUERYFMT]
???? [-R,--requires] [--scripts] [-s,--state]
???? [--triggers,--triggerscripts]
verify選項
引用 [--nodeps] [--nofiles] [--noscripts]
???? [--nodigest] [--nosignature]
???? [--nolinkto] [--nomd5] [--nosize] [--nouser]
???? [--nogroup] [--nomtime] [--nomode] [--nordev]
install選項
引用 [--aid] [--allfiles] [--badreloc] [--excludepath OLDPATH]
???? [--excludedocs] [--force] [-h,--hash]
???? [--ignoresize] [--ignorearch] [--ignoreos]
???? [--includedocs] [--justdb] [--nodeps]
???? [--nodigest] [--nosignature] [--nosuggest]
???? [--noorder] [--noscripts] [--notriggers]
???? [--oldpackage] [--percent] [--prefix NEWPATH]
???? [--relocate OLDPATH=NEWPATH]
???? [--repackage] [--replacefiles] [--replacepkgs]
???? [--test]
說明:
????rpm是一個強有力的包管理工具,它可以用于建造、安裝、查詢、檢驗、更新和刪除個別的軟件包。文件包由文件的檔案組成且元數據過去常用于安裝和刪除存檔文件。元數據包括幫助角本、文件屬性和關于這個包的可描述性信息。包通常有兩個變體:二進制包,用于壓縮軟件的安裝;另一個是源程序包,包括原代碼和產生二進制包的的方法說明。
????必須選擇下面的基本模式:Query, Verify,??Signature??Check, Install/Upgrade/Freshen, Uninstall, Initialize Database, Rebuild Database, Resign, Add Signature, Set Owners/Groups, Show Querytags, and Show Configuration。
二、一般選項
那些選項可以用于所有的不同的模式中。
引用 -?, --help
?????? 正常情況下輸出使用方法。
--version
?????? 輸出包括目前所使用的rpm版本數據的單行。
--quiet
?????? 輸出盡可能少-正常情況下,如果有錯誤出現,僅輸出錯誤。
-v???? 輸出詳細信息-正常的常規的進程信息。
-vv????輸出很多的調試信息。
--rcfile FILELIST
???? 第一個在FILELIST中由冒號區分的文件將被rpm作為配置信息讀出。在列表中的第一個文件必須存在,且tildes將被寫入到$HOME的值中。默認的FILELIST is /usr/lib/rpm/rpmrc:/usr/lib/rpm/redhat/rpmrc:~/.rpmrc。
--pipe CMD
???? rmp到命令CMD的輸出管道。
--dbpath DIRECTORY
???? 在DIRECTORY中數據庫而不是使用默認的路徑/var/lib/rpm。
--root DIRECTORY
???? 使用文件系統樹為所有操作在DIRECTORY進行登錄(rooted)!注意這意味著在DIRECTORY內的數據庫將對所有的依賴的檢測和任何角本使用 (例如:在一個包中%post安裝了或%prep已經建立),將在一個chroot(2)之后運行并賦給DIRECTORY。
安裝和更新選項:
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被指定為一個ftp或http的URL,那么在安裝之前這個包將會被下載。參見FTP/HTTP選項。
引用 --aid??在必要的時候為交易集增加暗示包。
--allfiles
????安裝或升級所有的在包中不正確的文件,不管它們是否存在。
--badreloc
???? 使用此選項,允許在所有的文件路徑中重新定位,不僅是那些包含在二進制包中重定位的hint(s)中的那些OLDPATH.
--excludepath OLDPATH
???? 不安裝那些名字在OLDPATH中的文件。
--excludedocs
???? 不安裝那些文檔文件(那些man頁和texinfo文檔)。
--force
???? 與使用—replacepkgs、--replacefiles和—oldpackage一樣。
-h, --hash
???? 在被有效的解開時輸出50個信息符。使用-v|--verbose可以優選顯示。
--ignoresize
???? 在安裝包之前不檢測mount的文件系統的空間是否夠。
--ignorearch
???? 即使二進制包的結構和主機不符也進行安裝或升級。
--ignoreos
???? 即使二進制文件名的操作系統與主機不符也允許進行升級和安裝。
--includedocs
???? 安裝文檔,這是默認屬性。
--justdb
???? 僅更新數據庫而不更新文件系統。
--nodigest
???? 在讀時不檢驗包或包頭的摘要。
--nosignature
???? 當讀時不檢測包或包頭的簽名。
--nodeps
???? 在安裝或升級一個包之前不進行一個依賴性的檢測。
--nosuggest
???? 不建議包提供一個不可少的信賴。
--noorder
??????不為安裝訂制包。正常情況下,包列表將已經訂制完畢。
--noscripts
--nopre
--nopost
--nopreun
--nopostun
????不執行同名的角本。--noscripts選項與--nopre --nopost --nopreun –nopostun相同。并且關閉相應的%pre、%post,、%preun和%postun角本的執行。
--notriggers
--notriggerin
--notriggerun
--notriggerpostun
????不執行指定類型的觸發角本。--notriggers選項與--notriggerin --notriggerun –notriggerpostun含義相同。且關閉了相應的%triggerin、%triggerun和%triggerpostun角本。
--oldpackage
???? 允許使用舊包替換或“升級”一個新的包。
--percent
???? 在解包時輸出文件解包的百分比。
--prefix NEWPATH
???? 對于可重定位的二進制包,翻譯在包重定位線索中以安裝前綴開頭的文件給NEWPATH.。
--relocate OLDPATH=NEWPATH
???? 針對重定位的二進制包,翻譯在包重定位線索中以OLDPATH開頭的文件給NEWPATH。如果在包中的幾個OLDPATH被重新裝載,選項可以重復使用。
--repackage
???? 在刪除之前重新打包文件。先前安裝的包將由宏%_repackage_name_fmt指定,且其創建目錄也由宏%_repackage_dir指定(默認值是/var/tmp)。
--replacefiles
???? 安裝包,即使他們已經從別的地方已經安裝的包中替換了文件。
--replacepkgs
???? 完全安裝包,即使其中的一些文件已經在系統中安裝完成。
--test??不安裝包,僅僅簡單檢測或報告潛在的沖突。
刪除選項:
刪除格式的rpm命令是:?
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers]
[--repackage] [--test] PACKAGE_NAME ...
下面的選項也可以使用:
引用 --allmatches
????刪除所有那些包匹配PACKAGE_NAME的版本。如果PACKAGE_NAME有多個匹配,正常情況下將有一個錯誤說明。
--nodeps
???? 在沒有安裝包之前,不檢測依賴關系。
--noscripts
--nopreun
--nopostun
???? 不執行同名角本。--noscripts、--nopreun –nopostun含義相同。關閉%preun、%postun角本的響應。
--notriggers
--notriggerun
--notriggerpostun
???? 不執行任何指定類型的觸發器角本。--notriggers、--notriggerun、 --notriggerpostun含義相同。同時關閉%triggerun、%triggerpostun角本響應。
--repackage
???? 在刪除之前重新打包文件。先前安裝的包將由宏%_repackage_name_fmt指定,且其創建目錄也由宏%_repackage_dir指定(默認值是/var/tmp)。
--test??不真的卸載任何東西, 僅僅是經歷一下這個動作。與-vv選項聯合使用。
查詢選項:
rpm查詢選項的通用格式:
rpm {-q|--query} [select-options] [query-options]
????可以指定包信息被打印的格式,如果想做這些,可以使用下面的方式:
引用 --qf|--queryformat QUERYFMT
選項,后邊是格式字符串QUERYFMT。查詢格式是標準printf(3)的標準輸出版本。其格式由靜態字符串組成(應包括標準C字符,除了換行符、tables或其它特殊字符串)和printf(3)類型格式符。當rpm已經知道打印的類型后,無論如何,類型指定必須被忽略,且被頭標簽替代的部分將被打印,被符上{}字符。標簽名是一個固定的實例,這標簽名主要的RPMTAG_ portion也可以被忽略。
交替的輸出格式可以由帶:typetag標簽申請。通常,支持下面的類型:?
引用 :armor??外面包一層ASCII鍵值。
:base64
????使用base64編碼二進制數據。
:date??使用strftime(3) "%c"格式。
:day?? 使用strftime(3) "%a %b %d %Y"格式。
:depflags
????格式從屬標記。
:fflags
???? 格式文件標記。
:hex?? 十六進制格式。
:octal??八進制格式。
:perms??文件許可格式。
:shescape
????不能在角本單個引用。
:triggertype
???? 顯示觸發器后綴。
例如,僅僅輸出被查詢的包的名字,可以使用%{NAME}做為一個格式字符串。在兩列上輸出包名和分區信息,可以使用%-30{NAME}%{DISTRIBUTION}。當調用時使用--querytags 參數,Rpm輸出所有它所知道的標簽列表。
有兩個查詢的子集選項:包選擇和信息選擇。
包選擇選項:
引用 PACKAGE_NAME
???? 查詢名字為PACKAGE_NAME的被安裝的包。
-a, --all
???? 查詢所有已經安裝過的包。
-f, --file FILE
???? 查詢擁有文件FILE的包。
--fileid MD5
????查詢包含一個給定的文件檢測符,也就是MD5文件內容目錄。
-g, --group GROUP
???? 查詢組GROUP的包。
--hdrid SHA1
???? 查詢包含給定的頭標識的包,也就是包含SHA1的不可變頭區的包。
-p, --package PACKAGE_FILE
???? 查詢(卸載)的包PACKAGE_FILE。PACKAGE_FILE可以以ftp或http風格的URL指定,這種情況下包頭的實例將被下載和查詢。在rpm的內部的ftp和http支持參見FTP/HTTP選項。PACKAGE_FILE參數,如果不是一個二進制包,將被解釋為一個ASCII包的形式。可以存在注釋,以#開頭,且包說明文件的每一行都可以包括空白分隔的表達式。包括包含有遠程一組解釋的URL,將展開到作為附加的包PACKAGE_FILE參數賦值給查詢代替包說明的路徑下。
引用 --pkgid MD5
???? 查詢包,包括給定的包認證信息,也就是說是一個MD5摘要。
--querybynumber HDRNUM
???? 直接查詢HDRNUMth數據庫入口,僅用于調試方式。
--specfile SPECFILE
???? 直接分析和查詢SPECFILE,好象它就是一個包。雖然不是所有的信息(也就是說文件列表)都是有效的,允許rpm查詢的類型常被用做從specfile中摘要信息而不必寫specifle分析。
--tid TID
???? 查詢給出TID的包事務認證。Unix時間戳當前被用作事務認證。所有內部有單個事務的被安裝或刪除的包都有一個簡單的認證。
--triggeredby PACKAGE_NAME
???? 查詢由包PACKAGE_NAME觸發的包。
--whatprovides CAPABILITY
???? 查詢所有提供CAPABILITY容量的包。
--whatrequires CAPABILITY
查詢所有正確功能的CAPABILITY的請求的包。
包查詢選項:
引用 --changelog
???? 顯示包改變的信息。
-c, --configfiles
???? 只顯示配置文件(意味著-l)。
-d, --docfiles
???? 只顯示出文件文件(意味著-l)。
--dump 向下面那樣備份文件:?
???? path、size、mtime、md5sum、mode、owner、group、isconfig、isdoc、rdev、symlink
???? 此選項必須與-l, -c, -d中的一個配合使用。
--filesbypkg
???? 在被選中的包中列出所有的文件。
-i, --info
???? 顯示包信息,包括名稱、版本和說明。如果指定的顯示內容的話需要使用--queryformat選項。
--last Orders??
以包安裝的順序來列出包內容,結果是最后一個安裝的包在最上層列出。
-l, --list
????列出包中的文件。
--provides
????列出包中規定的容量。
-R, --requires
????列出這個包所依賴的包。
--scripts
????列出部分包的指定角本作為安裝和卸載的信息。
-s, --state
????列出在包中文件的狀態(意味著-l)文件的狀態包括正常、未安裝、替換。
--triggers, --triggerscripts
????顯示觸發器角本,它包含在包中。
校驗選項:
格式如下:
rpm {-V|--verify} [select-options] [verify-options]
????校驗在包中已經安裝且在rpm數據庫中帶有來自于中的元數據存儲的文件比較信息在這些東西中,校驗比較大小、MD5數、許可、類型、擁有者及每個文件的組。所有明細信息都將顯示。沒有從包中安裝的文件,例如:使用—excludedocs選項將文件文檔文件沒有安裝,則文檔文件將被默認忽略。
????包選擇選項與包查詢選項相同(包括象參數的包的說明文件)。別的選項的唯一校驗格式如下:
引用 --nodeps
???? 不校驗包的從屬部分。
--nodigest
???? 在讀時不校驗包或頭的摘要。
--nofiles
???? 不校驗包文件的屬性。
--noscripts
???? 不執行%verifyscript角本(if any)。
--nosignature
???? 當讀時不校驗包或頭的信號。
--nolinkto
--nomd5
--nosize
--nouser
--nogroup
--nomtime
--nomode
--nordev
不校驗相應文件的屬性。
輸出格式是一個8個字符的字符串,可能的屬性標記是:
引用 c %config 配置文件。
d %doc 文檔文件。
g %ghost file (也就是說文件內容不沒有包含在包的有效負荷中)。
l %license license文件。
r %readme readme文件。
從后面跟著文件名的包頭中,8個字符每個都指出在數據庫中屬性記錄值文件屬性的比較結果。句號"."意味著測試通過,而"?"說明沒有不能執行(也就是說文件許不能讀)。無論怎樣,這些字符都指出了校驗測試沒有成功。
S 文件大小不同
M 模式不同(包括許可和文件類型)
5 MD5數不同
D 設置主要/較小的不匹配數
L readLink(2) 路徑不匹配
U 用戶所屬關系不同
G 組所屬關系不同
T mTime不同。
數字符號和摘要校驗:
rpm數字符號命令的格式是:?
rpm --import PUBKEY ...
rpm {--checksig} [--nosignature] [--nodigest]
????PACKAGE_FILE ...
引用 --checksig選項檢查所有的包含在PACKAGE_FILE中的摘要和簽名,來確認包的完整性及來源。注意,無論包什么時候讀,簽名都要進行校驗,且--checksig對于校驗所有的與包相關的摘要和簽名都是很有用的。
????在沒有公鑰的情況下,數字符號不能校驗。使用--import將一個ascii公鑰加到你的rpm數據庫中。導入的公鑰存在于頭中,且key回響管理是象一個包管理一樣正確執行。例如,所有當前輸入的公鑰可以由下面的式子列出:
rpm -qa gpg-pubkey*
????當導入時關于指定的公鑰的說明,能被查詢所顯示。,下面是關于Red Hat GPG/DSA key的顯示信息:
rpm -qi gpg-pubkey-db42a60e
最后,公鑰可以在輸出后名象包一樣被刪除,下面是刪除Red Hat GPG/DSA key:
rpm -e gpg-pubkey-db42a60e
包簽名:
rpm --addsign|--resign PACKAGE_FILE ...
引用 --addsign和—resign選項產生和插入新的簽名給每一個指定的PACKAGE_FILE 包,用來代替所有存在的簽名。由于歷史的原因,有兩個選面,這兩者的行為沒有什么不同。
使用GPG簽名:
為了使用GPG為包做簽名,rmp必須被配置成運行GPG且可以找到有適當KEY的鍵環。默認情況下,rpm查找鍵環的方式與GPG方式相同。也就是$GNUPGHOME 環境變量。如果你的鍵環沒有定位到GPG預設的位置,那么你需要配置宏%_gpg_路徑到GPG鍵環指定的位置。
為了保證與舊版的GPG、PGP和rpm兼容,只有V3 OpenPGP簽名包被配置上了。DSA或者RSA的加密算法可以使用,但DSA是首選項。
如果你想要為你自己創建的包進行簽名,也需要創建自己的公鑰和私鑰對(參見GPG手冊)。你將也需要配置rpm宏。
%_signature
????簽名類型。僅支持gpg與pgp方式。
%_gpg_name
????你希望使用的給你的包進行簽名的鍵的“user”名。
例如,使用GPG使用類似于用戶"John Doe??;"從鍵環位置/etc/rpm/.gpg使用可執行的/usr/bin/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
顯示所有在rpmrc和macros配置文件中設置的選項中使用的rpm值。
引用 FTP/HTTP選項:
????Rpm能象FTP和/或HTTP客戶端那樣,所以包能從internet中進行查詢和安裝。安裝、更新和查詢包文件的操作可以作為一個ftp或http風格的URL指定。
ftp://USER:PASSWORD@HOST:PORT/path/to/package.rpm
????如果忽略了:PASSWORD部分,將會提示輸入密碼(針對每個用戶/主機對)。如果用戶和密碼都忽略,ftp將使用匿名(anonymous)方式。實際上,ftp進行的是被動的傳輸。
Rpm允許在ftp的URLs中使用下面的選項:
--ftpproxy HOST
????主機HOST將做為所有傳輸的代理服務器,允許用戶穿過那些使用代理的系統的防火墻去ftp。這個選項也可以通過使用宏%_ftpproxy來配置。
--ftpport HOST
????ftp使用連接到ftp代理服務器的TCP??PORT號來代替默認值。這個選項也可以由宏%_ftpport來指定。
Rpm允許以下面的格式使用http URLs:
--httpproxy HOST
?????? 主機HOST將作為所有http傳輸的代理服務器。這個選項也可以由宏%_httpproxy指定。
--httpport PORT
????http使用連接到http代理服務器的TCP??PORT號來代替默認值。這個選項也可以由宏%_httpport來指定。
三、后續說明
執行rpm構建:
rpm的構建模式目前使用/usr/bin/rpmbuild進行。雖然由 popt別名提供的兼容性已經足夠了,但還不是完美的。因此通過popt別名的兼容性目前正在被從rpm中刪除。安裝rpmbuild包,可參見rpmbuild(8)。在rpm(8)中可以找到所有的當前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 --short-circuit????rpmb --short-circuit
相關日志
[原]使用Mock 實現跨平臺跨發行版編譯RPM
[原]創建VPS OS模板
[原]RDAC的spec生成rpm腳本
[原]關于rpm打包中的條件判斷
總結
以上是生活随笔為你收集整理的rpm命令选项中文说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用GPG校验sign签名
- 下一篇: linux下的trap命令