用的是openSUSE13.2, 最新的42.3和笔记本不兼容,旧的用着也挺好。
问题:13.2的火狐版本停在50,我下载了最新的57(官方的貌似是绿色版?压缩包里直接双击文件就运行了),想卸载50,但是卸载50的时候提示要安装thunderbird这个邮件客户端,我想卸载完50再卸载雷鸟的时候,又提示我要安装50版本的火狐,真是难过。这个怎么回事?
怎么卸载的?用YAST?
这似乎是“功能(capability)”这个功能搞的鬼。大概意思就是比如某个软件包或者 pattern 需要 “email client” 这个 capability,然后这个功能比如 Firefox 和 Thunderbird 这两个程序(还可以有更多)都提供了,就会导致卸载一个就安装另一个。
贴一下 sudo zypper info —provides firefox 和 thunderbird 的结果让我看看。
终端和yast是一样的结果。
火狐已经被我删除了,我就贴个雷鸟的
Information for package MozillaThunderbird:
-------------------------------------------
Repository: update-oss
Name: MozillaThunderbird
Version: 45.6.0-58.1
Arch: i586
Vendor: openSUSE
Installed: Yes
Status: up-to-date
Installed Size: 90.8 MiB
Summary: The Stand-Alone Mozilla Mail Component
Description:
Mozilla Thunderbird is a redesign of the Mozilla Mail component. It is
written using the XUL user interface language and designed to be
cross-platform. It is a stand-alone application instead of part of the
Mozilla application suite.
Provides:
appdata()
appdata(thunderbird.appdata.xml)
mozilla-kde4-version == 6
thunderbird == 45.6.0
MozillaThunderbird == 45.6.0-58.1
MozillaThunderbird(x86-32) == 45.6.0-58.1
特地装上50的火狐,看了一下
Information for package MozillaFirefox:
---------------------------------------
Repository: update-oss
Name: MozillaFirefox
Version: 50.1.0-94.1
Arch: i586
Vendor: openSUSE
Installed: Yes
Status: up-to-date
Installed Size: 114.0 MiB
Summary: Mozilla Firefox Web Browser
Description:
Mozilla Firefox is a standalone web browser, designed for standards
compliance and performance. Its functionality can be enhanced via a
plethora of extensions.
Provides:
appdata()
browser(npapi)
web_browser
appdata(firefox.appdata.xml)
mozilla-kde4-version == 6
firefox == 50.1.0
firefox == 50.1.0-94.1
MozillaFirefox == 50.1.0-94.1
MozillaFirefox(x86-32) == 50.1.0-94.1
就是那个 web_browser 的问题:
sudo zypper se —installed_only —requires ‘web_browser’
看看是哪个软件包
搜了,没有web_browser这个包,不过搜browser倒是有结果,会不会和kde的konqueror有关?
browser 是什么结果?
S | Name | Type | Version | Arch | Repository
–±--------------------------±------------±-----------±-------±-----------------
i | Firefox Web Browser | application | | noarch | (System Packages)
i | PackageKit-browser-plugin | package | 1.0.3-13.1 | i586 | update-oss
i | gimp-help-browser | package | 2.8.16-3.1 | i586 | update-oss
呃,我看错了,Thunderbird 下面没有 provides web_browser 或者 browser。
解决方案在这里:
谢谢,没好好利用论坛搜索。惭愧!
不过这个问题却是让我想到:为什么在卸载火狐或是雷鸟的时候,系统不是提示一起卸载那个mozilla-kde4-integration,而是推荐安装其它软件来解决?
看起来是系统认为它通过安装新包解决了依赖问题,只有它认为无法解决依赖的时候才会提示用户卸载下游软件包
因为是 mozilla-kde4-integration 依赖 Firefox 而不是 Firefox 依赖 mozilla-kde4-integration。mozilla-kde4-integration 不是 Firefox 的依赖。方向是反的。
也就是说,比如A依赖B,B依赖C,卸载B的时候会自动卸载C,然后搜其它包来满足A?其实这样也可以接受,但是,zypper应该提示我卸载B的时候,有什么包会依赖B,这样就很简单明了了。我记得apt的包管理就是提示的。
不是,是 A 依赖 B 或 C,那么卸载 B 的时候系统需要解决 A 的依赖,它找到了 C 于是自动装上 C。
如果是A依赖B,B依赖C,那么卸载B的时候系统会无法解决A 的依赖会提示用户依赖冲突,对C没有影响。
其实你可以试试在同一轮yast对话中同时卸载 B 和 C, 这时系统可能就会提示 A 的依赖无法满足了。