为什么要删除Iceweasel nuke GNOME?


19

我有一个较旧的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.
...

为什么要删除Iceweasel nuke 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.

有关帮助您的命令,请参见askubuntu.com/questions/5636/…
phk

谢谢PHK。Apt告诉我依赖性。我很想知道为什么存在依赖项。我怀疑aptitude会告诉我为什么存在依赖项。

1
好的,但是如果例如debian-desktop在其他浏览器中直接说(我知道这是Debian而非Ubuntu,只是为了论证),那么它会告诉您有人认为Web浏览器对于图形桌面。
phk

(在这种情况下,技巧就在于,您必须下一层,选择实际需要的task-gnome-desktop依赖项,以及apt-mark在删除task-gnome-desktop之前手动安装的依赖项)。如果您使用debian已有一段时间,那么这很可能是令人惊讶的,因为debian最初并未使用这些单个元软件包来实现其“任务”。
sourcejedi '16

1
也许是因为*?我apt-get remove wine*以前曾破坏过我的侏儒。
2016年

Answers:


23

正如其他人所解释的那样,台式机元软件包(例如task-desktop或)gnome-core如今已经安装了Web浏览器(嗯,实际上是相当长的时间)。您可能希望gnome-core安装Epiphany,或者至少允许它作为Iceweasel的替代品,但是出于安全原因它不是。该gnome-core描述提到了浏览器依赖性:

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

此元数据包取决于一组基本程序,包括文件管理器,图像查看器,Web浏览器,视频播放器和其他工具。

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

因此,它依赖Iceweasel的原因有两个:

  • 它的定义是取决于网络浏览器;
  • Iceweasel是唯一可用于GNOME桌面的明智的浏览器,因为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的情况下继续安装,请使用equivsapt-holepunch(在这种情况下,后者更容易使用,感谢Joshua!)来构建一个伪造的iceweasel软件包并将其与gnome-core; 一起安装。
  • 经过所有包gnomegnome-core依赖,决定你想要的人使用和/或需要(例如 gdm3gnome-sessionnautilus...),并利用它们标记

    apt-mark manual ...
    

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

无论如何,除非您开始删除必需的软件包(在允许您这样做之前会大声抱怨)或内核,否则您无法通过删除软件包来破坏 VM apt-get。您可能最终不得不登录到文本控制台,但是您可以从那里以及从X终端模拟器中修复问题。


好答案!只是想知道,什么是gnome-www-browser“虚拟”软件包?
phk

2
@phk这是一个很好的问题,对替代的依赖已在2011gnome-www-browser删除,但仍由Chromium,Epiphany,Iceweasel和Firefox提供...(而Cinnamon仍在使用它。)
Stephen Kitt

1
顺便说一句,这里的东西做从依赖排除了包W / O集结ENV的工作取决于所做的工作就是的:mail-archive.com/debian-bugs-dist@lists.debian.org/msg900702/...
约书亚

谢谢斯蒂芬。我不是要扯头发,而是为什么要依赖呢?关于“它被定义为依赖于网络浏览器”,我无法理解为什么存在依赖关系。那真的是我的问题。对困惑感到抱歉。

另外,您对“ ...您无法通过删除[这些特定]软件包来破坏VM”是正确的。重新启动后,我得到了一个非GUI登录屏幕,并且能够通过SSH进入系统。我对终端机/命令行感到满意,因此它对我来说显然不是坏的或无用的。其他人可能需要台式机。我不希望我的母亲或父亲尝试使用这台机器。

2

在安装时选择任务(tasksel),“ Web浏览器”没有单独的任务...从理论上讲,它可能是特定于桌面的,如KDE3天。人们期望默认的桌面包含一个Web浏览器,如果没有其他东西可以在他们的新系统上获得帮助:)。因此,桌面任务包括默认的Web浏览器QED。

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

(最upvoted答案表明有哪些间接的关系确实需要它。在它的面前,很可能有余地这种依赖结构的改善。我觉得下面仍然是有效的。然而。)

您错过了非常重要的事情。

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

原来(删除iceweasel吗?),您没有安装依赖或推荐的软件包task-desktop。它也没有标记为手动安装。因此,当然apt-get autoremove将其删除。

问号,因为查看Debian软件包数据库,我看不到iceweasel如何依赖或推荐task-desktop。它可能已经可以自动移动了。

使用自动删除时请多加注意。如果自动删除显示您不需要整个桌面,请取消该桌面并将其标记为手动安装(apt-mark)。

虚拟机不是没有用的。您可以登录到控制台并运行apt-get install task-gnome-desktop。如果您不想要推荐的套餐像冰鼬,您可以尝试使用apt-get install task-gnome-desktop iceweasel-

也可以使用synaptic(GUI)或aptitude(TUI)取消标记推荐的依赖项。(请注意,默认情况下aptitude会自动删除,而synaptic则列出了您不再需要的软件包列表)。令人遗憾的是,如果您尝试执行此类操作,那么IME突触如今可能会变得笨拙和迟钝。参见/ubuntu/622031/how-do-i-exclude-specific-packages-from-installation-with-apt-get


2

确实不应该使用*正则表达式删除内容-我从经验中知道这一点。使用*删除名称为“ iceweasel”的每个程序包。如果要删除iceweasel,请删除iceweasel程序包(不带星号),然后删除iceweasel文件夹的内容。我不知道什么是令人讨厌的“ iceweasel”软件包,它可能是的任何反向依赖项hyphen-en-us libfs6 task-desktop x11-apps x11-session-utils x11-xfs-utils xinit xorg。其中任何一个。就让我们来看看和autoremoving xorg/ x11仅此一项就打破* NIX GUI的99%。要找出您删除了哪些iceweasel软件包,请在“ 如果您仍然很好奇” 下grep iceweasel /var/log/apt/history.log查找结果开头的行,然后我(或其他人)可以找出确切的依赖关系问题。:)"Remove:"Commandline: apt-get remove iceweasel*

这样的依赖关系问题当然是不合逻辑的,对于为.deb制作元数据的人来说,它的存在是一个错误。我会在提交错误报告之前先弄清楚确切的问题。因此,我上面的答案。:D


谢谢trudgemank。我对为什么存在依赖项更感兴趣。不是依赖性。

它不应该存在。对于为您的.deb制作元数据的人来说,它的存在是一个错误,但这并不完美。他们没有预见到后果。
trudgemank '16

您必须删除了一个不属于iceweasel元软件包的“ iceweasel”软件包。可能是默认情况下安装的一个。
trudgemank

Trudgemank-如果您回答我在回答中提出的问题,而不是评论,那么我很乐意接受该回答。为了完整起见,以下是我认为是正确的答案:“ ...(为您的.deb制作元数据的人这是一个错误”)。对不起,分开头发;那真的是我感兴趣的项目。有了这些信息,我就可以提交错误报告了。

没关系,只要我帮助我就不需要官方确认。但是,您并不是没有特定的依赖关系问题,如果要提交错误报告,则确实应该这样做。
trudgemank '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.