我有一個較舊的 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