other languages
rpm(8) | Red Hat Linux | rpm(8) |
NAME¶
rpm - Red Hat 包管理器總覽¶
rpm [選項]描述¶
rpm是一個很有用的包管理器, 可以用於生成, 安裝, 查詢, 核實, 更新以及卸載單個套件. 一個 包通常包括一個檔案檔以及關於包 的信息, 比如名字, 版本, 描述等. 必須選取下列基本模式中一個: 初始化數據庫, 重新生成數據庫, 生成包, 重新編譯包, 從Tar包生成RPM包, 查詢, 顯示查詢標簽, 安裝, 更新, 卸載, 核實, 簽名檢查, 再簽名, 添加簽名, 設置所有者和組 以及 顯示配置. 數據庫維護:普通選項¶
這些選項可以各種不同的方式使用.- -vv
- 將列印出許多難以閱讀的調試信息.
- --quiet
- 列印盡可能少的信息 - 普通只展示錯誤訊息.
- --help
- 給出比常規更多的用法信息.
- --version
- 在單獨一個行裏給出所用 rpm 的版本號
- --rcfile <filelist>
- 在<filelist>裏列出了一些檔案, 各檔案之間以冒號分隔, rpm 順序讀取這些檔案以獲得配置信息. <filelist>預設 是 /usr/lib/rpm/rpmrc:/etc/rpmrc:~/.rpmrc. 列表中的第一個檔案(/usr/lib/rpm/rpmrc)且只有這個檔案 必須存在, 代字符~指向 $HOME的值.
- --root <dir>
- 對所有操作均將<dir>視為系統根目錄. 注意這意味著對數 據庫的讀或修改操作都將是在 <dir>目錄下進行, 並且稿本 的 pre或post操作都是在做了以 <dir>為根目錄的chroot() 之後進行.
- --dbpath <path>
- 依照<path>使用RPM的數據庫.
- --justdb
- 更新只針對數據庫,而不是整個檔案系統.
- --ftpproxy <host>, --httpproxy <host>
- 設<host>為FTP或HTTP的代理伺服器. 參閱 FTP/HTTP 選項.
- --ftpport <port>, --httpport <port>
- 設<port>為FTP或HTTP的代理伺服器的端口. 參閱 FTP/HTTP 選項.
- --pipe <cmd>
- 通過管道將rpm的輸出輸入到命令<cmd>.
安裝和升級選項¶
通常的rpm安裝命令如下: rpm -i [install-options] <package_file>+ 這樣將安裝一個新的包. 通常的rpm升級命令如下: rpm -U [install-options] <package_file>+ 這樣將當前已安裝的包升級或新安裝到一個新的RPM版本. 升級和 安裝是一樣的, 區別在於升級要將所有別的版本的包從系統移去. rpm [-F|--freshen] [install-options] <package_file>+ 這樣也升級包, 但只有在系統存在一個更早版本的包時候才使用這 種方式. 如果包在安裝之前要先進行下載, <package_file>應該指明為一個 ftp或者http URL. 要得到關於RPM包生成的ftp和http支持的信息, 可以參閱 FTP/HTTP 選項.- --force
- 與使用--replacepkgs, --replacefiles, 以及 --oldpackage效果相同
- -h, --hash
- 包檔如果沒有被解包, 列印50個破折號. 配合 -v使用可以 使得有更好的展示.
- --oldpackage
- 允許用舊版本的包取代較新的版本.
- --percent
- 給出檔案從包檔解包的百分比. 該項的作用是為了使rpm相 比於別的工具更容易使用.
- --replacefiles
- 即使要安裝的包會取代別的已安裝包的檔案, 也安裝該包.
- --replacepkgs
- 即使包的部分內容已安裝在系統裏,也安裝該包.
- --allfiles
- 安裝或升級包裏所有的缺失檔案,不管其是否存在.
- --nodeps
- 在安裝或升級包之前不做依賴檢查.
- --noscripts
- 不執行安裝前或安裝後稿本
- --notriggers
- 不執行由該包的安裝所激發的稿本
- --ignoresize
- 安裝該包前不檢查mount檔案系統是否有足夠的磁碟空間.
- --excludepath <path>
- 不安裝檔名以路徑<path>開頭的檔案.
- --excludedocs
- 不安裝任何標記為文件的檔案(包括手冊頁及文本信息檔案).
- --includedocs
- 安裝文件檔案, 這是預設的操作.
- --test
- 不安裝包, 只是簡單地檢查並報告可能的沖突.
- --ignorearch
- 允許安裝或升級其體系與主機不匹配的二進制RPM包.
- --ignoreos
- 允許安裝或升級其作業系統與主機不匹配的二進制RPM包.
- --prefix <path>
- 對於可浮動包, 這將把安裝前綴設置到 <path>.
- --relocate <oldpath>=<newpath>
- 將檔案從<oldpath>改置到<newpath>, 這使得可以浮動包.
- --badreloc
- 與--relocate配合使用, 強制改置不可浮動的包.
- --noorder
- 安裝時對包不重新排序, 正常在安裝時應該重新排序包列 表, 以滿足依賴性.
查詢選項¶
rpm的查詢命令通常的格式如下: rpm -q [query-options] 可以制定包信息的列印格式, 這時要用 [--queryformat|-qf]選項, 格式串跟在選項後面. 查詢格式由標準 printf(3)格式的版本決定. 格式由靜態字符串 (包括除了換行符, tab, 以及其它的特殊字符之外的標準C字符), 以及 printf(3)類型格式符. 如果 rpm已經知道列印類型, 則類型說明就必須被忽略, 並且以要列印的頭部tag的名字取代, 該名字被括在 {}之間. 而且tag的 RPMTAG_部分也被忽略. 可以用 :typetag來改變輸出格式.當前支持的有如下類型: octal, date, shescape, perms, fflags, 以及 depflags. 例如,要只列印被查詢包的名字,可以用 %{名稱}作為格式字符串. 要在兩個欄裏列印包名及分布信息,可以用 %-30{名稱}%{分布}. 當被 --querytags參數激發時,rpm將列出所有tags. 查詢選項有兩種子設置: 包選擇和信息選擇. 包選擇選項:- <package_name>
- 查詢名為<package_name>的安裝包.
- -a, --all
- 查詢所有安裝的包.
- --whatrequires <capability>
- 查詢所有需要<capability>才能提供適當功能的包.
- --whatprovides <virtual>
- 查詢所有提供<virtual>功能的包.
- -f <file>, --file <file>
- 查詢擁有檔案<file>的包.
- -g <group>, --group <group>
- 查詢屬於???組<group>的包
- -p <package_file>
- 查詢一個沒有安裝的包<package_file>. <package_file>可以被說明為ftp或http URL,這時包頭會被下載並被查詢. 要得到關於RPM生成的ftp和http客戶端支持的信息,請參閱 FTP/HTTP OPTIONS
- --specfile <specfile>
- 像對待一個包一樣Parse並查詢<specfile>. 雖然不是所有的信息(例如檔案列表)可用,這種查詢類型 允許rpm在不用寫一個specfile parser的情況下從spec files提取信息.
- --querybynumber <num>
- 直接查詢<num>數據庫入口,該選項在調試時很有用處.
- --triggeredby <pkg>
- 查詢由包<pkg>所激發的包.
- -i
- 展示包信息,包括名字,版本,以及描述.???
- -R, --requires
- 列出該包所依賴的別的包.
- --provides
- 列出該包所提供的功能.
- --changelog
- 展示該包的變更信息.
- -l, --list
- 列出該包的檔案.
- -s, --state
- 展示該包各檔案的狀態信息,因此該選項實際隱含了-l選項. 檔案狀態可以是如下之一: normal, not installed, 或者 replaced.
- -d, --docfiles
- 只列出文件檔案(隱含-l選項).
- -c, --configfiles
- 只列出配置檔案(隱含-l選項).
- --scripts
- 如果有的話,就列出該包裏作為安裝或卸載過程一部分的特殊shell稿本.
- --triggers, --triggerscripts
- 如果有的話,展示該包包含的激發子稿本.
- --dump
- 如下的啞檔案信息: path size mtime md5sum mode owner group isconfig isdoc rdev symlink. 該選項必須至少配合如下選項之一: -l, -c, -d使用.
- --last
- 按包的安裝時間進行排序,這使得最新的包在序列頂部.
- --querybypkg
- 列出每個包裏的所有檔案.
- --triggerscripts
- 顯示所選包的所有激發子稿本.
核實選項¶
rpm -V|-y|--verify [verify-options] 將所安裝包的檔案信息和源發包的檔案信息以及在rpm數據庫的檔案信息做比較, 以此來核實包. 對於別的東西,則??? 任何的差異都會展示.包的說明選項與查詢選項相同. 對於不是從包安裝的檔案,例如在安裝的時候用" --excludedocs" 選項排除了的文件檔案,將在沒有提示的情況下被忽略掉. 核實選項可以使用如下模式:- --nofiles
- 核實時忽略缺失檔案
- --nomd5
- 核實時忽略MD5校驗錯誤
- --nopgp
- 核實時忽略PGP校驗錯誤
- --nofiles
- 核實時忽略缺失檔案 輸出的格式是一個八個字符的字符串,和一個可能有的" c", 指明後面是一個配置檔案,以及後面的檔名. 八個字符中的每一個都代表著一個檔案屬性與保存在RPM的數據庫中的屬性紀錄值的比較結果. 單個的" ."(句號)表明檢查通過.下列字符代表特定檢查的失敗:
- 5
- MD5校驗和
- S
- 檔案大小
- L
- 符號連接
- T
- 修改時間
- D
- 設備
- U
- 使用者
- G
- 組
- M
- 模式(包括許可和檔案類型)
簽名檢查¶
通常的rpm簽名檢查命令如下: rpm --checksig <package_file>+ 這將檢查包 <package_file>的PGP簽名以確保其完整性和源發性. 可以從配置檔案讀取PGP配置信息.細節請查閱 PGP 簽名 部分.卸載選項¶
rpm卸載命令的通常格式如下: rpm -e <package_name>+- --allmatches
- 將移去與<package_name>相匹配的所有版本的包.正常的話,如果<package_name>與多個包相匹配,就會給出錯誤訊息.
- --noscripts
- 不執行安裝前或安裝後稿本.
- --notriggers
- 不執行由移去該包所激發的稿本
- --nodeps
- 卸載前不檢查依賴性
- --test
- 不真正卸載任何東西,只是遍歷該動作.配合-vv選項會很有用處.
生成選項¶
The general form of an rpm build command isrpm -[b|t]O [build-options] <package_spec>+ The argument used is -b if a spec file is being used to build the package and -t if RPM should look inside of a gzipped (or compressed) tar file for the spec file to use. After the first argument, the next argument ( O) specifies the stages of building and packaging to be done and is one of: rpm通常的生成選項如下:
rpm -[b|t]O [build-options] <package_spec>+
- -bp
- Executes the "%prep" stage from the spec file. Normally this involves unpacking the sources and applying any patches.
- -bl
- Do a "list check". The "%files" section from the spec file is macro expanded, and checks are made to verify that each file exists.
- -bc
- Do the "%build" stage from the spec file (after doing the prep stage). This generally involves the equivalent of a "make".
- -bi
- Do the "%install" stage from the spec file (after doing the prep and build stages). This generally involves the equivalent of a "make install".
- -bb
- 生成一個二進制包(在完成prep, build, 以及 install階段之後)
- -bs
- 只生成源包(在完成prep, build, 以及 install階段之後)
- -ba
- 生成二進制包和源包(在完成prep, build, 以及 install階段之後)
- --short-circuit
- 忽略導致specified階段(比如,忽略所有導致specified階段的階段). 只有與 -bc 以及 -bi合用才有效.
- --timecheck
- 設置"timecheck"的值(0-?).該值也可以通過定義宏"_timecheck"來配置. timecheck值以秒為單位,表示一個包生成的最大年齡.如果時間超過了該值, 則對所有檔案皆給出警告訊息.
- --clean
- 在包完成之後,移去生成樹.
- --rmsource
- 在完成包的生成之後移去源和spec檔案 (也可以單獨使用,比如:" rpm --rmsource foo.spec").
- --test
- 不執行任何生成階段.在測試spec檔案時很有用處.
- --sign
- 在包中嵌入一個PGP簽名.該簽名可以用來核實該包的完整性和源發性. 配置細節可以察看 PGP 簽名 一節.
- --buildroot <dir>
- 在生成包的時候,用目錄<dir>覆蓋包的生成根目錄tag.
- --target <platform>
- 在生成包的時候,將<platform>解釋為arch-vendor-os,並且相應地設置 宏 _target, _target_arch 以及 _target_os.
- --buildarch <arch>
- 在生成包的時候,將architecture設置到<arch>. 該選項在RPM 3.0中由於 --target 的出現而被拋棄.
- --buildos <os>
- 在生成包的時候,將architecture設置到<os>. 該選項在RPM 3.0中由於 --target 的出現而被拋棄.
重新生成以及重新編譯選項¶
There are two other ways to invoke building with rpm: 有兩種不同的方法用rpm重新生成包: rpm --recompile <source_package_file>+ rpm --rebuild <source_package_file>+ 當以這種方式激發的時候, rpm安裝指明的源包,並且完成prep,compile,install工作. 另外, --rebuild生成一個新的二進制包. 當包的生成完成的時候,生成所用目錄被移去(就如同使用了 --clean), 而且該包的源和spec檔案也要移走.簽名一個已存在的RPM¶
rpm --resign <binary_package_file>+ 該選項生成並將新簽名插入所列出的包裏.已存在的簽名會被移走. rpm --addsign <binary_package_file>+ 該選項生成並將新簽名附加到所列出的包的簽名之後.PGP 簽名¶
要使用簽名特性,RPM必須要能夠運行PGP(要安裝了PGP並且你可以訪問它), 而且還需PGP能找到一個帶有RPM公鑰的公鑰環. 預設情況下,RPM使用PGP的預設設置(著名的PGPPATH)來查找鑰環. 如果你的鑰環並不在PGP所期望它們處在的地方,則你需要配置宏- _pgp_path
- 將其設為要使用的PGP鑰環所在的位置.
- _signature
- 目前只支持pgp.還有使用者名宏:
- _pgp_name
- 指明想要使用其鍵去簽名你的包的使用者. 在生成包的時候,可以將--sign加到命令行裏.這樣只需給出你的口令短語, 就可以在生成包的同時對其簽名. 比如,要想以使用者"John Doe <jdoe@foo.com>"的身份,用在 /etc/rpm/.pgp的鑰環,去簽名一個包,就應該將
- %_signature
- pgp
- %_pgp_name
- /etc/rpm/.pgp
- %_pgp_name
- John Doe <jdoe@foo.com>"
重新生成數據庫選項¶
rpm重建數據庫的命令是 rpm --rebuilddb 要重建一個新的數據庫,可以: rpm --initdb 對這些模式唯一的選項是 --dbpath 和 --root.SHOWRC¶
運行 rpm --showrc 展示一些設置在 rpmrc檔案裏的值,RPM所有選項都會利用這些值.FTP/HTTP選項¶
RPM包括簡單的FTP和HTTP客戶端程式,這樣可以簡化那些從internet取得的包的安裝和查詢. 用於安裝,升級,以及查詢操作的包檔案可以說明為ftp或者http格式的URL: ftp://<user>:<password>@hostname:<port>/path/to/package.rpm 如果忽略掉 :password部分,會提示要求給出口令(每個使用者/主機名對一次) 如果使用者名和口令都忽略了,就使用匿名ftp. 總是使用消極(PASV) ftp傳送. RPM允許使用下列操作輔助ftp URLs- --ftpproxy <hostname>
- 主機<hostname>將被作為所有ftp傳輸的代理伺服器使用, 這樣允許使用者通過使用了代理系統的防火牆機器來做ftp傳輸. 該選項也可以通過配置宏 _ftpproxy來指明.
- --ftpport <port>
- 用該TCP<端口>號取代預設的端口去連接代理ftp伺服器. 該選項也可以通過配置宏 _ftpport來指明.
- --httpproxy <hostname>
- 將主機<主機名>作為所有http傳輸的代理伺服器使用. 該選項可以通過配置宏 _httpproxy來指明.
- --httpport <port>
- 用該TCP<端口>號取代預設的端口去連接代理http伺服器. 該選項也可以通過配置宏 _httpport來指明.
檔案¶
/usr/lib/rpm/rpmrc /etc/rpmrc ~/.rpmrc /var/lib/rpm/packages /var/lib/rpm/pathidx /var/lib/rpm/nameidx /tmp/rpm*
另見¶
glint(8), rpm2cpio(8) http://www.rpm.org/作者¶
Marc Ewing <marc@redhat.com> Jeff Johnson <jbj@redhat.com> Erik Troan <ewt@redhat.com>
[中文版維護人]¶
mapping <email>[中文版最新更新]¶
2001/7/21《Linuxfourm 中文MAN-PAGE計劃》¶
http://cmpp.linuxforum.net1998年12月22日 | Red Hat Software |