名稱
rpm - RPM 軟體包管理器總覽
查詢和驗證軟體包:
rpm {-q|--query} [select-options] [query-options]安裝、升級和解除安裝軟體包:
rpm {-i|--install} [install-options] PACKAGE_FILE ...[ --notriggers] [--test] PACKAGE_NAME ...
雜項:
rpm --showrc選擇相關選項
[ PACKAGE_NAME] [-a,--all] [-f,--file FILE ]
[ -g,--group GROUP] {-p,--package PACKAGE_FILE ]
[ --hdrid SHA1] [--pkgid MD5] [--tid TID]
[ --querybynumber HDRNUM] [--triggeredby PACKAGE_NAME ]
[ --whatprovides CAPABILITY] [--whatrequires CAPABILITY ]
查詢相關選項
[ --changelog] [-c,--configfiles] [--conflicts]
[ -d,--docfiles] [--dump] [--filesbypkg] [-i,--info]
[ --last] [-l,--list] [--obsoletes] [--provides]
[ --qf,--queryformat QUERYFMT] [-R,--requires]
[ --scripts] [-s,--state] [--triggers,--triggerscripts]
驗證相關選項
[ --nodeps] [--nofiles] [--noscripts]
[ --nodigest] [--nosignature]
[ --nolinkto] [--nofiledigest] [--nosize] [--nouser]
[ --nogroup] [--nomtime] [--nomode] [--nordev]
[ --nocaps]
安裝相關選項
[ --allfiles] [--badreloc] [--excludepath OLDPATH]
[ --excludedocs] [--force] [-h,--hash]
[ --ignoresize] [--ignorearch] [--ignoreos]
[ --includedocs] [--justdb] [--nocollections]
[ --nodeps] [--nodigest] [--nosignature]
[ --noorder] [--noscripts] [--notriggers]
[ --oldpackage] [--percent] [--prefix NEWPATH]
[ --relocate OLDPATH=NEWPATH]
[ --replacefiles] [--replacepkgs]
[ --test]
描述
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>+ 這樣也升級包, 但只有在系統存在一個更早版本的包時候才使用這 種方式.- --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]選項, 格式串跟在選項後面.- <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資料庫的檔案資訊做比較, 以此來核實包. 對於別的東西,則??? 任何的差異都會展示.包的說明選項與查詢選項相同.- --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
rpm --resign <binary_package_file>+PGP 簽名
要使用簽名特性,RPM必須要能夠執行PGP(要安裝了PGP並且你可以訪問它), 而且還需PGP能找到一個帶有RPM公鑰的公鑰環. 預設情況下,RPM使用PGP的預設設定(著名的PGPPATH)來查詢鑰環. 如果你的鑰環並不在PGP所期望它們處在的地方,則你需要配置宏- _pgp_path
- 將其設為要使用的PGP鑰環所在的位置.
- _signature
- 目前只支援pgp.還有使用者名稱宏:
- _pgp_name
- 指明想要使用其鍵去簽名你的包的使用者. 在生成包的時候,可以將--sign加到命令列裡.這樣只需給出你的口令短語, 就可以在生成包的同時對其簽名. 比如,要想以使用者"John Doe <[email protected]>"的身份,用在 /etc/rpm/.pgp的鑰環,去簽名一個包,就應該將
- %_signature
- pgp
- %_pgp_name
- /etc/rpm/.pgp
- %_pgp_name
- John Doe <[email protected]>"
重新生成資料庫選項
rpm重建資料庫的命令是 rpm --rebuilddb 要重建一個新的資料庫,可以: rpm --initdb 對這些模式唯一的選項是 --dbpath 和 --root.SHOWRC
執行 rpm --showrcFTP/HTTP選項
RPM包括簡單的FTP和HTTP客戶端程式,這樣可以簡化那些從internet取得的包的安裝和查詢. 用於安裝,升級,以及查詢操作的包檔案可以說明為ftp或者http格式的URL:- --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 <[email protected]> Jeff Johnson <[email protected]> Erik Troan <[email protected]>
[中文版維護人]
mapping <email>[中文版最新更新]
2001/7/21《Linuxfourm 中文MAN-PAGE計劃》
http://cmpp.linuxforum.net跋
本頁面中文版由中文 man 手冊頁計劃提供。2002年6月9日 | Red Hat, Inc. |