为什么删除 Iceweasel 会破坏 GNOME?

19 gnome debian apt iceweasel

我有一个较旧的 Debian 7 VM 用于测试。我正在尝试减少 VM 占用空间的大小,因为我的空间即将用完。我想删除 Iceweasel,因为我并不真正使用它,而且我通常可以使用wget. 当我运行Apt它时,它告诉我它也在删除 GNOME:

$ sudo apt-get remove iceweasel*
...

The following packages were automatically installed and are no longer required:
  hyphen-en-us libfs6 task-desktop x11-apps x11-session-utils x11-xfs-utils
  xinit xorg
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  icedove iceowl-extension
Suggested packages:
  apparmor calendar-google-provider
The following packages will be REMOVED:
  gnome gnome-core iceweasel task-gnome-desktop
The following NEW packages will be installed:
  icedove iceowl-extension
0 upgraded, 2 newly installed, 4 to remove and 0 not upgraded.
Need to get 44.7 MB of archives.
After this operation, 100 MB of additional disk space will be used.
...
Run Code Online (Sandbox Code Playgroud)

为什么删除 Iceweasel 会破坏 GNOME?


移除Iceweasel,然后进行autocleanautoremove通过后,呈现了这一点。我相当肯定这个 VM 已经变得毫无用处了。

The following packages will be REMOVED:
  aisleriot ant ant-optional argyll at-spi2-core baobab browser-plugin-gnash
  ca-certificates-java caribou caribou-antler cheese dconf-tools default-jre
  default-jre-headless empathy empathy-common espeak-data file-roller finger
  fonts-cantarell fonts-opensymbol fonts-sil-gentium fonts-sil-gentium-basic
  gcalctool gdebi gdm3 gedit gedit-common gedit-plugins gir1.2-atspi-2.0
  gir1.2-gdata-0.0 gir1.2-gnomekeyring-1.0 gir1.2-goa-1.0 gir1.2-gtop-2.0
  gir1.2-gucharmap-2.90 gir1.2-javascriptcoregtk-3.0 gir1.2-rb-3.0
  gir1.2-tracker-0.14 gir1.2-webkit-3.0 gir1.2-wnck-3.0 glchess glines gnash
  gnash-common gnect gnibbles gnobots2 gnome-backgrounds gnome-color-manager
  gnome-dictionary gnome-disk-utility gnome-documents gnome-font-viewer
  gnome-games gnome-games-data gnome-games-extra-data gnome-icon-theme-extras
  gnome-mag gnome-nettool gnome-orca gnome-packagekit gnome-packagekit-data
  gnome-screenshot gnome-shell-extensions gnome-sudoku gnome-system-log
  gnome-tweak-tool gnome-video-effects gnomine gnotravex gnotski gnuchess
  gnuchess-book grilo-plugins-0.1 gtali gucharmap guile-2.0-libs
  hamster-applet hyphen-en-us iagno icedtea-6-jre-cacao icedtea-6-jre-jamvm
  icedtea-netx icedtea-netx-common inkscape iputils-tracepath java-common
  libapache-pom-java libatk-adaptor libatk-adaptor-data libatk-bridge2.0-0
  libatk-wrapper-java libatk-wrapper-java-jni libatspi1.0-0 libatspi2.0-0
  libavahi-gobject0 libavahi-ui-gtk3-0 libblas3gf
  libboost-program-options1.49.0 libboost-thread1.49.0 libcaribou-gtk-module
  libcaribou-gtk3-module libcmis-0.2-0 libcolamd2.7.1 libcolorblind0
  libcommons-beanutils-java libcommons-collections3-java
  libcommons-compress-java libcommons-digester-java libcommons-logging-java
  libcommons-parent-java libdb-java libdb-je-java libdb5.1-java
  libdb5.1-java-jni libdee-1.0-4 libdiscid0 libdmapsharing-3.0-2 libdotconf1.0
  libespeak1 libexttextcat-data libexttextcat0 libfs6 libgail-common
  libgdict-1.0-6 libgdict-common libgdu-gtk0 libgeocode-glib0 libgexiv2-1
  libgnome-mag2 libgpod-common libgpod4 libgraphite2-2.0.0 libgrilo-0.1-0
  libgtk-vnc-2.0-0 libgupnp-av-1.0-2 libgupnp-dlna-1.0-2 libgvnc-1.0-0
  libhsqldb-java libhyphen0 libicc2 libicu4j-java libimdi0 libjaxp1.3-java
  libjline-java libjtidy-java liblinear-tools liblinear1 liblouis-data
  liblouis2 liblucene2-java libmagick++5 libminiupnpc5 libmtp-common
  libmtp-runtime libmtp9 libmythes-1.2-0 libnatpmp1 libplot2c2 libpstoedit0c2a
  libraw5 libregexp-java libreoffice libreoffice-base libreoffice-base-core
  libreoffice-calc libreoffice-common libreoffice-core libreoffice-draw
  libreoffice-emailmerge libreoffice-evolution libreoffice-filter-binfilter
  libreoffice-filter-mobiledev libreoffice-gnome libreoffice-gtk
  libreoffice-help-en-us libreoffice-impress libreoffice-java-common
  libreoffice-math libreoffice-report-builder-bin libreoffice-style-galaxy
  libreoffice-style-tango libreoffice-writer librhythmbox-core6 libsctp1
  libservlet2.5-java libsofia-sip-ua-glib3 libsofia-sip-ua0 libsonic0
  libspeechd2 libstlport4.6ldbl libsvm-tools libtelepathy-farstream2
  libunique-3.0-0 libvisio-0.0-0 libwnck-common libwnck22 libwpd-0.9-9
  libwpg-0.2-2 libwps-0.2-2 libxalan2-java libxerces2-java
  libxml-commons-external-java libxml-commons-resolver1.1-java libxss1
  libxz-java lightsoff lksctp-tools lp-solve mahjongg media-player-info
  minissdpd mobile-broadband-provider-info mythes-en-us network-manager-gnome
  nmap openjdk-6-jre openjdk-6-jre-headless openjdk-6-jre-lib openjdk-7-jre
  openjdk-7-jre-headless p7zip-full perlmagick pstoedit python-brlapi
  python-louis python-mako python-markupsafe python-pyatspi python-pyatspi2
  python-speechd python-uno python-wnck python-zeitgeist quadrapassel rdesktop
  rhythmbox rhythmbox-data rhythmbox-plugin-cdrecorder rhythmbox-plugins rygel
  rygel-playbin rygel-preferences rygel-tracker seahorse shotwell
  shotwell-common simple-scan sound-juicer sound-theme-freedesktop
  speech-dispatcher swell-foop task-desktop telepathy-gabble telepathy-idle
  telepathy-logger telepathy-rakia telepathy-salut transmission-common
  transmission-gtk ttf-liberation ttf-sil-gentium-basic tzdata-java uno-libs3
  unoconv ure vinagre vino x11-apps x11-session-utils x11-xfs-utils xbrlapi
  xdg-user-dirs-gtk xfonts-mathml xinit xorg xul-ext-adblock-plus
  zeitgeist-core
0 upgraded, 0 newly installed, 278 to remove and 0 not upgraded.
Run Code Online (Sandbox Code Playgroud)

Ste*_*itt 23

正如其他人所解释的那样,桌面元包——例如task-desktopgnome-core——现在安装了一个网络浏览器(嗯,实际上已经有很长一段时间了)。您可能希望gnome-core安装 Epiphany,或者至少允许它作为 Iceweasel 的替代品,但出于安全原因它不会。该gnome-core说明提到了浏览器的依赖:

这些是 GNOME 桌面环境的核心组件,是一个直观且有吸引力的桌面。

这个元包依赖于一组基本的程序,包括文件管理器、图像查看器、网络浏览器、视频播放器和其他工具。

它包含 GNOME 桌面的官方“核心”模块。

所以它依赖于 Iceweasel 的原因有两个:

  • 它被定义为取决于网络浏览器;
  • GNOME 桌面依赖的唯一合理的浏览器是 Iceweasel,因为 Epiphany 没有足够的安全支持,而且 Chromium 没有正确集成到桌面中。

曾经有一个对 的替代依赖gnome-www-browser,但它在 2011 年删除(据我所知没有解释)。可能值得要求维护人员重新引入它,但如果没有gnome-core浏览器,它不会帮助您安装。

如果您删除 Iceweasel,导致 GNOME 被删除的机制相对简单。当你要求apt-get做某事时,它真的很努力地去做——所以删除一个包会删除任何依赖它的东西(在问你之后)。gnome-core取决于iceweasel, 并且gnome取决于gnome-core, 所以

apt-get remove iceweasel
Run Code Online (Sandbox Code Playgroud)

也删除gnome-coregnome

删除这些元包会导致它们依赖的所有包成为使用 删除的候选者autoremove,因为打包系统现在认为它们是不必要的(没有标记为未自动安装的包依赖于它们)。打包系统认为用户确实想要那些被明确标记为已安装的包,而安装其他任何东西只是为了支持这些包。因此,如果有任何删除gnomeor gnome-core,下次运行时apt-get autoremove,它会认为许多已安装的软件包是不必要的...

有几种解决方法:

  • 如果您想在gnome-core没有 Iceweasel 的情况下继续安装,请使用equivsor apt-holepunch(在这种情况下后者更容易使用,感谢Joshua!)构建一个假iceweasel包并将其与gnome-core;

  • 经过所有包gnomegnome-core依赖,决定你想要的人使用和/或需要(例如 gdm3gnome-sessionnautilus...),并利用它们标记

      apt-mark manual ...
    
    Run Code Online (Sandbox Code Playgroud)

    或使用aptitude的 GUI(这会容易得多)。

在任何情况下,除非您开始删除必要的软件包(并且在允许您这样做之前会大声抱怨)或内核,否则您不能通过删除软件包来破坏您的虚拟机apt-get。您可能最终不得不登录到文本控制台,但您可以从那里修复问题,就像从 X 终端模拟器一样。

  • @phk 这是一个很好的问题,对 `gnome-www-browser` 的替代依赖 [已于 2011 年移除](https://anonscm.debian.org/viewvc/pkg-gnome?view=revision&revision=29732) 但它是仍然由 Chromium、Epiphany、Iceweasel 和 Firefox 提供......(而且 Cinnamon 仍然使用它。) (2认同)

sou*_*edi 2

任务是在安装时选择的 ( tasksel),并且“Web 浏览器”没有单独的任务...理论上它可能是特定于桌面的,就像 KDE3 时代那样。人们希望默认桌面包含一个网络浏览器,如果没有其他办法的话,就可以在他们的新系统上获得帮助:)。因此,桌面任务包括默认的 Web 浏览器 QED。

除了我们的问题评论是错误的。task-gnome-desktop 不需要iceweasel。它只是推荐它。

(得票最多的答案表明存在确实需要它的间接关系。从表面上看,这种依赖结构很可能还有改进的空间。但我认为以下内容仍然有效。)

你错过了一些非常重要的事情。

以下软件包已自动安装,不再需要: hyphen-en-us libfs6 task-desktop

事实证明(删除 Iceweasel 后?)您没有安装依赖或推荐的软件包task-desktop。它也没有标记为手动安装。所以当然apt-get autoremove要删除它。

问号是因为查看 Debian 软件包数据库,我没有看到iceweasel 如何依赖或推荐task-desktop。它可能已经是自动删除的。

使用自动删除时要小心。如果自动删除表明您的整个桌面被认为是不必要的,则取消它并将您的桌面标记为手动安装 ( apt-mark)。

VM并非无用;您可以登录控制台并运行apt-get install task-gnome-desktop。如果您不想要推荐的套餐像冰鼬一样,你可以尝试使用apt-get install task-gnome-desktop iceweasel-

还可以使用synaptic(GUI) 或aptitude(TUI) 取消标记推荐的依赖项。(请注意,aptitude 默认情况下会自动删除,而 synaptic 有一个不再需要的软件包列表,您可以在某处找到)。遗憾的是,如果你尝试做这类事情,IME 突触现在可能会变得非常笨重和滞后。请参阅https://askubuntu.com/questions/622031/how-do-i-exclude-specific-packages-from-installation-with-apt-get