为什么删除 Iceweasel 会破坏 GNOME?

为什么删除 Iceweasel 会破坏 GNOME?

我有一个较旧的 Debian 7 虚拟机用于测试。我正在尝试减少虚拟机占用空间,因为我的空间即将耗尽。我想删除 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.
...

为什么删除 Iceweasel 会破坏 GNOME?


移除Iceweasel然后进行一次autocleanautoremove通过后,就呈现了这个。我相当确定这个虚拟机已经变得毫无用处。

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.

答案1

正如其他人所解释的,桌面元包 - 例如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

还删除gnome-coregnome

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

有几种解决方法:

  • 如果你想gnome-core在没有 Iceweasel 的情况下保持安装,请使用equivs或者apt-holepunch(在这种情况下后者更容易使用,谢谢约书亚!) 构建一个假iceweasel包并将其与gnome-core;一起安装

  • 遍历所有的包gnomegnome-core取决于,决定您想要使用和/或需要其中哪一个(例如 gdm3, gnome-session, nautilus...),并使用它们进行标记

      apt-mark manual ...
    

    或者使用 的aptitudeGUI(这会容易得多)。

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

答案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

答案3

真的不应该使用 * 正则表达式来删除东西——我从经验中知道这一点。使用 * 会删除名称中包含“iceweasel”的每个包。如果要删除iceweasel,请删除iceweasel包(无星号)并删除iceweasel文件夹的内容。我不知道有问题的“iceweasel”包是什么,它可能是hyphen-en-us libfs6 task-desktop x11-apps x11-session-utils x11-xfs-utils xinit xorg.任何一个。仅快速查看和自动删除xorg/x11就会破坏 99% 的 *Nix GUI。要找出您删除的iceweasel软件包的作用grep iceweasel /var/log/apt/history.log,并查找以“如果您仍然好奇”"Remove:"开头的行Commandline: apt-get remove iceweasel* ,请发布结果,我(或其他人)可以找出确切的依赖性问题。 :)

像这样的依赖性问题当然是不合逻辑的,它的存在是为 .deb 制作元数据的人的错误。不过,我会在提交错误报告之前找出确切的问题。因此我上面的回答。 :D

相关内容