12 條實用的 zypper 命令範例
Suse Linux 使用 zypper
進行包管理,其是一個由 ZYpp 包管理引擎提供的包管理系統。在此篇文章中我們將分享 12 條附帶輸出示例的實用 zypper
命令,能幫助你處理日常的系統管理任務。
不帶參數的 zypper
命令將列出所有可用的選項,這比參考詳細的 man 手冊要容易上手得多。
root@kerneltalks # zypper
用法:
zypper [--global-options] <command> [--command-options] [arguments]
zypper <subcommand> [--command-options] [arguments]
全局選項:
--help, -h 幫助
--version, -V 輸出版本號
--promptids 輸出 zypper 用戶提示符列表
--config, -c <file> 使用指定的配置文件來替代默認的
--userdata <string> 在歷史和插件中使用的用戶自定義事務 id
--quiet, -q 忽略正常輸出,只列印錯誤信息
--verbose, -v 增加冗長程度
--color
--no-color 是否啟用彩色模式,如果 tty 支持的話
--no-abbrev, -A 表格中的文字不使用縮寫
--table-style, -s 表格樣式(整型)
--non-interactive, -n 不詢問任何選項,自動使用默認答案
--non-interactive-include-reboot-patches
針對帶有重啟標誌的補丁,不使用交互模式
--xmlout, -x 切換至 XML 輸出
--ignore-unknown, -i 忽略未知的包
--reposd-dir, -D <dir> 使用自定義倉庫文件目錄
--cache-dir, -C <dir> 為所有緩存啟用可選路徑
--raw-cache-dir <dir> 啟用可選 raw 元數據緩存路徑
--solv-cache-dir <dir> 啟用可選 solv 文件緩存路徑
--pkg-cache-dir <dir> 啟用可選包緩存路徑
倉庫選項:
--no-gpg-checks 忽略 GPG 檢查失敗並跳過
--gpg-auto-import-keys 自動信任並導入新倉庫的簽名密鑰
--plus-repo, -p <URI> 使用附加倉庫
--plus-content <tag> 另外使用禁用的倉庫來提供特定的關鍵詞
嘗試使用 '--plus-content debug' 選項來啟用倉庫
--disable-repositories 不從倉庫中讀取元數據
--no-refresh 不刷新倉庫
--no-cd 忽略 CD/DVD 中的倉庫
--no-remote 忽略遠程倉庫
--releasever 設置所有 .repo 文件中的 $releasever 變數(默認值:發行版版本)
Target Options:
--root, -R <dir> 在另一個根路徑下進行操作
--disable-system-resolvables
不讀取已安裝包
命令:
help, ? 列印幫助
shell, sh 允許多命令
倉庫管理:
repos, lr 列出所有自定義倉庫
addrepo, ar 添加一個新倉庫
removerepo, rr 移除指定倉庫
renamerepo, nr 重命名指定倉庫
modifyrepo, mr 修改指定倉庫
refresh, ref 刷新所有倉庫
clean 清除本地緩存
服務管理:
services, ls 列出所有自定義服務
addservice, as 添加一個新服務
modifyservice, ms 修改指定服務
removeservice, rs 移除指定服務
refresh-services, refs 刷新所有服務
軟體管理:
install, in 安裝包
remove, rm 移除包
verify, ve 確認包依賴的完整性
source-install, si 安裝源碼包及其構建依賴
install-new-recommends, inr
安裝由已安裝包建議一併安裝的新包
更新管理:
update, up 更新已安裝包至更新版本
list-updates, lu 列出可用更新
patch 安裝必要的補丁
list-patches, lp 列出必要的補丁
dist-upgrade, dup 進行發行版更新
patch-check, pchk 檢查補丁
查詢:
search, se 查找符合匹配模式的包
info, if 展示特定包的完全信息
patch-info 展示特定補丁的完全信息
pattern-info 展示特定模式的完全信息
product-info 展示特定產品的完全信息
patches, pch 列出所有可用的補丁
packages, pa 列出所有可用的包
patterns, pt 列出所有可用的模式
products, pd 列出所有可用的產品
what-provides, wp 列出提供特定功能的包
包鎖定:
addlock, al 添加一個包鎖定
removelock, rl 移除一個包鎖定
locks, ll 列出當前的包鎖定
cleanlocks, cl 移除無用的鎖定
其他命令:
versioncmp, vcmp 比較兩個版本字元串
targetos, tos 列印目標操作系統 ID 字元串
licenses 列印已安裝包的證書和 EULAs 報告
download 使用命令行下載指定 rpm 包到本地目錄
source-download 下載所有已安裝包的源碼 rpm 包到本地目錄
子命令:
subcommand 列出可用子命令
輸入 'zypper help <command>' 來獲得特定命令的幫助。
如何使用 zypper 安裝包
zypper
通過 in
或 install
子命令來在你的系統上安裝包。它的用法與 yum 軟體包安裝 相同。你只需要提供包名作為參數,包管理器(此處是 zypper
)就會處理所有的依賴並與你指定的包一併安裝。
# zypper install telnet
Refreshing service 'SMT-http_smt-ec2_susecloud_net'.
Refreshing service 'cloud_update'.
Loading repository data...
Reading installed packages...
Resolving package dependencies...
The following NEW package is going to be installed:
telnet
1 new package to install.
Overall download size: 51.8 KiB. Already cached: 0 B. After the operation, additional 113.3 KiB will be used.
Continue? [y/n/...? shows all options] (y): y
Retrieving package telnet-1.2-165.63.x86_64 (1/1), 51.8 KiB (113.3 KiB unpacked)
Retrieving: telnet-1.2-165.63.x86_64.rpm .........................................................................................................................[done]
Checking for file conflicts: .....................................................................................................................................[done]
(1/1) Installing: telnet-1.2-165.63.x86_64 .......................................................................................................................[done]
以上是我們安裝 telnet
包時的輸出,供你參考。
推薦閱讀:在 YUM 和 APT 系統中安裝包
如何使用 zypper 移除包
要在 Suse Linux 中擦除或移除包,使用 zypper
附帶 remove
或 rm
子命令。
root@kerneltalks # zypper rm telnet
Loading repository data...
Reading installed packages...
Resolving package dependencies...
The following package is going to be REMOVED:
telnet
1 package to remove.
After the operation, 113.3 KiB will be freed.
Continue? [y/n/...? shows all options] (y): y
(1/1) Removing telnet-1.2-165.63.x86_64 ..........................................................................................................................[done]
我們在此處移除了先前安裝的 telnet 包。
使用 zypper 檢查依賴或者認證已安裝包的完整性
有時可以通過強制忽略依賴關係來安裝軟體包。zypper
使你能夠掃描所有已安裝的軟體包並檢查其依賴性。如果缺少任何依賴項,它將提供你安裝或重新安裝它的機會,從而保持已安裝軟體包的完整性。
使用附帶 verify
或 ve
子命令的 zypper
命令來檢查已安裝包的完整性。
root@kerneltalks # zypper ve
Refreshing service 'SMT-http_smt-ec2_susecloud_net'.
Refreshing service 'cloud_update'.
Loading repository data...
Reading installed packages...
Dependencies of all installed packages are satisfied.
在上面的輸出中,你能夠看到最後一行說明已安裝包的所有依賴都已安裝完全,並且無需更多操作。
如何在 Suse Linux 中使用 zypper 下載包
zypper
提供了一種方法使得你能夠將包下載到本地目錄而不去安裝它。你可以在其他具有同樣配置的系統上使用這個已下載的軟體包。包會被下載至 /var/cache/zypp/packages/<repo>/<arch>/
目錄。
root@kerneltalks # zypper download telnet
Refreshing service 'SMT-http_smt-ec2_susecloud_net'.
Refreshing service 'cloud_update'.
Loading repository data...
Reading installed packages...
Retrieving package telnet-1.2-165.63.x86_64 (1/1), 51.8 KiB (113.3 KiB unpacked)
(1/1) /var/cache/zypp/packages/SMT-http_smt-ec2_susecloud_net:SLES12-SP3-Pool/x86_64/telnet-1.2-165.63.x86_64.rpm ................................................[done]
download: Done.
# ls -lrt /var/cache/zypp/packages/SMT-http_smt-ec2_susecloud_net:SLES12-SP3-Pool/x86_64/
total 52
-rw-r--r-- 1 root root 53025 Feb 21 03:17 telnet-1.2-165.63.x86_64.rpm
你能看到我們使用 zypper
將 telnet 包下載到了本地。
如何使用 zypper 列出可用包更新
zypper
允許你瀏覽已安裝包的所有可用更新,以便你可以提前計劃更新活動。使用 list-updates
或 lu
子命令來顯示已安裝包的所有可用更新。
root@kerneltalks # zypper lu
Refreshing service 'SMT-http_smt-ec2_susecloud_net'.
Refreshing service 'cloud_update'.
Loading repository data...
Reading installed packages...
S | Repository | Name | Current Version | Available Version | Arch
--|-----------------------------------|----------------------------|-------------------------------|------------------------------------|----v | SLES12-SP3-Updates | at-spi2-core | 2.20.2-12.3 | 2.20.2-14.3.1 | x86_64
v | SLES12-SP3-Updates | bash | 4.3-82.1 | 4.3-83.5.2 | x86_64
v | SLES12-SP3-Updates | ca-certificates-mozilla | 2.7-11.1 | 2.22-12.3.1 | noarch
v | SLE-Module-Containers12-Updates | containerd | 0.2.5+gitr639_422e31c-20.2 | 0.2.9+gitr706_06b9cb351610-16.8.1 | x86_64
v | SLES12-SP3-Updates | crash | 7.1.8-4.3.1 | 7.1.8-4.6.2 | x86_64
v | SLES12-SP3-Updates | rsync | 3.1.0-12.1 | 3.1.0-13.10.1 | x86_64
輸出特意被格式化以便於閱讀。每一列分別代表包所屬倉庫名稱、包名、已安裝版本、可用的更新版本和架構。
在 Suse Linux 中列出和安裝補丁
使用 list-patches
或 lp
子命令來顯示你的 Suse Linux 系統需要被應用的所有可用補丁。
root@kerneltalks # zypper lp
Refreshing service 'SMT-http_smt-ec2_susecloud_net'.
Refreshing service 'cloud_update'.
Loading repository data...
Reading installed packages...
Repository | Name | Category | Severity | Interactive | Status | Summary
----------------------------------|------------------------------------------|-------------|-----------|-------------|--------|---------------------------------------------------------------------------------SLE-Module-Containers12-Updates | SUSE-SLE-Module-Containers-12-2018-273 | security | important | --- | needed | Version update for docker, docker-runc, containerd, golang-github-docker-libnetwork
SLE-Module-Containers12-Updates | SUSE-SLE-Module-Containers-12-2018-62 | recommended | low | --- | needed | Recommended update for sle2docker
SLE-Module-Public-Cloud12-Updates | SUSE-SLE-Module-Public-Cloud-12-2018-268 | recommended | low | --- | needed | Recommended update for python-ecdsa
SLES12-SP3-Updates | SUSE-SLE-SERVER-12-SP3-2018-116 | security | moderate | --- | needed | Security update for rsync
---- output clipped -SLES12-SP3-Updates | SUSE-SLE-SERVER-12-SP3-2018-89 | security | moderate | --- | needed | Security update for perl-XML-LibXML
SLES12-SP3-Updates | SUSE-SLE-SERVER-12-SP3-2018-90 | recommended | low | --- | needed | Recommended update for lvm2
Found 37 applicable patches:
37 patches needed (18 security patches)
使用相應的表頭可以很好地組織輸出。你可以輕鬆地找出並根據情況計劃你的補丁更新。我們能看到在我們的系統中,37 個可用補丁中有 18 個是安全補丁,需要被高優先順序應用!
你可以通過發出 zypper patch
命令安裝所有需要的補丁。
如何使用 zypper 更新包
要使用 zypper
更新包,使用 update
或 up
子命令後接包名。在上述列出的更新命令中,我們知道在我們的伺服器上 rsync
包更新可用。讓我們現在來更新它吧!
root@kerneltalks # zypper update rsync
Refreshing service 'SMT-http_smt-ec2_susecloud_net'.
Refreshing service 'cloud_update'.
Loading repository data...
Reading installed packages...
Resolving package dependencies...
The following package is going to be upgraded:
rsync
1 package to upgrade.
Overall download size: 325.2 KiB. Already cached: 0 B. After the operation, additional 64.0 B will be used.
Continue? [y/n/...? shows all options] (y): y
Retrieving package rsync-3.1.0-13.10.1.x86_64 (1/1), 325.2 KiB (625.5 KiB unpacked)
Retrieving: rsync-3.1.0-13.10.1.x86_64.rpm .......................................................................................................................[done]
Checking for file conflicts: .....................................................................................................................................[done]
(1/1) Installing: rsync-3.1.0-13.10.1.x86_64 .....................................................................................................................[done]
在 Suse Linux 上使用 zypper 查找包
如果你不確定包的全名也不要擔心。你可以使用 zypper
附帶的 se
或 search
子命令並提供查找字元串來查找包。
root@kerneltalks # zypper se lvm
Refreshing service 'SMT-http_smt-ec2_susecloud_net'.
Refreshing service 'cloud_update'.
Loading repository data...
Reading installed packages...
S | Name | Summary | Type
---|---------------|------------------------------|-------- | libLLVM | Libraries for LLVM | package
| libLLVM-32bit | Libraries for LLVM | package
| llvm | Low Level Virtual Machine | package
| llvm-devel | Header Files for LLVM | package
| lvm2 | Logical Volume Manager Tools | srcpackage
i+ | lvm2 | Logical Volume Manager Tools | package
| lvm2-devel | Development files for LVM2 | package
在上述示例中我們查找了 lvm
字元串並得到了如上輸出列表。你能在 zypper install/remove/update
命令中使用 Name
欄位的名字。
使用 zypper 檢查已安裝包信息
你能夠使用 zypper
檢查已安裝包的詳細信息。info
或 if
子命令將列出已安裝包的信息。它也可以顯示未安裝包的詳細信息,在該情況下,Installed
參數將返回 No
值。
root@kerneltalks # zypper info rsync
Refreshing service 'SMT-http_smt-ec2_susecloud_net'.
Refreshing service 'cloud_update'.
Loading repository data...
Reading installed packages...
Information for package rsync:
---------------------------Repository : SLES12-SP3-Updates
Name : rsync
Version : 3.1.0-13.10.1
Arch : x86_64
Vendor : SUSE LLC <https://www.suse.com/>
Support Level : Level 3
Installed Size : 625.5 KiB
Installed : Yes
Status : up-to-date
Source package : rsync-3.1.0-13.10.1.src
Summary : Versatile tool for fast incremental file transfer
Description :
Rsync is a fast and extraordinarily versatile file copying tool. It can copy
locally, to/from another host over any remote shell, or to/from a remote rsync
daemon. It offers a large number of options that control every aspect of its
behavior and permit very flexible specification of the set of files to be
copied. It is famous for its delta-transfer algorithm, which reduces the amount
of data sent over the network by sending only the differences between the
source files and the existing files in the destination. Rsync is widely used
for backups and mirroring and as an improved copy command for everyday use.
使用 zypper 列出倉庫
使用 zypper
命令附帶 lr
或 repos
子命令列出倉庫。
root@kerneltalks # zypper lr
Refreshing service 'cloud_update'.
Repository priorities are without effect. All enabled repositories share the same priority.
# | Alias | Name | Enabled | GPG Check | Refresh
---|--------------------------------------------------------------------------------------|-------------------------------------------------------|---------|-----------|----- 1 | SMT-http_smt-ec2_susecloud_net:SLE-Module-Adv-Systems-Management12-Debuginfo-Pool | SLE-Module-Adv-Systems-Management12-Debuginfo-Pool | No | ---- | - 2 | SMT-http_smt-ec2_susecloud_net:SLE-Module-Adv-Systems-Management12-Debuginfo-Updates | SLE-Module-Adv-Systems-Management12-Debuginfo-Updates | No | ---- | - 3 | SMT-http_smt-ec2_susecloud_net:SLE-Module-Adv-Systems-Management12-Pool | SLE-Module-Adv-Systems-Management12-Pool | Yes | (r ) Yes | No
4 | SMT-http_smt-ec2_susecloud_net:SLE-Module-Adv-Systems-Management12-Updates | SLE-Module-Adv-Systems-Management12-Updates | Yes | (r ) Yes | Yes
5 | SMT-http_smt-ec2_susecloud_net:SLE-Module-Containers12-Debuginfo-Pool | SLE-Module-Containers12-Debuginfo-Pool | No | ---- | - 6 | SMT-http_smt-ec2_susecloud_net:SLE-Module-Containers12-Debuginfo-Updates | SLE-Module-Containers12-Debuginfo-Updates | No | ---- | -```
此處你需要檢查 `enabled` 列來確定哪些倉庫是已被啟用的而哪些沒有。
### 在 Suse Linux 中使用 zypper 添加或移除倉庫
要添加倉庫你需要倉庫或 .repo 文件的 URI,否則你會遇到如下錯誤。
root@kerneltalks # zypper addrepo -c SLES12-SP3-Updates
If only one argument is used, it must be a URI pointing to a .repo file.
使用 URI,你可以像如下方式添加倉庫:
root@kerneltalks # zypper addrepo -c http://smt-ec2.susecloud.net/repo/SUSE/Products/SLE-SDK/12-SP3/x86_64/product?credentials=SMT-http_smt-ec2_susecloud_net SLE-SDK12-SP3-Pool
Adding repository 'SLE-SDK12-SP3-Pool' ...........................................................................................................................[done]
Repository 'SLE-SDK12-SP3-Pool' successfully added
URI : http://smt-ec2.susecloud.net/repo/SUSE/Products/SLE-SDK/12-SP3/x86_64/product?credentials=SMT-http_smt-ec2_susecloud_net
Enabled : Yes
GPG Check : Yes
Autorefresh : No
Priority : 99 (default priority)
Repository priorities are without effect. All enabled repositories share the same priority.
在 Suse 中使用附帶 `addrepo` 或 `ar` 子命令的 `zypper` 命令添加倉庫,後接 URI 以及你需要提供一個別名。
要在 Suse 中移除一個倉庫,使用附帶 `removerepo` 或 `rr` 子命令的 `zypper` 命令。
root@kerneltalks # zypper removerepo nVidia-Driver-SLE12-SP3
Removing repository 'nVidia-Driver-SLE12-SP3' ....................................................................................................................[done]
Repository 'nVidia-Driver-SLE12-SP3' has been removed.
### 清除 zypper 本地緩存
使用 `zypper clean` 命令清除 zypper 本地緩存。
root@kerneltalks # zypper clean
All repositories have been cleaned up.
via:
作者:[KernelTalks](https://kerneltalks.com) 譯者:[cycoe](https://github.com/cycoe) 校對:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原創編譯,[Linux中國](https://linux.cn/) 榮譽推出
---
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive