使用指令行工具管理軟體

目錄

4.1. 使用 Zypper
4.2. RPM — 套件管理員

摘要

本章介紹了兩個用於管理軟體的指令行工具︰Zypper 與 RPM。

使用 Zypper

Zypper 是用於安裝與更新套件的指令行工具。zypper 語法與 rug 語法類似。與 rug 相比,zypper 不需要視情境執行 zmd 精靈。如需有關 rug 相容性的詳細資訊,請參閱 http://en.opensuse.org/Zypper/Usage#Compatibility_with_Rug它在完成遠端軟體管理任務或透過外圍程序程序檔管理軟體時非常有用。

zypper 內建有說明綜覽︰

zypper help

一般使用情形

zypper 的一般語法為︰

zypper [global-options] command [command-options] [arguments] ...

括號中的部分為非必需。執行 zypper 的最簡單的方法就是輸入其名稱,後面跟著指令。例如,若要將所有需要的修補程式套用至系統類型︰

zypper update

此外,您還可以在指令之前輸入全域選項來從一或多個全域選項中進行選擇。例如,根據您的需要,--non-interactive 表示執行指令時不詢問任何問題︰

zypper --non-interactive update

若要使用特定於特殊指令的選項,請在指令之後輸入這些選項。例如,--auto-agree-with-licenses 表示將所有需要的修補程式套用至系統時不要求確認任何授權—系統已提前讀取所有授權。

zypper update --auto-agree-with-licenses

某些指令需要一個或多個引數︰

zypper install mplayer

某些選項也需要引數。以下指令行表示以較新套件更新系統︰

zypper update -t package

以上所有組合均表示,僅使用 factory 儲存庫進行安裝且詳加說明︰

zypper -v install --repo factory mplayer amarok

您也可以使用 +/-~/! 切換鍵一次性安裝及移除套件。

zypper install emacs -vim

或︰

zypper remove emacs +vim

或者如果您選擇對指定的第一個套件使用 -,則必須在它前面輸入 -- 以防止系統將其當成指令選項︰

zypper install -- -vim emacs

使用 Zypper 安裝和移除軟體

若要透過註冊的儲存庫安裝套件,請使用

zypper install package_name

zypper 還支援萬用字元。若要安裝以套件名稱開頭的所有套件,請使用

zypper install package_name*

您也可以直接安裝本地或遠端 RPM — Zypper 也會根據情況自動安裝套件 package_name

zypper install http://www.example.com/package_name.rpm

要避免解析相依性,請使用 --no-recommends--no-force-resolution

若要移除已安裝的套件,請使用

zypper remove package_name
[Warning]不要移除系統的必要套件

不要移除 glibczypperkernel 或類似套件。這些套件都是系統的必要套件,如若缺少則系統可能會停止工作。

依預設,zypper 會在安裝或移除選定套件之前要求您確認。使用 --non-interactive 選項可覆寫此行為。此選項必須位於實際模式 (安裝、移除與更新) 之前,例如

zypper --non-interactive install package_name

此選項允許在程序檔與 cron 工作中使用 zypper。

若要安裝某套件所對應的來源套件,請使用

zypper source-install package_name

使用此指令還可安裝指定套件的相依版本。如果不想如此,請新增開關 --no-build-deps,如下所示︰

zypper source-install --no-build-deps package_name
  

當然,僅當您擁有其來源套件已新增至儲存庫清單的儲存庫時,此指令行才有效。如需有關新增儲存庫的詳細資訊,請參閱第 4.1.4 節「管理儲存庫」

變更已安裝的軟體基礎後,請驗證是否仍然滿足所有相依性︰

zypper verify

使用 Zypper 更新軟體

使用 zypper 可以兩種不同的方式更新軟體。若要將所有正式發佈的修補程式整合至您的系統,只需執行

zypper update

在此情況下,系統會檢查儲存庫中所有可用修補程式的關聯性,並視需要進行安裝。

如果儲存庫中有新套件但未提供修補程式,則 zypper update 不起任何作用。若要更新所有這些套件,必須指定安裝 package 類型的更新。

zypper update -t package

若要更新個別套件,請使用安裝指令︰

zypper install package_name

所有可用新套件的清單可透過以下指令獲得︰

zypper list-updates -t package

管理儲存庫

zypper 的所有安裝或更新指令均依賴於 zypper 可識別的儲存庫清單。若要列出系統可識別的所有儲存庫,請使用指令︰

zypper repos

結果類似於以下輸出︰

# | Enabled | Refresh | Type  | Alias             | Name
--+---------+---------+-------+-------------------+-------------------
1 | Yes     | Yes     | yast2 | openSUSE-DVD 11.0 | openSUSE-DVD 11.0
2 | Yes     | No      | yast2 | Main (OSS)        | Main (OSS)
3 | Yes     | No      | yast2 | Main (Non-OSS)    | Main (Non-OSS)

若要從清單中移除儲存庫,請使用 zypper renamerepo 指令加上要刪除的儲存庫別名。若要從範例中移除主要儲存庫 (非 OSS),請使用以下指令︰

zypper renamerepo Main Repository (Non-OSS)

若要新增儲存庫,請執行

zypper addrepo URI Alias

URI 可以是網際網路儲存庫 (請造訪 http://en.opensuse.org/Additional_YaST_Package_Repositories 獲取可用儲存庫的清單),也可以是目錄、CD 或 DVD。別名是儲存庫的縮寫與唯一識別碼。您可以隨意選擇,前提是它必須是唯一的。如果指定了已使用的別名,zypper 會發出警告。

查詢

您可以使用各種查詢指令,如 searchinfowhat-provides

search 用於查詢套件名稱並在輸出第一欄中顯示狀態 (S) 資訊。

info 使用套件名稱做為引數顯示有關套件的詳細資訊。

what-provides 套件類似於 rpm -q --whatprovides 套件,但是 rpm 只能查詢 RPM 資料庫 (即所有已安裝套件的資料庫)。另外,Zypper 會告知您任何儲存庫功能的提供者,而不是只有已安裝的儲存庫。

特別是若要進行除錯,可以使用 --plus-repo--disable-repositories--disable-system-resolvables 開關。如果想僅在一個儲存庫內進行搜尋,可以使用這些開關。如需詳細的使用情形資訊,請參閱 zypper 線上文件 (man zypper)。

使用 Zypper 外圍程序

有時必須按照序列執行數個不同的 zypper 指令。若要阻止 zypper 重新讀取每個 zypper 指令的所有資料庫,可以在外圍程序模式中執行 zypper。

zypper shell

當外圍程序在執行中時,只需使用各自的參數執行 zypper 指令︰

zypper> in zsh
...
zypper> exit

使用 zypper 外圍程序通常速度比較快,因為所有相關資料都保留在記憶體內。

Zypper 支援讀取行程式庫。也就是說,您可以在 Zypper 外圍程序中使用所有指令行編輯功能,這些功能也能在 Bash 外圍程序中使用。Zypper 可在 ~/.zypper_history 檔案中維護其指令歷程。

如需更多資訊

如需有關透過指令行進行更新的詳細資訊,請輸入 zypper --help 或參閱 zypper(8) 線上文件。如需範例及詳細資訊,請造訪 http://en.opensuse.org/Zypper/Usage