zypper命令

zypper 命令 #

zypper是 openSUSE 和 SUSE Linux Enterprise 的包管理工具,用于安装、更新、移除和管理软件包及仓库。它提供了一个强大的命令行界面,用于处理 RPM 包和解决依赖关系。

语法 #

zypper [全局选项] 命令 [命令选项] [参数]

常用命令 #

命令 别名 描述
install in 安装包
remove rm 移除包
update up 更新已安装的包
dist-upgrade dup 执行发行版升级
search se 搜索包
info if 显示包信息
list-updates lu 列出可用更新
patches pchk 列出需要的补丁
patch patch 安装补丁
repos lr 列出所有定义的仓库
addrepo ar 添加仓库
removerepo rr 移除仓库
refresh ref 刷新所有仓库
clean clean 清理本地缓存
source-install si 安装源包和构建依赖
verify ve 验证包的依赖关系
what-provides wp 列出提供特定功能或文件的包
list-packages lp 列出包
download download 下载包而不安装
locks ll 列出包锁定
addlock al 添加包锁定
removelock rl 移除包锁定

常用全局选项 #

选项 描述
-h, --help 显示帮助信息
-v, --version 显示版本信息
-q, --quiet 减少输出
-v, --verbose 增加输出
-A, --ask 所有问题都询问用户
-n, --non-interactive 不询问任何问题,使用默认答案
--no-gpg-checks 禁用 GPG 签名检查
--gpg-auto-import-keys 自动导入 GPG 密钥
-C, --config 文件 使用指定的配置文件
-R, --root 目录 在另一个根目录下操作
--userdata 字符串 用户定义的事务 ID 字符串
--ignore-unknown 忽略未知的包或仓库

常见用法 #

1. 安装包 #

zypper install package_name

或简写为:

zypper in package_name

2. 安装多个包 #

zypper install package1 package2 package3

3. 移除包 #

zypper remove package_name

或简写为:

zypper rm package_name

4. 更新特定包 #

zypper update package_name

或简写为:

zypper up package_name

5. 更新所有包 #

zypper update

6. 执行发行版升级 #

zypper dist-upgrade

或简写为:

zypper dup

7. 搜索包 #

zypper search keyword

或简写为:

zypper se keyword

8. 搜索文件 #

zypper search --file filename

9. 显示包信息 #

zypper info package_name

或简写为:

zypper if package_name

10. 列出可用更新 #

zypper list-updates

或简写为:

zypper lu

11. 列出补丁 #

zypper patches

12. 应用补丁 #

zypper patch

13. 列出所有仓库 #

zypper repos

或简写为:

zypper lr

14. 添加仓库 #

zypper addrepo URL alias

或简写为:

zypper ar URL alias

例如:

zypper ar http://download.opensuse.org/repositories/games/openSUSE_Leap_15.3/ games

15. 移除仓库 #

zypper removerepo alias

或简写为:

zypper rr alias

16. 刷新仓库 #

zypper refresh

或简写为:

zypper ref

17. 刷新特定仓库 #

zypper refresh repo_alias

18. 清理缓存 #

zypper clean

19. 安装源包和构建依赖 #

zypper source-install package_name

或简写为:

zypper si package_name

20. 验证依赖关系 #

zypper verify

或简写为:

zypper ve

高级用法 #

1. 查找提供特定文件的包 #

zypper what-provides /path/to/file

或简写为:

zypper wp /path/to/file

2. 列出已安装的包 #

zypper list-packages --installed-only

或简写为:

zypper lp -i

3. 列出未安装的包 #

zypper list-packages --not-installed-only

或简写为:

zypper lp -u

4. 下载包但不安装 #

zypper download package_name

5. 列出包锁定 #

zypper locks

或简写为:

zypper ll

6. 添加包锁定 #

zypper addlock package_name

或简写为:

zypper al package_name

7. 移除包锁定 #

zypper removelock package_name

或简写为:

zypper rl package_name

8. 安装特定版本的包 #

zypper install package_name=version

例如:

zypper in apache2=2.4.43

9. 安装特定仓库的包 #

zypper install --from repo_alias package_name

10. 查看包的依赖关系 #

zypper info --requires package_name

11. 查看哪些包依赖于特定包 #

zypper info --recommends package_name

12. 禁用仓库 #

zypper modifyrepo -d repo_alias

13. 启用仓库 #

zypper modifyrepo -e repo_alias

14. 更改仓库优先级 #

zypper modifyrepo -p 100 repo_alias

15. 查看事务历史 #

zypper history

16. 查看特定事务的详细信息 #

zypper history --details transaction_id

17. 安装包组 #

zypper install -t pattern pattern_name

例如:

zypper in -t pattern devel_basis

18. 列出可用的包组 #

zypper search -t pattern

19. 非交互式安装 #

zypper --non-interactive install package_name

20. 自动导入 GPG 密钥 #

zypper --gpg-auto-import-keys install package_name

仓库管理 #

1. 添加仓库并启用 #

zypper ar -f URL alias

-f选项会刷新仓库。

2. 添加仓库但不启用 #

zypper ar -d URL alias

-d选项会禁用仓库。

3. 列出仓库详细信息 #

zypper lr -d

4. 列出仓库 URI #

zypper lr -u

5. 刷新所有仓库 #

zypper ref -f

-f选项强制刷新,即使仓库最近已经刷新过。

6. 修改仓库 #

zypper modifyrepo options repo_alias

常用选项:

  • -e, --enable:启用仓库
  • -d, --disable:禁用仓库
  • -r, --refresh:启用自动刷新
  • -R, --no-refresh:禁用自动刷新
  • -p, --priority <优先级>:设置优先级(1-99)
  • -n, --name <名称>:设置名称
  • -k, --keep-packages:启用包缓存
  • -K, --no-keep-packages:禁用包缓存

包管理 #

1. 安装包并自动同意所有提示 #

zypper --non-interactive install package_name

2. 安装包并解决依赖问题 #

zypper install --force-resolution package_name

3. 安装包但不更新已安装的包 #

zypper install --no-force-resolution package_name

4. 安装包并自动同意许可协议 #

zypper install --auto-agree-with-licenses package_name

5. 移除包及其依赖 #

zypper remove --clean-deps package_name

6. 更新包但不更新依赖 #

zypper update --no-force-resolution package_name

7. 更新包并解决依赖问题 #

zypper update --force-resolution package_name

8. 更新包但不更新供应商 #

zypper update --no-allow-vendor-change package_name

配置文件 #

zypper 的主要配置文件和目录:

  • /etc/zypp/zypp.conf:主配置文件
  • /etc/zypp/repos.d/:仓库配置文件目录
  • /var/cache/zypp/:缓存目录
  • /var/log/zypper.log:日志文件

与 YUM/DNF 的比较 #

zypperyumdnf类似,都是高级包管理工具,但有一些独特的特性:

  • 补丁管理:zypper有专门的补丁管理命令
  • 包锁定:zypper提供了更灵活的包锁定机制
  • 仓库优先级:zypper允许为仓库设置优先级
  • 发行版升级:zypper dup专门用于发行版升级
  • 包组:zypper使用"模式"(patterns)而不是包组

提示 #

  • 使用zypper lp -i | grep pattern_name可以快速查找特定模式的包
  • 使用zypper ps可以列出需要重启的进程
  • 使用zypper patch-check可以检查是否有可用的安全补丁
  • 使用zypper --userdata "string"可以为事务添加自定义标识符,便于在历史记录中识别
  • 使用zypper al package_name可以防止包被意外更新或移除
  • 使用zypper dup --no-allow-vendor-change可以在发行版升级时保持包的供应商
  • 定期运行zypper patch可以应用安全更新
  • 使用zypper lr -p可以查看仓库的优先级
  • 使用zypper search -s package_name可以查看包的详细状态
  • 使用zypper clean -a可以清理所有缓存
  • 在服务器环境中,考虑使用--non-interactive选项进行自动化操作
  • 使用zypper search --provides --match-exact "pattern"可以精确匹配提供的功能
  • 使用zypper install --dry-run package_name可以模拟安装过程而不实际安装