Yast2包管理器中显示的“不需要的包”是代表什么

Yast2包管理器中显示的“不需要的包”,是指这里面的包都是多余的吗,我看不像啊。

就是这个包自己没有什么用,别的程序也用不到它,呆在硬盘里浪费空间,所以叫不需要的包
比如你下了深度音乐,它还会带好几个依赖的运行库包,你再把深度音乐卸载了,装它的时候带的这些运行库包并不会跟着深度音乐一起被卸载,所以就成了不需要的包
上面的孤立包应该也是差不多的意思?
总之就是你卸载这些包的时候YaST没有提示你还需要卸载其他100+或者你真正需要的包(比如整个桌面),卸了这个包就不会有什么问题

一句话就是,被其他包依赖而自动安装,但现在不被依赖的包

如何查找某个翻译的具体意思

先安装 yast2-trans-zh_CN 包:

sudo zypper in yast2-trans-zh_CN

然后看看把翻译装的位置:

rpm -ql yast2-trans-zh_CN

找到 .mo 文件的位置:

usr/share/YaST2/locale/zh_CN/LC_MESSAGES/
$ grep -r “不需要的包“ .
./qt-pkg.mo

然后去 l10n.opensuse.org 找到 yast2-qt-pkg 工程,进去搜同样的字符串,就能找到代码地址:

“不需要的包”在源代码里叫做 YPKG_GROUP_UNNEEDED,用 git clone 下来去 grep 它,能看到这行:

if ( selectedGroup() == YPKG_GROUP_UNNEEDED && zypp::PoolItem(pkg).status().isUnneeded() )

看到实际上这个组是通过 zypp 的状态来判断的,于是去找 github.com/openSUSE/libzypp,发现最关键的函数是这个 solver_get_unneeded。再去 github.com/openSUSE/libsolv/ 找这个函数,于是在 src/cleandeps.c 里找到了最终的答案:

“不需要的包”就是不被任何别的包 Requires 的包

同理,“孤立包”就是已安装但是安装时候用的软件源在系统上已经不在了的包

也就是说实际上我们应该修正翻译:

  • Orphaned -> 来自已删除软件源的包
  • Unneeded -> 不被 Requires 的包(可能被 Recommends 或者 Suggests 弱依赖)

这么写显然太长了,不如:

  • Orphaned 无源包 (No repo package)
  • Unneeded 无强依赖包 (No Requires package)

就是不知道这种翻译用户会不会明白

2赞

建议不翻译(逃
被recommended的也会变"不需要的"?那岂不是日常有好多这种"不需要的"包,毕竟zypper日常推荐一大堆(虽然还挺有用的)

不一样的,它的代码逻辑我没细看,光看了注释。大概是说跑第一遍是用 Requires + Recommended + Supplement,第二遍跑后两者。应该是只去看那些由于 Requires 装上的包不再被 Requires 的情况,由于 Recommended 和 Supplemented 装上的包完全不考虑。

那好像就比较合理了,听起来类似debian的(毁机神器)auto-remove

怪不得更新到15.1后出现不少这样的包,还大部分都是原来系统默认的小软件,点击更新某个软件,它就会从该列表中移除。点击更新会使用新的软件源更新?

本主题在最后一个回复创建后60分钟后自动锁定。不再允许添加新回复。