rpm 中文手冊

RPM(8)                                     System Manager's Manual                                    RPM(8)

名字
       rpm - RPM 軟件包管理器

語法
   查詢軟件包:
       rpm {-q|--query} [select-options] [query-options]

   校驗軟件包:
       rpm {-V|--verify} [select-options] [verify-options]

   安裝軟件包:
       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] [--test] PACKAGE_NAME ...

   其餘雜項:
       rpm {--querytags|--showrc}
       rpm {--setperms|--setugids} PACKAGE_NAME ...


   select-options
        [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]

   query-options
        [--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]

   verify-options
        [--nodeps] [--nofiles] [--noscripts] [--nodigest] [--nosignature] [--nolinkto] [--nofiledigest]
        [--nosize] [--nouser] [--nogroup] [--nomtime] [--nomode] [--nordev] [--nocaps]

   install-options
        [--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 是一個強大的軟件包管理器,能夠用來構建、安裝、查詢、校驗、升級、卸載單獨的軟件包。
       一個"包"包括文件的歸檔以及用來安裝和卸載歸檔中文件的元數據。
       元數據包括輔助腳本、文件屬性、以及相關的描述性信息。
       軟件包有兩種:
       二進制包,用來封裝已經編譯好的二進制文件;
       源代碼包,用來封裝源代碼和要構建二進制包須要的信息。

       必須選擇下列"模式"之一:
       Query(查詢), Verify(校驗), Install/Upgrade/Freshen(安裝/升級/更新), Uninstall(卸載),
       Set Owners/Groups(設置屬主/屬組), Show Querytags(顯示查詢標記), Show Configuration(顯示配置)

   通用選項
       下列選項能夠用於全部不一樣的模式。

       -?, --help
              打印詳細的幫助信息

       --version
              打印一行詳細的版本號信息

       --quiet
              輸出儘量少的信息,一般只有錯誤信息纔會顯示出來。

       -v     輸出冗餘信息,例如進度之類的信息。

       -vv    輸出大量冗長的調試信息

       --rcfile FILELIST
              FILELIST 中冒號分隔的每一個文件都被 rpm 按順序讀取,從中得到配置信息。
              只有列表中的第一個文件必須存在,波浪線將被替換爲 $HOME 。默認值是:
              /usr/lib/rpm/rpmrc:/usr/lib/rpm/redhat/rpmrc:/etc/rpmrc:~/.rpmrc

       --pipe CMD
              將 rpm 的輸出經過管道送到 CMD 命令。

       --dbpath DIRECTORY
              使用 DIRECTORY 中的數據庫,而不是默認的 /var/lib/rpm

       --root DIRECTORY
              以 DIRECTORY 做爲根文件系統進行操做。這意味着將使用 DIRECTORY 中的數據庫來進行依賴性檢測,
              而且任何操做(好比安裝時的 %post 和構建時的 %prep)都將 chroot 到 DIRECTORY 下執行。

       -D, --define='MACRO EXPR'
              將 MACRO 宏的值定義爲 EXPR

       --undefine='MACRO'
              撤銷 MACRO 宏

       -E, --eval='EXPR'
              打印出值 EXPR 對應的宏

   安裝/升級/更新選項
       下列選項中的 PACKAGE_FILE 既能夠是二進制的 rpm 文件,
       也能夠是 ASCII 格式的軟件包清單文件(manifest)(參見"包選擇選項")。
       而且能夠指定爲 ftp 或 http 的 URL ,在這種狀況下,會在安裝或升級前自動下載指定的文件。
       詳見"FTP/HTTP 選項"以瞭解 rpm 內部對 ftp 與 http 客戶端的支持。

       安裝一個新軟件包的通常形式是:

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

       安裝或升級軟件包到新版本[與安裝相似,只是全部其餘版本都將被移除]:

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

       更新軟件包到新版本[僅當系統中確實存在老版本時,纔會升級軟件包,不然什麼也不作]:

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

       [注意]下文中只要提到"升級",就同時包含了"更新"在內。也就是說"更新"只是"升級"的一種特例。

       --allfiles
              安裝或升級軟件包中全部文件,即便它們可能應該被跳過。

       --badreloc
              與 --relocate 搭配使用,容許從新定位全部文件的路徑,
              而不只僅是二進制包中重定位提示(hint)包含的那些 OLDPATH 。

       --excludepath OLDPATH
              不安裝名字以 OLDPATH 開頭的文件。

       --excludedocs
              不安裝任何被標記爲文檔的文件(包括手冊頁和 texinfo)。

       --force
              與同時使用 --replacepkgs, --replacefiles, --oldpackage 的效果相同。

       -h, --hash
              在包被解壓時,輸出50個井號(#),與 -v|--verbose 配合使用,獲得漂亮一點的輸出。

       --ignoresize
              安裝前不檢查已掛載文件系統的空閒空間是否夠用。

       --ignorearch
              容許安裝或升級,即便二進制包的硬件架構與主機不匹配。

       --ignoreos
              容許安裝或升級,即便二進制包的操做系統與主機不匹配。

       --includedocs
              安裝文檔文件。這是默認行爲。

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

       --nodigest
              讀取時不校驗包或頭部的摘要信息。

       --nomanifest
              不將非包文件(non-package file)當作軟件包清單文件(manifest)處理。

       --nosignature
              讀取時不校驗包或頭部的簽名。

       --nodeps
              在安裝或升級前,不進行依賴性檢測。

       --noorder
              不爲安裝重排序。一般軟件包列表會被重排序,以知足依賴關係。

       --noscripts
       --nopre
       --nopost
       --nopreun
       --nopostun
              不執行對應的程序/腳本。
              單獨的一個 --noscripts 等價於同時使用 --nopre --nopost --nopreun --nopostun 的組合。
              它將會把 %pre, %post, %preun, %postun 段對應的程序/腳本所有關閉。

       --notriggers
       --notriggerin
       --notriggerun
       --notriggerprein
       --notriggerpostun
              不執行任何對應的觸發程序/腳本。
              單獨的一個 --notriggers 等價於同時使用 --notriggerprein --notriggerin --notriggerun --notriggerpostun 的組合。
              它將會把 %triggerprein, %triggerin, %triggerun, %triggerpostun 段對應的程序/腳本所有關閉。

       --oldpackage
              容許用舊軟件包替換新軟件包。

       --percent
              打印從軟件包中解壓文件的百分比。這是爲了使 rpm 在其餘工具中運行時更簡單一些。

       --prefix NEWPATH
              對於可重定位的包,將把軟件包重定位提示中全部以安裝前綴(prefix)開頭的文件路徑轉換爲以 NEWPATH 開頭。

       --relocate OLDPATH=NEWPATH
              對於可重定位的二進制包,將軟件包重定位提示中全部以 OLDPATH 開頭的文件路徑轉換爲以 NEWPATH 開頭。
              若是軟件包中有多個 OLDPATH 要重定位的話,這一選項可使用屢次。

       --replacefiles
              強制安裝軟件包,即便它將覆蓋其餘已安裝軟件包的文件。

       --replacepkgs
              強制安裝軟件包,即便其中有些軟件包已經被安裝到了系統中。

       --test 不安裝軟件包,僅僅檢測並報告可能的衝突。

   卸載選項
       卸載命令的通常形式是

       rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--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 段對應的程序/腳本所有關閉。

       --test 並不真正卸載任何東西,僅僅嘗試它們。與 -vv 選項聯合使用,在調試時頗有用。

   查詢選項
       查詢命令的通常形式是

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

       還可使用下面的選項指定軟件包信息的輸出格式:

        --qf|--queryformat QUERYFMT

       QUERYFMT 是格式字符串,是標準的 printf(3) 格式的修改版本。
       格式包括靜態字符串(包括標準的C語言轉義字符、新行符、跳格以及其餘特殊字符)以及 printf(3) 類型標記。
       由於 rpm 已知輸出類型,因此應當忽略類型標記,轉而使用包含在 {} 中的頭部標記名來代替。
       標記名是大小寫無關的,而且標記名中以 RPMTAG_ 開頭的部分能夠被忽略。

       可選的輸出格式可使用":tag"這樣格式的標記表示。當前支持的標記以下:

       :armor     以 ASCII 形式編碼的公鑰
       :arraysize 在數組標記中顯示單元數目
       :base64    使用 base64 編碼二進制數據
       :date      使用 strftime(3) 的 "%c" 格式
       :day       使用 strftime(3) 的 "%a %b %d %Y" 格式
       :depflags  格式化依賴比較操做符
       :deptype   格式化依賴類型
       :expand    對宏進行展開
       :fflags    格式化文件標記
       :fstate    格式化文件狀態
       :fstatus   格式化文件校驗狀態
       :hex       以16進制格式化
       :octal     以八進制格式化
       :perms     格式化文件權限
       :pgpsig    顯示簽名指紋和時間
       :shescape  對單引號進行轉義(爲了能夠在腳本中使用)
       :triggertype 顯示觸發器後綴
       :vflags    文件校驗標記
       :xml       以 XML 格式編碼數據

       例如,只輸出所查詢的軟件包的名稱,可使用 %{NAME} 做爲格式化字符串。
       要分兩列輸出軟件包名稱和發行版信息,能夠用 %-30{NAME}%{DISTRIBUTION}
       若是使用 --querytags 參數,rpm 將輸出它已知的全部標記列表。

       查詢的選項有兩個子集:選擇選項和查詢選項。

   包選擇選項[子集1]

       PACKAGE_NAME
              查詢名稱爲 PACKAGE_NAME 的已安裝軟件包

       -a, --all
              查詢全部已安裝的軟件包

       -f, --file FILE
              查詢 FILE 所屬的軟件包

       -g, --group GROUP
              查詢屬組爲 GROUP 的軟件包

       --hdrid SHA1
              查詢包含特定頭部標識符的軟件包。也就是不可變頭部區域的 SHA1 摘要信息。

       -p, --package PACKAGE_FILE
              查詢未安裝的軟件包(PACKAGE_FILE)。
              若是 PACKAGE_FILE 是一個 ftp/http 協議的 URL ,軟件包頭部將被下載並查詢。
              詳見"FTP/HTTP 選項"以瞭解 rpm 內部對 ftp 與 http 客戶端的支持。
              若是 PACKAGE_FILE 不是二進制文件,那麼將被看成 ASCII 格式的軟件包清單文件(除非使用了 --nomanifest 選項)。
              清單文件中以'#'開頭的是註釋行,其餘每行均可以包含以空格分隔的 glob 表達式(包括 URL),
              這些 glob 表達式將被擴展爲路徑,取代軟件包清單文件,做爲查詢的附加 PACKAGE_FILE 參數。

       --pkgid MD5
              查詢含有特定標識符的軟件包。也就是包的頭部以及有效內容的 MD5 摘要信息。

       --querybynumber HDRNUM
              直接查詢第 HDRNUM 個數據庫入口,僅用於調試。

       --specfile SPECFILE
              解析並查詢 SPECFILE ,就好像它是一個軟件包。儘管並不是全部信息均可得到(好比文件清單),
              但這種查詢容許 rpm 從 spec 文件中抽取信息,而沒必要本身再去寫一個解析器。

       --tid TID
              查詢包含給定 TID 事務標識符的軟件包。當前使用 unix 時間戳做爲事務標識符。
              任何在一次事務中安裝或卸載的軟件包都擁有相同的標識符。

       --triggeredby PACKAGE_NAME
              查詢被軟件包 PACKAGE_NAME 觸發的軟件包。

       --whatprovides CAPABILITY
              查詢提供了 CAPABILITY 功能的軟件包。

       --whatrequires CAPABILITY
              查詢全部須要 CAPABILITY 功能才能運行的軟件包。

   包查詢選項[子集2]

       --changelog
              顯示軟件包的變動信息

       -c, --configfiles
              只顯示配置文件(隱含 -l)

       --conflicts
              顯示此軟件包與哪些功能有衝突

       -d, --docfiles
              只顯示文檔文件(隱含 -l)

       --dump 轉儲文件下列信息(隱含 -l):path size mtime digest mode owner group isconfig isdoc rdev symlink

       --filesbypkg
              列出每一個所選軟件包中的文件

       -i, --info
              顯示軟件包信息,包括名稱、版本、描述。
              若是同時還使用了 --queryformat 選項,那麼就按照它指定的格式顯示。

       --last 列出軟件包時以安裝時間排序,最新的在上面。

       -L, --licensefiles
              只顯示許可證文件(隱含 -l)

       -l, --list
              列出軟件包中的文件

       --obsoletes
              列出被此軟件包廢棄的軟件包

       --provides
              列出軟件包提供的功能

       -R, --requires
              列出此軟件包所依賴的功能(一般是一個軟件包)

       --scripts
              列出軟件包自定義的小程序/腳本,他們是安裝和卸載等過程的一部分。

       -s, --state
              顯示軟件包中文件的狀態(隱含 -l)。狀態是 normal, not installed, replaced 之一。

       --triggers, --triggerscripts
              顯示軟件包中包含的觸發腳本,若是有的話。

   校驗選項
       校驗命令的通常形式是

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

       校驗軟件包,是指將已安裝的文件信息與保存在 rpm 數據庫中的元數據(來自於rpm包)進行比較。
       校驗將會比較每一個文件的大小、摘要信息(哈希值)、權限、類型、屬主與屬組。任何不一致的地方都將被顯示出來。
       軟件包中未安裝的文件(例如在安裝過程當中使用"--excludedocs"跳過的文檔),將被忽略。

       軟件包的選擇選項與軟件包查詢選項是相同的(包括以清單文件做爲參數)。其餘獨有的選項包括:

       --nodeps
              不校驗軟件包的依賴關係

       --nodigest
              讀取時不校驗軟件包或頭部的摘要信息(哈希值)

       --nofiles
              不校驗文件的任何屬性

       --noscripts
              不執行 %verifyscript 小程序/腳本(若是有的話)。

       --nosignature
              讀取時不校驗軟件包或頭部簽名

       --nolinkto
       --nofiledigest (之前是 --nomd5)
       --nosize
       --nouser
       --nogroup
       --nomtime
       --nomode
       --nordev
              不校驗相應的文件屬性

       輸出是9個字符的字符串,可能的屬性標記爲:

       c %config 配置文件
       d %doc 文檔文件
       g %ghost 佔位文件,也就是文件內容不包含在軟件包有效內容裏面
       l %license 許可證文件
       r %readme 說明文件

       從頭部開始,接下來是文件名,每9個字符表示將文件屬性與數據庫中記錄的值進行比較的結果。
       一個單獨的"."表示測試經過了,一個單獨的"?"表示測試可能沒法進行(例如,文件禁止了讀權限)。
       最後,粗體的字母表示相應的 --verify 測試失敗了:

       S 大小不一致
       M 模式不一致(包括權限和文件類型)
       5 MD5校驗和不一致
       D 主/次設備號不匹配
       L readLink(2) 路徑不匹配
       U User 屬主不一致
       G Group 屬組不一致
       T mTime 不一致
       P 功能不一致


   雜項命令
       rpm --showrc
              顯示 rpm 使用的、在 rpmrc 和 macros 配置文件中定義的選項的值。

       rpm --setperms PACKAGE_NAME
              設置 PACKAGE_NAME 軟件包中的文件權限

       rpm --setugids PACKAGE_NAME
              設置 PACKAGE_NAME 軟件包中的屬主/屬組


   FTP/HTTP 選項
       rpm 內置 FTP/HTTP 客戶端,能夠查詢或安裝互聯網上的軟件包。
       能夠安裝、升級、查詢用 URL 指定的軟件包文件,好比:

       ftp://USER:PASSWORD@HOST:PORT/path/to/package.rpm

       若是省略 :PASSWORD 部分,將爲每一個用戶名/主機對提示一次密碼。
       若是忽略了用戶名和密碼,將使用匿名FTP。在全部狀況下,都會使用被動FTP(PSAV)。

       rpm 容許在使用 ftp URL 時使用下面的選項:

       --ftpproxy HOST
              使用主機 HOST 做爲全部 FTP 傳輸的代理服務器,容許經過防火牆代理訪問 FTP 。
              這個選項也能夠用宏 %_ftpproxy 指定。

       --ftpport PORT
              鏈接到 FTP 代理服務器的 PORT 端口,而不是默認端口。
              這個選項也能夠用宏 %_ftpport 指定。

       rpm 容許在使用 http URL 時使用下面的選項:

       --httpproxy HOST
              使用主機 HOST 做爲全部 HTTP 傳輸的代理服務器,容許經過防火牆代理訪問 HTTP 。
              這個選項也能夠用宏 %_httpproxy 指定。

       --httpport PORT
              鏈接到 HTTP 代理服務器的 PORT 端口,而不是默認端口。
              這個選項也能夠用宏 %_httpport 指定。

歷史遺留問題
   執行 rpmbuild
       rpm "構建模式"以被移至 /usr/bin/rpmbuild 可執行文件中。
       請參見 rpmbuild(8) 文檔瞭解詳情。

文件
   rpmrc 配置文件
       /usr/lib/rpm/rpmrc
       /usr/lib/rpm/redhat/rpmrc
       /etc/rpmrc
       ~/.rpmrc

   Macro 配置文件
       /usr/lib/rpm/macros
       /usr/lib/rpm/redhat/macros
       /etc/rpm/macros
       ~/.rpmmacros

   數據庫
       /var/lib/rpm/Basenames
       /var/lib/rpm/Conflictname
       /var/lib/rpm/Dirnames
       /var/lib/rpm/Group
       /var/lib/rpm/Installtid
       /var/lib/rpm/Name
       /var/lib/rpm/Obsoletename
       /var/lib/rpm/Packages
       /var/lib/rpm/Providename
       /var/lib/rpm/Requirename
       /var/lib/rpm/Sha1header
       /var/lib/rpm/Sigmd5
       /var/lib/rpm/Triggername

   臨時文件
       /var/tmp/rpm*

參見
       popt(3),
       rpm2cpio(8),
       rpmbuild(8),
       rpmdb(8),
       rpmkeys(8),
       rpmsign(8),
       rpmspec(8),

       rpm --help

       http://www.rpm.org/


Red Hat, Inc.                                   13 February 2014                                          RPM-4.11.2(8)
相關文章
相關標籤/搜索