请教 zypper 是否有清除无用依赖的功能

在 debian 系中是:

apt-get autoremove

在 redhat 系中是:

yum autoremove

在 Arch 中是:

pacman -Rsnc

:joy: 额,刚从 Archlinux 转回来。。。。。。。。。。。。

** 注: 发现一个功能不知道是不是 /etc/zypp/zypp.conf 的 solver.cleandepsOnRemove = false **

好像没有吧,只有在删除一个包时用 zypper rm -u packagename 可以删除一个包的无用依赖

不用的包可以到 “YaST -> 软件管理 -> 软件包分组 -> 不需要的软件包” 里找到

1赞

首先谢谢,这个 “不需要” 是怎么定义的 ,我现在用的 KDE5 ,看了看 里面好多 KDE5 的语言包。。。。这 。。。。。。。。。。。 :nauseated_face: :nauseated_face: :nauseated_face:

别的不太清楚, Debian 系里面的 autoremove 是移除非手工安装(作为别的包的依赖被装上)并且现在不被任何已安装的包依赖的包,比如某个包 A 1.0 版本依赖包 B, 你安装 A 的同时就把 B 自动装上了,然后 A 升级到了 2.0 去掉了对 B 的依赖,这个时候如果 autoremove 就会把 B 删掉


zypper -u
是一个功能。
zypper 并没有集中清理机器上所有无用依赖的功能。

1赞

额 就是这个功能 , arch 里面的 pacman -Rscn 是一样的, zypper 里面没有么?

好的 感谢

openSUSE 使用 zypper rm -u 来把软件 + 依赖卸载

  1. 查看不需要的包:

zypper packages --unneeded

上面这个命令仅仅列出不需要(没有被手动安装的包所依赖或递归依赖)的包

  1. 删除这些包

zypper packages --unneeded | sed -nEe ‘1,4d;s/.*|.*|\s+(.*)\s+|.*|.*$/\1/p’ | xargs zypper rm -u

运行上面的命令,zypper 会提示你是否要删除,确认请按 y,若不想要这个确认步骤,可以这样写:

zypper packages --unneeded | sed -nEe ‘1,4d;s/.*|.*|\s+(.*)\s+|.*|.*$/\1/p’ | xargs zypper rm -yu

  1. 可以把 2. 中的一个放到一个脚本里,例如/usr/local/bin/zypper-cleanup,这样以后就方便运行了

PS:

  1. 上面的方法会把一些自动安装的推荐包删掉(例如 fcitx5-table-extra,为 Fcitx5 提供额外的仓颉 5 等输入法引擎),如果需要某个包,请手动安装(zypper in 或 yast 选中),之后就不会被删除了
  2. 下面的命令会列出非源安装的包(源已删除或其本身就是通过 rpm 安装的)

zypper packages --orphaned

  1. 如何安装额外/其他的语言包(包括软件界面文字翻译以及输入法支持等)

zypper locales -a # 列出 openSUSE 支持的所有语言
zypper addlocale zh_HK # 通过语言代码安装语言包(这个例子安装的是香港繁体中文)

1赞

帖子中对星号和反斜杠有转义,看下面文件里的内容吧:

zypper-cleanup.txt (262 字节)

今天突发奇想也搜了一下 发现有一个 zypper rm --clean-deps
不知道这个和 rm -u 有什么区别

-u--clean-deps的 * 短选项 * :rofl: