4.1 使用 Zypper

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

zypper 內建有說明綜覽︰

zypper help

4.1.1 一般使用情形

zypper 的一般語法為︰

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

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

zypper patch

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

zypper --non-interactive patch

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

zypper patch --auto-agree-with-licenses

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

zypper install mplayer

某些選項也需要引數。以下指令會列出所有已知模式︰

zypper search -t pattern

您可以將上述所有指令組合使用。例如,以下指令表示僅使用 factory 儲存庫安裝 mplayeramarok 套件並詳加說明︰

zypper -v install --repo factory mplayer amarok

4.1.2 使用 Zypper 安裝和移除軟體

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

zypper install package_name

若要安裝某個特定版本的套件,請使用

zypper install package_name=version

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

zypper install package_name*

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

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

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

zypper remove package_name

若要一次性安裝並移除套件,請使用 +/-~/! 切換鍵一次性安裝及移除套件。

zypper install emacs -vim

或︰

zypper remove emacs +vim

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

zypper install -- -vim emacs

警告: 不要移除系統的必要套件

不要移除 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
  

當然,僅當您擁有其來源套件已新增至儲存庫清單的儲存庫時,此指令行才有效。輸入 zypper search -t srcpackage 可獲取儲存庫中可用來源套件的清單。如需有關新增儲存庫的詳細資訊,請參閱節 4.1.4, 管理儲存庫

當安裝期間有錯誤發生,或當您有需要時,請驗證所有相依性是否仍得以滿足。

zypper verify

4.1.3 使用 Zypper 更新軟體

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

zypper patch

在此情況下,系統會檢查儲存庫中所有可用修補程式的關聯性,並視需要進行安裝。註冊 SUSE Linux Enterprise 安裝後,包含此類修補程式的正式更新儲存庫將會新增至您的系統中。在需要時,您只需輸入上述指令即可對其加以套用。

如果儲存庫中含有新套件但未提供修補程式,則 zypper patch 不起任何作用。若要使用可用的較新版本更新所有安裝的套件,請使用︰

zypper update

若要更新個別套件,請配合以下引數使用更新指令︰

zypper update package_name

或安裝指令︰

zypper install package_name

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

zypper list-updates

類似地,若要列出所有需要的修補程式,請使用︰

zypper list-patches

4.1.4 管理儲存庫

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

zypper repos

結果類似於以下輸出︰          




# | Alias                             | Name                              | Enabled | Refresh
--+-----------------------------------+-----------------------------------+---------+--------
1 | SUSE-Linux-Enterprise-Server 11-0 | SUSE-Linux-Enterprise-Server 11-0 | Yes     | No
2 | SLES-11-Updates                   | SLES 11 Online Updates            | Yes     | Yes
3 | broadcomdrv                       | Broadcom Drivers                  | Yes     | No      

在各種指令中指定儲存庫時,可以使用 zypper repos 指令輸出的別名、URI 或儲存庫編號。請注意,修改儲存庫清單後,其編號可能會發生變更,但別名永遠不會自行變更。

若要從清單中移除儲存庫,請使用 zypper removerepo 指令,加上要刪除的儲存庫別名或編號。若要從範例中移除 Broadcom 驅動程式,請使用以下 指令︰

zypper removerepo 3

若要新增儲存庫,請執行

zypper addrepo URI Alias

URI 可以是網際網路儲存庫、目錄 或 CD 或 DVD。別名是儲存庫的縮寫與唯一識別碼。您可以隨意選擇,前提是它必須是唯一的。如果指定了已使用的別名,zypper 會發出警告。

為了讓儲存庫更便於使用,請使用簡短並且容易記住的別名。可以使用 renamerepo 指令變更儲存庫別名。例如,若要將冗長的範例名稱 SUSE-Linux-Enterprise-Server 11-0 重新命名為簡短、方便的標籤 main,請輸入︰

zypper renamerepo 1 main

4.1.5 查詢

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

search 可用於查詢套件名稱或 (選擇性) 套件摘要和描述,並於找到的套件清單的第一欄中顯示狀態 (S) 資訊。

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

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

如需更多查詢指令和詳細的使用資訊,請參閱 zypper 線上文件 (man zypper)。

4.1.6 如需更多資訊

如需有關透過指令行管理軟體的詳細資訊,請輸入 zypper helpzypper help 指令,或參閱 zypper(8) 線上文件。