对 opensuse 的包管理很困惑,主要纠结几个问题,求指教

  1. 如何清理 yast 更新安装软件时留下的软件包缓存(就是那些从软件源下载下来的那些软件,他们安装完就没用了,我不想让他们继续占用磁盘空间)
  2. 每次卸载软件都需要联网更新软件源信息吗,万一我断网了是不是连软件也卸载不了了
  3. 用 yast 卸载某些软件时,为什么会安装一些非系统必须新的软件?这些软件虽然可以勾选不安装,但由于我不确定是什么用途也不敢轻易取消,往往安装之后才发现不是我需要的,只能再卸载,这点也太不人性化了吧,不是系统必备的为什么要默认安装呢
  1. 默认是不保存那些软件包的,不过可以在软件源设置保留已下载的软件包

  2. 刷新软件源可以得到最新的更新,但不是每一次运行 zypper 都需要的,图形界面的话默认是每次安装软件包都要刷新的,也可以跳过。卸载软件可以用:

    zypper --no-refresh rm -u [package]

–no-refresh 表示不刷新软件源
3. 这个我不太清楚,貌似是这样子,rpm 包打包的时候会写有推荐安装的软件包,但是不一定都要安装,openSUSE 默认都装上了。

  1. 你自己不改配置那么装好更新重启就没了。

  2. 纠正你一个概念,不是每次卸载软件都要更新软件源信息。而是你每次打开软件管理都要更新软件源信息。

至于怎么不那么做请看这篇帖子:http://bbs.suse.org.cn/viewtopic.php?f=10&t=882&sid=07c55192d79c238a264ab60a9763c89a

断网刷新肯定不成功。然后你就可以继续卸载软件了。

  1. 请先定义“非系统必须性”,如果你认为只有 openSUSE 操作系统运行必须的软件包才是,那么你自行安装的任何软件都不是。甚至这样的软件包只有 108 个,但是装完没图形界面的。于是你就认为图形界面是系统必须性的软件,但有些不需要图形界面的人比如服务器肯定不这么认为。所以原因只有一个,我们不是 LFS,我们的系统装好就要能够在某些情况下直接使用,比如 cron 计划任务,除了系统管理员都没用,于是默认不装?所有的 Linux 都装的。

如果发生在安装阶段,原因只有一个,自动勾选的是你手选安装的软件包运行或取得完全功能必须的依赖关系。如果发生在卸载阶段,明明你要卸载一个软件包结果自动安装的比你卸载的还多,原因也只有一个,你卸载了不应该卸载的软件包,而这些软件包往往恰恰是你所谓的“系统必须性”软件包。所以不对的多数不是 YaST。

这次真的是 yast 的不对。就是在我卸载系统默认安装的视频播放器 kaffeine/kde3(应该是这个名字,记不太清了)时,默认在卸载同时安装了 kaffeine,我感觉不到他们两个有什么区别。之后我只得再次卸载 kaffeine,可以安全卸载,对系统并无影响,应该就属于我不想要,也非系统正常运行所必需那类
ps:

  1. 我发现在 yast 的软件安装与卸载窗口的“选项”下有一个“忽略已安装软件包的推荐包”,是不是将其勾选就可避免类似上面的情况了

  2. 我到 /var/cache/zypp/packages 下看了看,还有好多软件包缓存,软件源没有设置保存下载软件包;/var/cache/zypper 下好像保存的是自己单独从别处下载安装软件时留下的软件包。他们都在,有没有类似 ubuntu 下 apt-get clean 之类的一键清除命令

我卸载了系统自带的若干软件,比如一些游戏,还有 libreoffice。在安装别的软件的时候会自动勾选我曾卸载掉的软件。后来我把 source 源禁用掉了,现在没提示。(sorry,与 source 源无关,已证明。起作用的应该是选项 – 勾选忽略推荐的软件包)

这个应该和 source 源没有啥关系吧。虽然我一直搞不明白 source 源有啥用,因为它提供的是.src.rpm 又不能直接装,但是应该不会影响到推荐软件包的问题吧。我估计把那个“忽略已安装软件包的推荐包”勾上应该能解决问题吧(好吧,俺在 gnome 的 yast 包管理下没找到这个~)

普通用户是用不到 source 源的,debug 源也是,所以这两种我一般都是直接删除掉

  1. 抱歉,做技术论坛要的就是一个严谨的态度。我得抽空默认安装个 KDE 验证下你说的安装 KDE3 的 Kaffeine 的情况。虽然我直观感觉这种指责是非常无稽的,但是我现在不能反驳你。KDE4 已经 5 年多了,然后作为一个大发行版默认给你安个 KDE3 的视频播放器作为默认视频播放器?

另外解释下,KDE 作为一套桌面环境需要有一个默认的视频播放器,KDE 自己选的是 Kaffeine。不然就叫做功能不全。如果把 KDE 看成一种系统(它本身就是),Kaffeine 就是它运行所需的,不然至少你不装别的连开源编码的视频都看不了对吧。就好比你攒电脑,不装无线网卡,是的你可以拿个外接的 USB 网卡插上,但是你没插的话就是用不了无线网对吧。如果放在一个无线网是标配的环境下(比如笔记本),那就是系统运行所需的。而一个桌面环境就应该能看视频,那你说 Kaffeine 是不是系统运行所需的?所以问题可能一是在于你对”系统运行所需的包“的定义不一样,二是在于你本意就是想要去掉 KDE 提供的这种功能而用别的软件提供的相同功能做替代。

推荐包完成的是额外功能。比如 dolphin 叫文件管理器,设计就是看文件和文件夹的,但如果你想获得更高级的功能比如看一个文件夹是不是 git 管理的,那 git 就叫做 dolphin 的一个推荐软件包。如果 KDE 的主包比如 kdebase4 写死了我就是要 /usr/bin/kaffeine,就像我就是要 konqueror 一样。那么你打不打那个勾都没用。你之前出现的情况可能就是你卸载了一个 KDE 固定要的包,然后有两个包同时" 提供" 了该功能,那你卸掉一个默认就装另一个,就像中文环境的 ibus 和 fcitx 一样。只有你把所有的选择都取消,系统才会知道”噢,这家伙想自己搞“。

  1. /var 设计的目的就是保存系统运行中需要的可变文件。空间不够它自己就会清理,不用你来管。所以不清理的原因只有一个,你空间还够。

如果你想要清理的话,可以打开 YaST - Sysconfig 编辑器 - System - Cron 看下面的选项的说明。

forums.opensuse.org/english/get-technical-help-here/how-faq-forums/unreviewed-how-faq/412640-clear-temp-files-boot.html

但那已经是另一个问题了。

所以不管你看着怎么不舒服,那个文件夹就是干那个的,那么干就是允许的。或者换句话说,apt-get 如果清理的是这个文件夹的话,那表明是它在多管闲事,虽然你不认为那叫多管闲事,但从系统角度那就是多管闲事,就好比小白不认为 360 的软件推荐是多管闲事一样。

source 源的作用是安装源代码和 openSUSE 添加的 spec 文件和各种补丁。它的作用在于服务器使用者或对默认编译选项不满意的用户可以 基于 openSUSE 的官方作品来进行进一步的优化,而不用基于上游的 (vanilla) 重复做无用功,比如 avifile 有 15 个补丁才能正常编译,如果你不基于我们的作品来搞,在你会修 c++ 错误的情况下,这 15 个补丁也可以浪费你一周时间。更难还有比如内核。

所以这个源在 YaST 里是写明了" 仅供专家 / 开发者使用" 的,你的使用问题和根本没在你电脑上编译过的源代码怎么会有关系呢。唯一有关系的是你把禁用了它和目前没出问题写在了一起让不懂的人以为这两者是有关系的。我可以确信的说,你开了它,目前你也不会有问题。

谢谢指教,我搞错了。我曾经勾选忽略为安装的软件推荐的软件包,后来取消勾选。source 源对这个问题无关,sorry for my confusion. :joy: