為什麼刪除 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

相關內容