我是一个相对较新的 OpenSuse 用户,使用了 Ubuntu 好几年了。在 Ubuntu 中,更新管理器会不时弹出,让我知道什么时候需要安装东西。如果我想手动检查更新,我会sudo apt-get update
。在 OpenSuse 中,我没有 GUI 更新程序,所以只要我记得,我就会这样做,sudo zypper update
但我从来没有得到太多。但是,今天我得到了这个:
Loading repository data...
Reading installed packages...
The following package updates will NOT be installed:
amarok choqok curl digikam digikam-lang DirectFB DirectFB-Mesa ecj ecj-bootstrap gstreamer-0_10 gstreamer-0_10-fluendo-mp3
jpackage-utils k3b kipi-plugins kipi-plugins-acquireimage ksshaskpass ktorrent ladspa lame libcurl4 libcurl4-32bit libdca0
libdvbpsi6 libfaac0 libfaad2 libgstreamer-0_10-0 libgstreamer-0_10-0-32bit libktorrent3 liblash1 libmad0 libmp3lame0 libmpeg2-0
libopencore-amrnb0 libopencore-amrwb0 libopencv2_2 libproxy1 libqjson0 libSDL-1_2-0 libSDL_image-1_2-0 libshout3 libtag-extras1
libtheora0 libtwolame0 libvlc5 libvlccore4 libxine1 libxine1-gnome-vfs libxine1-pulse libxvidcore4 oxygen-gtk python-numpy
shared-desktop-ontologies skanlite virtualbox-guest-kmp-desktop virtualbox-guest-tools virtualbox-guest-x11 vlc vlc-aout-pulse
vlc-gnome vlc-noX vlc-qt xalan-j2 xerces-j2 xerces-j2-xml-apis
Nothing to do.
那么这些软件包是否需要更新?如果它们不需要我的注意,zypper 为什么要告诉我呢?我之所以问这个问题,是因为我曾尝试从源代码构建一些东西,但在 gcc 和类似的东西上遇到了错误(当我知道我已经安装了它们时——这可能是完全不同的问题)。
另外,有没有办法像 Ubuntu 那样使更新半自动进行?
编辑:我查看了软件管理器(通过 YAST),但没有看到任何软件包更新。
答案1
这都是关于存储库的。当您使用 zypper 更新时,它会查看您启用的所有存储库。但有些软件包出现在多个存储库中。例如,假设您同时激活了“Suse update”和“Packman”存储库。那么 zypper 可能会找到一个更新,例如流处理器在两者中。那么它要做什么呢?因为它“知道”你当前安装了哪个存储库流处理器来自(例如 Suse 更新),它将仅安装来自该 Suse 存储库的更新。但在更新之前,它会告诉您它还在 Packman 存储库中找到了 gstreamer 更新,但不会使用它。这就是为什么您会得到一个“不会安装”的列表。
所以这其实不是问题,只是同一个软件包的多个版本位于不同的存储库中。在上面的例子中,如果你禁用了 Packman 存储库,你会发现“不会安装”消息会消失。
为了保持一切整洁,您应该将活动存储库的数量保持在所需的绝对最小值。
答案2
我已经解决了。
原来我删除了 YAST 中存储库的“自动更新”选项。设置为自动更新解决了问题,我成功运行了“sudo zypper update”
答案3
另外,一次性更新所有已安装软件包的最佳方法是打开 yast 中的“安装软件”,然后转到“软件包菜单”,然后选择“所有软件包”,如果有新版本可用,则进行更新。这将选择所有更新的软件包进行安装。当您打开 Yast 安装软件时,如果您已将其设置为自动刷新,通常会刷新存储库。