Ict-創新/LPI/102.5
考生應該能夠使用基於 RPM 的工具進行包管理。
關鍵知識領域
- 使用 RPM 和 YUM 安裝、重新安裝、升級和刪除包。
- 獲取有關 RPM 包的資訊,例如版本、狀態、依賴項、完整性和簽名。
- 確定一個包提供哪些檔案,以及找到哪個包包含特定檔案。
一些 Linux 發行版使用“Red Hat Package Manager”簡稱 rpm 來管理其所有發行版軟體。RPM 維護一個詳細的資料庫,其中包含系統中安裝的所有軟體。
RPM 包命名
雖然沒有嚴格的約定,但大多數 rpm 包名按以下格式形成:
name-version-release.architecture.rpm
架構名稱可以指示所包含二進位制檔案適用於哪個計算機架構(例如 i386、ppc、ia64、noarch),或者它可以指示該包包含原始碼(src)。
主模式和次模式
一些簡短的選項名稱相似,但它們在命令列上的位置不同,執行的操作也不同。第一個選項與其他選項的區別在於它們的位置。
給rpm的第一個選項處於主模式。例如在 rpm -iv A.rpm 中,選項 'i' 是一個主選項,將導致安裝包A。
類似地,不在第一個位置的選項處於次模式。例如在 rpm -qpi A.rpm 中,選項 'i' 是一個次模式,將從包A中獲取資訊,例如作者和許可證型別。
以下是rpm的主模式選項。
| 簡寫 | 長格式 | 描述 |
| -i | –install | 安裝包 |
| -U | –update | 更新或安裝包 |
| -F | --freshen | 僅更新已安裝的包 |
| -V | --verify | 檔案大小、MD5、許可權、型別... |
| -q | --query | 查詢已安裝/未安裝的包和檔案 |
| -e | --erase | 解除安裝包 |
以下是rpm的次模式選項。
| 應用於所有已安裝的包 | |
| 與q一起列出configuration 檔案 | |
| 與q一起列出documentation 檔案 | |
| 與q一起查詢哪個包安裝了給定檔案 | |
| 在處理時新增雜湊值 | |
| 與q一起列出關於包的information | |
| 與q一起列出包中的所有檔案和目錄 | |
| 與q一起指定對包檔案執行查詢 | |
| 詳細 |
查詢模式
| 包檔案 | |
| 已安裝的包 | |
| 檔案 |
額外的選項將允許您獲取有關所有已安裝檔案的資訊–l、文件–d配置檔案–c等...
例如,我們考慮包routed-0.17.i386.rpm。我們可以查詢該包並在安裝之前使用l選項列出其內容,如下所示
|
# rpm –qpl routed-0.17.i386.rpm |
安裝此包後,我們可以使用以下命令查詢已安裝的包
|
# rpm –ql routed-0.17 或者 # rpm –ql routed |
最後,如果我們想找出哪個包安裝了檔案/usr/sbin/routed,可以使用以下命令查詢 rpm 資料庫
|
# rpm –qf /usr/sbin/routed |
特殊選項
--nodeps無論依賴項如何,都安裝包
--force 強制升級
--test不實際安裝或升級,僅列印到標準輸出
--requires PACKAGE與q一起列出包所需的 capabilities
--whatrequires CAPABILITY與q一起列出需要該 capabilities 的包
包簽名
您可以檢查每個作為專案的一部分分發的包的簽名。例如,要載入所有參與 Fedora 專案的開發人員的金鑰,請執行以下操作(只執行一次)
|
# rpm –-import /usr/share/rhn/RPM-GPG-KEY-fedora |
您現在可以從映象專案 RPM 的 FTP 站點下載任何包。例如,我們從 ftp.mirror.ac.uk 的 Fedora 子目錄中下載了zlib-1.2.1.1-2.1.i386.rpm。接下來,我們檢查檔案的真實性
|
# rpm --checksig /home/adrian/zlib-1.2.1.1-2.1.i386.rpm # /home/adrian/zlib-1.2.1.1-2.1.i386.rpm: (sha1) dsa sha1 md5 gpg OK |
包完整性
下一個命令檢查包bash的完整性
|
# rpm –V bash |
這將返回空值。接下來,我們以 root 使用者身份執行以下操作
|
# chown bin /bin/bash # chmod 775 /bin/bash |
如果我們再次檢查bash的完整性,這次我們將得到
|
# rpm –V bash .M...U.. /bin/bash |
包管理器已將bash包中所有檔案的當前狀態與儲存在資料庫中的這些檔案的已知原始狀態進行比較。對/bin/bash的更改已被識別。
透過在'V'(--verify)之後新增'a'(--all)選項,可以驗證系統中安裝的所有包的完整性
–verify 選項對每個檔案執行許多測試;當測試透過時,使用以下字元(列在下面)來標識錯誤
| 測試成功 | |
| 測試無法執行 | |
| 檔案大小已更改 | |
| 許可權模式或檔案型別已更改 | |
| 檔案的 MD5 校驗和已更改 | |
| 裝置主/次號不匹配 | |
| 損壞的符號連結 | |
| 檔案的使用者所有者已更改 | |
| 檔案的組所有者已更改 | |
| mtime(修改時間)已更改 |
Yum 是許多基於 rpm 的發行版的預設包管理器,它允許您安裝、更新和刪除 rpm 包,而無需自己擔心解決依賴關係。Yum 使用外部儲存庫來提供有關可用包及其依賴關係的元資料(以索引檔案的形式),以及儲存將自動下載以滿足安裝請求的 rpm 包。儲存庫可以是網站或目錄,這些網站或目錄以 yum 預期的方式格式化。
yum 最常見的命令是
install – 安裝包,自動解決和安裝依賴關係。以下命令將安裝 tsclient 包及其依賴項。
|
# yum install tsclient |
此命令將安裝“mysql 資料庫組”中的所有軟體包,其中將包括 mysql 伺服器以及管理和管理工具。
|
# yum groupinstall “mysql database” |
update – 更新可用包列表,並將系統上所有已安裝的包更新到最新的可用版本。
|
# yum update |
search – 搜尋可用 rpm 包列表。以下命令將按名稱搜尋包。
|
# yum list tsclient |
如果您不知道包的名稱(這通常是這種情況),則可以按關鍵字搜尋包。search 命令還接受搜尋條件中的萬用字元。
|
# yum search PalmPilot |
erase/remove – 從系統中刪除包。Erase 是一個更安全的選項,因為 remove 可能會刪除其他包所需的依賴項。下面我們刪除 tsclient 包
|
# yum remove tsclient |
我們也可以刪除組中的所有包。
|
# yum groupremove “mysql database” |
Yum 在 /etc/yum.conf 檔案中配置,儲存庫透過 /etc/yum.repos.d/ 目錄進行管理。要新增額外的儲存庫,請在系統上的 /etc/yum.repos.d/ 目錄中放置一個定義檔案。包提供商在其網站上提供了其儲存庫的定義檔案。您也可以按照正確的檔案格式手動建立儲存庫檔案。要停用儲存庫,可以在儲存庫定義檔案中新增行 enable=0。如果您希望永久刪除儲存庫,請刪除定義檔案並清除 yum 快取目錄 /var/cache/yum/。每次執行“yum update”時都會更新快取目錄
yumdownloader 是一個從 Yum 倉庫下載 RPM 包的程式。它用於下載 RPM 包而不將其安裝到系統上。這對於從更快連線下載軟體包,然後將其複製到連線較慢的機器上進行安裝非常有用。與 yum downloader 經常使用的引數是
- destdir DIR - 指定下載的目標目錄。預設設定為當前目錄。
- resolve - 下載 RPM 時,解析依賴項並下載所需的軟體包。
使用的檔案、術語和工具:* rpm
- rpm2cpio
- /etc/yum.conf
- /etc/yum.repos.d/
- yum
- yumdownloader