请问,zypper 或者 YaST 有没有查找不被依赖的软件包,然后将其删除的命令或者功能?

请问,zypper 或者 YaST 有没有查找不被依赖的软件包,然后将其删除的命令或者功能?

记得在一个帖子里讨论过,暂时找不到,有一个查找孤立软件包的功能在
YaST -> 软件管理 -> 软件分组 -> 孤立软件包
你想要系统干净可以
zypper rm -u 某个你不要的软件

其实我一直不太能理解这个问题。「不被依赖的软件包」。我想系统里一定有一些处于「最上层的」只是依赖别的软件而不被别的软件依赖软件,比如 libreoffice。难道这不正是大多数人要的软件么?然后你把他删除了,然后又会有一些「次上层的软件」变成了「不被依赖的软件」。然后再删除,然后。。。然后你的系统就没有了。。。

我知道你一定不是这个意思。说白了你就是想要删除你「不用的软件」,有时候他们以依赖包关系存在在你的系统里。比如你用到 ocatve ,他依赖 texlive。然后你不用 octave ,把他删除了,这时 texlive 就变成了你说的「不被依赖的软件包了」,这时你就想把 texlive 也删除了。这时候你可以使用 zypper rm -u octave 。但是问题又来了,系统如何知道用户要不要使用 texlive?比如对于我,我安装的 octave,octave 依赖于 texlive 和其他的一些软件。但是我想单独用 texlive 但是不想要其他的软件,这时候怎么办?系统如何为我做选择?显然用 zypper rm -u octave 就达不到我的目的。这时候就必须要我「人工选择」,没有办法,电脑自动不来。

上面例子只是一个软件,那么现在如何从一堆的「不被依赖的软件」里找出你要用的和你不要用的呢?那只有靠你自己选择才是最安全的方法。。。

看上去貌似蛮绝望的。。。但是放轻松一点。。。说了那么多其实我想说的就是。。。完全没有必要。。。如果你像我一样是一个普通用户,日常用用完全不需要考虑这些东西。这种情况下我都是忽视那些「其他软件」的,我说过我是不同用户没必要把依赖关系搞得那么透。。。系统默认安装好了其实几乎所有我要的软件都在了,手工安装的软件屈指可数。如果这样你还嫌系统不够干净。。。。那只有选择那些 kiss 的发行版了。。。。

YaST 安装 / 移除软件 的 选项 下有一个 “删除软件包时清理” 的选项打勾后应该可以解决大部分问题,但是我也不清楚这个选项采用的究竟是二楼提到的哪种策略。

首先我真的特别高兴,没想到中文 Opensuse 社区这么活跃,有这么多热心的人讨论问题。我是一个 linux 初学者,问的问题有时挺幼稚。
你说的问题我也想过,有时将 linux 的这种软件管理方式和 windows 相比较,感觉真的是各有好处。

1、确实,最上层的软件包不被任何其他软件包依赖,但是却不是没用的。 这一点我也不明白,真的希望更多的朋友给确认一下
2、关于您说的 texlive 与 octave 的例子,我想在 linux 中不可能完全做到【干净】,即使 windows 也不能做到完全的【干净】,在 windows 下有些系统的函数、系统的库或者系统的什么什么,可能也没有被软件用到,甚至 windows 自身运行也不用他们,但是因为他们是系统的,我们就不认为他们是垃圾。 (这第二点是我自己这么认为的,不一定正确,请大家指教)
3、我在别的帖子中找到 rpmorphan 这个软件包,说是用来查找不被依赖的软件包,运行 rpmorphan -find orphaned packages 命令的时候,列出一大堆软件包,吓我一跳,这么多,要是都删了,我的系统还能用吗?我还没有试,等我有时间了要好好研究一下 rpmorphan。
4、您说的 Yast- 软件管理 - 软件分组 - 孤立软件包,我没有找到
5、我在找软件分组中找到最后一项 zzz All,请问这个组是什么意思???

十分感谢,请赐教。

这个和 zypper rm -u 是一样的。zypper 和 YaST 很多功能通用。

  1. 这个我也不知道,我觉得 YaST 和 zypper 够用,这是 openSUSE 特有。他们的很多功能我也没有搞清楚。但是你只要仔细研究一下,就会发现大多数功能他都有。

  2. 那个也许你没有添加进视图里。就是打开 YaST 的软件包管理最左边有一个视图,里面有一个 软件包分组。点击他,就会在旁边的标签里多出一个软件包分组。里面有一项孤立软件包。你找的那个是「rpm 组」,并不是「软件包组」。软件包组比 rpm 组更直观。rpm 组里的分组估计就是打包时候的那个分组,对一般用户来说太琐碎了。一般找软件就是「软件包分组」和「软件集」

1赞

zypper 貌似不能直接像 apt-get 一样 autoremove。

关于这个我有一点体会。 就是软件管理器可能可以记录你指定要求安装的包。

我今年 Debian 里安装的 XFCE,后来换 KDE。 卸载 XFCE 之后 libreoffice 就被 apt 指定为孤立软件包。 要我用 autoremove 删除 libreoffice 以及其他我不需要使用的 xfce 库。

所以我就运行 apt-get install libreoffice

要求安装 libreoffice。 这个时候 apt-get 说你已经装了 libreoffice 了。 所以什么都没装。 但是再要求它查找孤立软件包,libreoffice 就不算了。 这说明 apt 记住了是我主动要求安装了 libreoffice。

恩,用 zypper 先安装 texlive 再安装 octave 这时用 zypper rm -u 卸载 octave 卸载 texlive 的时候也不会卸载 texlive。zypper 貌似也可以记忆。zypper 也确实没有 autoremove 这个功能。其实我的例子也不太恰当,对于自己安装的软件是没什么问题,但是对于系统预先安装好的软件就比较麻烦,搞不好真的一个删除整个系统就没有了。。。

不过我还是觉得。。。这也太纠结了。。。。我装了很多软件我知道很长时间不用我都懒得卸载。。。。不影响使用我就懒得理他,因为理他成本太高了。。。我是学经济管理这块的,边际投入大于边际产出,不划算。。。。

我不完全认同你这个投入产出的观点。 我有个教授,OSX 用户,应该观点和你一致。 他装软件就是把一个 OSX 可执行文件或者 shell 脚本拷贝到 /usr/bin,然后运行。

我的电脑用 lein1, 因为 debian 只有 lein1, 不知道为什么 debian 乃至 fedora 都不升级 lein 包(估计是被蛋疼到了)

他说你不是说很喜欢用新软件,我们都用 lein2, 你怎么不升级? 我说我的电脑里只有 lein1, 是因为 debian 有包。我也想装 lein2, 但是我找了半天没有编译指南,连 buildrequirement 都不提供,只让我复制一个可执行脚本到 /usr/bin 再运行来安装。

教授跟我说,“你太讲究原则了。有时候可能我们这样安装确实不符合原则,但是可以让你活得轻松很多。我认识的研究者大部分用苹果的都是直接拷贝到 bin 目录运行的,简单方便就能运行了。 windows 下面也有 exe 可以安装。 我相信你肯定能在 linux 下装,因为我也在 linux 集群上运行过这个脚本”

我感觉他没体验过 linux 的包管理系统,所以不知道其实用 rpm 和 deb 包比他把文件拷贝到 bin 目录还方便,而且副作用小得多。 但是在一个软件不提供 rpm,不提供 deb,不提供 buildrequirement,不提供任何编译方面的指南。 是开源的,有个 gitrepo,但是里面的代码不知道怎么编译。 安装方法就是给你一个 shell 脚本让你拷贝到 bin 目录运行。

反正我无法接受这种安装方法。

最后结局是我安装了一个虚拟机,然后在虚拟机里面把这个东西拷贝到 bin 目录安装了。而且这个虚拟机的唯一作用就是用这个软件。 因为我无法接受使用这样一种方式来安装一个程序。

但是从另一方面,我感觉我确实把太多时间用来研究怎样把电脑管理得完美了。 还有怎么把知识管理得完美。 最后反而导致我学习效率不高。 所以你这个说法还是有一定道理的。

我也不强求删除孤立包。 但是我的观点是包管理器管理的包我无所谓(我还经常在包管理器里找奇怪的包装着玩),但是不能用包管理器安装的包(比如说这种拷一个东西进 bin 来安装的),我极其反感。

我很同意你说的。其实可以补充一点,有包管理在更不用纠结这个,你可以放一万个心 zypper 不会把你的系统搞得很乱的。说的再简单一点。你可以用 zypper rm -u,autromve 功能 zypper 是没有。我个人的意见是:用处不大而且可能会带来不必要的麻烦。其实连 zypper rm -u 我用得都很少。因为就像楼主提到的,可能他一下子列出了一堆软件我就不知道该不该选择 yes 了。我普通用户是不会懂得那么多包的,对我来说花时间去搞清楚这些包到底有没有用是投入大于产出的。但是看到了我又觉得揪心,心里不爽,所以我干脆就不用,反正就算留下一点点东西也不会怎么样,卸载掉则可能系统会坏掉,太不值得了。(我用 Ubuntu 的时候就清理内核时候搞坏过系统,当然用的不是 autromve,不要冤枉人家,是一个第三方的清理软件)

下面题外话:经济学对财富的定义不是物质的,对每个人不同的,你可以有你的价值观,只要你为其负责(经济学说产权,只要是你的产权,你有权做任何事只要你赔赔自己的钱,只要你高兴你依然可以说这是有价值的)。。。你必定觉得(至少是当时)那个投入是值得这个产出的,也许你的教授不认同,不然你不会这样选择。虽然可能后来想起来有点后悔但那个已经是沉没成本了,不要考虑太多。要是真觉得太浪费了时间,那就吸取经验继续向前。如果心里坚定坚持就可以了。

我找到【软件包组】了,非常感谢,太谢谢了。

为什么不能?为什么绝望?看到 YaST 里有个锁定功能了吗?你卸载 octave 前先给 texlive 加个锁。sudo zypper rm -u octave 之后再把锁打开。zypper 有加锁开锁的命令。

1赞

恩,苏姐说的对。其实如果是之前先安装的 texlive 再安装 octave ,sudo zypper rm -u octave 也不会删除 texlive。貌似是可以记忆那些软件是用户自主安装上去的,也是蛮智能的。锁定这个功能也蛮不错的,以前没注意。YaST 很多功能都蛮好的,软件列表导入导出什么的。

一记洛阳铲,小白也来问问,
就是说,我通过zypper 安装个软件,然后提示要再安装一些依赖的包,然后我装好了,等我再卸载这个软件的时候,这些额外安装的依赖的包也会一起被卸载掉,对不对???
那这个【孤立软件包】是啥意思?没有任何软件依赖它但是它还被安装了??
ubuntu下的apt autoremove的功能,opensuse下真的没有吗?

还有个可能,像是tim的appimage打包的时候,有的依赖没有,你要安装。但是你用孤立包删除的时候肯定找不到appimage依赖。删掉了后果就是,重新安装。

卸载的时候用 zypper rm -u 才会卸载依赖包;另外如果某个包升级之后不再依赖另一个包了,也不会自动卸载。
apt autoremove <package> 等价于 zypper rm -u <package> ,但是 zypper 没有不加参数的 autoremove 的功能。

AppImage 打包就应该把所有依赖都打包进去,不应该需要依赖系统的包。你说的这个情况应该是打包质量不佳……?