更新软件是在“YaST”的“在线更新”中更新?

更新软件是在“YaST”的“在线更新”中更新,还是在“软件管理”中“软件源”的“@System”中更新?它们有什么不同?

按照 openSUSE 手册的9.4节解释:

9.4 Keeping the System Up-to-date

SUSE offers a continuous stream of software security patches for your product. They can be installed using the YaST Online Update module. It also offers advanced features to customize the patch installation.

The GNOME desktop also provides a tool for installing patches and for installing package updates of packages that are already installed. In contrast to a Patch, a package update is only related to one package and provides a newer version of a package. The GNOME tool lets you install both patches and package updates with a few clicks as described in Section 9.4.2, “Installing Patches and Package Updates”.

注意我加黑的内容哦,在线更新是用来打补丁的。打补丁就是更新系统,他和升级包的区别在于打补丁不止会更新已有的包,也有可能会帮你安装上其它需要的包,而升级包只会帮你升级已有的包。补丁的定义详细可以参考 openSUSE 手册的9.1 节

Package
A package is a compressed file in rpm format that contains the files for a particular program.

Patch
A patch consists of one or more packages and may be applied by means of delta RPMs. It may also introduce dependencies to packages that are not installed yet.

简单理解,补丁可以包含好几个包,也可能包含未安装的包。

那么究竟要如何更新软件呢?GNOME 和 KDE 都有工具会提醒你更新包和打补丁。而且似乎只要简单的 zypper up (或在软件管理中更新所有已安装的包)就能保证所有补丁被安装(并不确定,可能需要额外安装包的补丁并不多见而我没有在意)。反正,我从来没用过在线更新,这个似乎更多的是用来 customize the patch installation 的,如果不需要 customize,似乎就用不到他。

openSUSE 的手册写得真好:-)

1赞

更新单个软件在 YaST 软件管理里面搜。自动更新桌面上有图标提示,补丁什么的。在线更新没记错是配置桌面那个提示的地方。

system 是一个虚构的源,用来标记你系统中已安装的所有包。他们实际上来自于别的不同的软件源。比如你选中一个包,切换到明细选项卡,里面你会发现两个源都打勾了,一个是 system 表示它现在安装在你系统上,另一个才是它的真正来源比如 oss。

1赞

感谢楼上两位的解答!
YaST Software Management - openSUSE 中有写 “更新会带来风险,尤其当系统运行的非常贴心,所以请勿盲目更新。”但大多数用户(特别是Leap用户)应该都是有更新就立刻全部更新的吧?

另外 “YaST”的“安全和强化中心”中“禁用额外服务”要我禁用“SuSEfirewall2_init”,我禁用后变成“启动基础系统服务”要我启动“SuSEfirewall”。-_-|||

我个人理解“SuSEfirewall2_init”应该是跟防火墙有关的,不应该禁用。不知道我理解对不对?

还有“软件管理”的“软件包分组”中的“孤立软件包”和“不需要的软件包”对新手来说,建不建议删除?

看了一下原文是这样的:

每个运行状态的服务都是安全攻击的潜在目标。因此建议关闭所有系统未使用的服务。
启用了这些额外服务:
avahi-daemon
bumblebeed
cups
avahi-daemon
SuSEfirewall2_init
检查服务列表并禁用所有没有使用的服务。

我觉得这个意思应该是,所有运行的服务都是有风险的,如果不是必要的,建议关闭,若是有必要,有风险也要开着呀。上网有风险,莫不成一开机就拔网线:-)我这里还列着 bumblebeed,若因为可能有风险就关了它,那我都不能进桌面了。所以,除非你知道这个服务是干什么的,否则不要盲目关闭哦。

我想那个文章的作者想要说的是启用了多个软件源这种情况,这在 openSUSE 中很常见。openSUSE 并不会将你的软件都更新到最新,除非你强制他这样做,当一个软件在两个软件源 A 和 B 里都有的时候,如果一开始安装了的是 A (A 一般就是官方的源)中的包,openSUSE 不会帮你更新到 B (B 一般是社区源)中的包,即使 B 中的包更新。因为夸源更新是有风险的。这种情况下桌面工具也不会提示你更新; zypper up 默认也不会帮你更新到最新,只会提示有更新的版本存在:

sudo zypper update

The following 132 package updates will NOT be installed:
  cairo-devel cmake fcitx fcitx-branding-openSUSE ...

同样的,使用 YaST2 更新的时候也不会帮你更新,除非你选择无条件更新。上一张图你就懂了:

yast2-000

最后一个孤立的包和不需要软件包的问题,我从来不管这些包,除非我知道这个包是干嘛的:-)

2赞

再次感谢解答!我又有了一个新问题(希望您不会觉得我烦人)
在只使用“YaST”的“软件管理”来管理软件的情况下,是不是可以卸载“PackageKit”?

没必要卸载吧。这个可以提醒你更新,还是不错的,二者并不冲突,卸载了你就只能手动去 YaST2 里更新了。我有一段时间是卸载,因为老占用进程,导致我不能用 zypper,现在好像已经没有这个问题了。

好的,谢谢~