我有一个较旧的 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然后进行一次autoclean
并autoremove
通过后,就呈现了这个。我相当确定这个虚拟机已经变得毫无用处。
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-desktop
或gnome-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-core
和gnome
。
删除这些元包会导致它们依赖的所有包成为使用 删除的候选包autoremove
,因为打包系统现在认为它们是不必要的(标记为不自动安装的包不会依赖于它们)。打包系统认为用户确实想要那些被标记为显式安装的软件包,并且安装其他任何东西只是为了支持这些软件包。因此,如果有任何内容删除gnome
或gnome-core
,下次运行时apt-get autoremove
,它会认为许多已安装的软件包是不必要的......
有几种解决方法:
如果你想
gnome-core
在没有 Iceweasel 的情况下保持安装,请使用equivs
或者apt-holepunch
(在这种情况下后者更容易使用,谢谢约书亚!) 构建一个假iceweasel
包并将其与gnome-core
;一起安装遍历所有的包
gnome
和gnome-core
取决于,决定您想要使用和/或需要其中哪一个(例如gdm3
,gnome-session
,nautilus
...),并使用它们进行标记apt-mark manual ...
或者使用 的
aptitude
GUI(这会容易得多)。
无论如何你都不能休息除非您开始删除必要的软件包(并且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