![为什么大型包依赖于特定的图标主题?](https://linux22.com/image/1057736/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%A4%A7%E5%9E%8B%E5%8C%85%E4%BE%9D%E8%B5%96%E4%BA%8E%E7%89%B9%E5%AE%9A%E7%9A%84%E5%9B%BE%E6%A0%87%E4%B8%BB%E9%A2%98%EF%BC%9F.png)
我使用 Breeze 图标主题,想卸载其他主题。
然而,当我尝试时,有大量其他依赖项被删除。
例如人类图标主题
sudo apt-get remove humanity-icon-theme
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
adwaita-icon-theme-full
The following packages will be REMOVED:
humanity-icon-theme ubuntu-mono
The following NEW packages will be installed:
adwaita-icon-theme-full
0 upgraded, 1 newly installed, 2 to remove and 2 not upgraded.
Need to get 8,429 kB of archives.
After this operation, 3,985 kB disk space will be freed.
Do you want to continue? [Y/n] n
Abort.
- 为什么当我删除图标主题时单声道也会被删除?
- 为什么另一个包裹添加当我移除一套?
这些主题是否有一个层次结构并且相互依存?
另一个示例:adwaita-icon-theme
sudo apt-get remove adwaita-icon-theme
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following package was automatically installed and is no longer required:
gnome-icon-theme
Use 'sudo apt autoremove' to remove it.
The following additional packages will be installed:
gnome-icon-theme
The following packages will be REMOVED:
adwaita-icon-theme firefox gtk2-engines-pixbuf gtk3-engines-breeze humanity-icon-theme kde-config-gtk-style kde-config-gtk-style-preview libgail-common libgail18 libgtk-3-0
libgtk-3-bin libgtk2.0-0 libgtk2.0-bin libscim8v5 plasma-desktop ubuntu-mono
The following NEW packages will be installed:
gnome-icon-theme
0 upgraded, 1 newly installed, 16 to remove and 2 not upgraded.
Need to get 9,618 kB of archives.
After this operation, 157 MB disk space will be freed.
Do you want to continue? [Y/n] n
Abort.
这更加极端,正在删除 Firefox 和整个 Plasma 桌面!
为什么这些其他包依赖于特定的图标主题?
答案1
你的问题有点太宽泛了。不过我还是回答一下吧。
案例 1:当试图删除humanity-icon-theme
你对这个案例有两个问题。第一个是
- 为什么当我删除图标主题时单声道也会被删除?
ubuntu-mono
在您尝试删除时humanity-icon-theme
,由于ubuntu-mono
依赖humanity-icon-theme
软件包而被删除。规则是,删除其他软件包所依赖的软件包,将触发这些依赖软件包的删除。
apt-cache depends ubuntu-mono
你可以通过命令来查看
→ apt-cache depends ubuntu-mono
ubuntu-mono
Depends: adwaita-icon-theme
Depends: hicolor-icon-theme
Depends: humanity-icon-theme
显然看出ubuntu-mono
取决于humanity-icon-theme
。
关于此案的第二个问题是
- 为什么当我删除一个包时会添加另一个包?
adwaita-icon-theme-full
正准备安装,而您正试图删除humanity-icon-theme
。
理论apt
是: 如果一些重要的软件包依赖于即将被删除的软件包,请寻找一些具有与即将被删除的软件包相同功能的其他软件包并尝试安装它。
这正是这里发生的事情。你正在删除humanity-icon-theme
,但有些软件包需要它。那么,该怎么办?寻找其他可以完成 工作的软件包humanity-icon-theme
。Apt 发现它可以adwaita-icon-theme-full
,因此选择它进行安装。
案例 2:尝试移除adwaita-icon-theme
您问为什么在只删除图标主题时要删除 Firefox 和其他软件包。原因是一样的。这个包以某种方式,即使通过很长的依赖链,也依赖于adwaita-icon-theme
。因此,尝试删除它将触发那些依赖包的删除。
例如,firefox
依赖于libgtk-3-0
,而 又依赖于libgtk-3-common
,而 又依赖于adwaita-icon-theme
。因此,尽管 Firefox 并不直接依赖于图标主题,但它的一些依赖项需要它。(您可以使用apt-cache depends packagename
命令语法来验证这一点)
gnome-icon-theme
对于为什么在这里安装的问题,可以给出相同的答案。
希望有所帮助。
OP 在评论中问道
不过我不明白为什么这些包会依赖于特定的主题。主题的意义不就是可以更改吗?
是的,依赖特定主题是不好的。但图形桌面环境也需要某种图标,对吧?如果桌面环境不需要图标,它将如何呈现图标和主题组件?这就是为什么每个桌面环境都为其指定默认/后备图标主题。对于 GNOME 来说,它是adwaita-icon-theme
。所以,如果你删除它,GNOME 应用程序可能也会和你告别!在我的系统中,当我发出删除它的命令时,它试图删除346包。
但除了这些默认设置之外,您还可以添加和删除任何其他主题包。