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 的比较 #
zypper
与yum
和dnf
类似,都是高级包管理工具,但有一些独特的特性:
- 补丁管理:
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
可以模拟安装过程而不实际安装