Почему удаление Iceweasel nuke GNOME?

19

У меня была старая виртуальная машина 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 nuke 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.

источник
Обратитесь к askubuntu.com/questions/5636/… за командами, которые помогут вам в этом.
phk
Спасибо ПХК. Aptговорит мне зависимости. Мне интересно знать, почему существуют зависимости. Я сомневаюсь aptitude, скажу мне, почему существует зависимость.
1
О, хорошо, но если, например, это была прямая зависимость, скажем, debian-desktop(я знаю, что это Debian, а не Ubuntu, но только для аргументации) среди других браузеров, то это скажет вам, что кто-то думал, что веб-браузер необходим для графический рабочий стол.
Phk
(и хитрость в этом случае заключается в том, что вам нужно спуститься на один уровень вниз, выбрать те зависимости task-gnome-desktop, которые вам действительно нужны, и apt-markте, которые установлены вручную перед удалением task-gnome-desktop). Если вы некоторое время использовали Debian, возможно, это удивительно, потому что Debian изначально не использовал эти одиночные метапакеты для реализации своих «задач».
Sourcejedi
1
Может это потому что *? Я уничтожил моего гнома apt-get remove wine*раньше.
Rio6

Ответы:

23

Как уже объясняли другие, метапакеты рабочего стола, такие как task-desktopили, gnome-coreв настоящее время устанавливают веб-браузер (ну, на самом деле, довольно долго). Вы можете ожидать gnome-coreустановки Epiphany или, по крайней мере, разрешить ее как альтернативу Iceweasel, но это не по соображениям безопасности . В gnome-coreописании упоминается зависимость браузера:

Это основные компоненты среды рабочего стола GNOME, интуитивно понятного и привлекательного рабочего стола.

Этот метапакет зависит от базового набора программ, включая файловый менеджер, средство просмотра изображений, веб-браузер, видеоплеер и другие инструменты.

Он содержит официальные «основные» модули рабочего стола GNOME.

Так что причины, по которым он зависит от Iceweasel, двояки:

  • определяется в зависимости от веб-браузера;
  • Iceweasel - единственный разумный браузер, от которого зависит рабочий стол GNOME, потому что Epiphany не имеет достаточной поддержки безопасности, а Chromium не интегрируется в рабочий стол должным образом.

Раньше существовала альтернативная зависимость gnome-www-browser, но она была удалена в 2011 году (насколько я могу судить, без объяснения причин). Возможно, стоит попросить сопровождающих повторно представить его, но это не поможет вам установить gnome-coreбез браузера.

Механизмы, которые приводят к удалению GNOME при удалении Iceweasel, относительно просты. Когда вы просите 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графический интерфейс пользователя (который будет намного проще).

В любом случае вы не можете сломать свою виртуальную машину, удалив пакеты, если только вы не начнете удалять необходимые пакеты (и apt-getбудете громко жаловаться, прежде чем позволить вам это сделать) или ядро. Вы можете в конечном итоге войти в текстовую консоль, но вы можете исправить ситуацию так же, как и из эмулятора X-терминала.

Стивен Китт
источник
Отличный ответ! Просто интересно, о чем тогда gnome-www-browser«виртуальный» пакет?
Phk
2
@phk Это отличный вопрос, альтернативная зависимость от него gnome-www-browserбыла удалена в 2011 году, но она по-прежнему предоставляется Chromium, Epiphany, Iceweasel и Firefox ... (и Cinnamon все еще использует ее.)
Стивен Китт,
1
Кстати, вот что делает работу по исключению пакета из зависимости без зависимости build-env от эквивалентов: mail-archive.com/debian-bugs-dist@lists.debian.org/msg900702/…
Джошуа
Спасибо Стивен. Я не хочу разбивать волосы, почему это зависимость? Что касается «он определяется как зависит от веб-браузера» , я не могу понять, почему существует зависимость. Это действительно мой вопрос. Извините за путаницу.
Кроме того, вы правы насчет "... вы не можете сломать свою виртуальную машину, удалив [эти конкретные] пакеты" . После перезагрузки у меня появился экран входа в систему без графического интерфейса, и я смог подключиться к SSH. Я доволен Терминалом / Командной Строкой, поэтому он явно не сломан и не бесполезен для меня. Однако другим может понадобиться рабочий стол. Я бы не хотел, чтобы моя мама или папа пытались использовать машину.
2

Задачи выбираются во время установки ( tasksel), и для «веб-браузера» нет отдельной задачи ... Теоретически это может быть характерно для рабочего стола, как в дни KDE3. Люди ожидают, что на рабочем столе по умолчанию будет установлен веб-браузер, если ничто иное не поможет в их новой системе :). Поэтому задача рабочего стола включает в себя веб-браузер по умолчанию, QED.

За исключением нашего вопроса комментарии неверны. task-gnome-desktop не требует использования iceweasel. Это только рекомендует.

(Ответ, получивший наибольшее количество голосов, указывает на то, что существует косвенная связь, которая этого требует. На первый взгляд, вполне возможно, что есть место для улучшения этой структуры зависимостей. Однако я думаю, что следующее все еще актуально.)

Вы пропустили что-то очень важное.

Следующие пакеты были установлены автоматически и больше не требуются: hyphen-en-us 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 synaptic может быть довольно неуклюжим и медлительным в настоящее время, если вы пытаетесь делать подобные вещи. См. Https://askubuntu.com/questions/622031/how-do-i-exclude-specific-packages-from-installation-with-apt-get

sourcejedi
источник
2

Вы действительно не должны использовать * регулярные выражения для удаления вещей - и я знаю это по опыту. Использование * удаляет каждый пакет с именем, содержащим «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

trudgemank
источник
Спасибо trudgemank. Меня больше интересует, почему существует зависимость; не то, что зависимость.
Этого не должно быть. Его существование является ошибкой со стороны людей, которые создали метаданные для ваших .deb, которые не идеальны. Есть последствия, которые они не предвидят.
trudgemank
Вы, должно быть, удалили пакет "iceweasel", который не является частью метапакета iceweasel. Возможно, один установлен по умолчанию.
trudgemank
Trudgemank - Если вы ответите на вопрос, который я задал в своем ответе, а не в комментариях, то я был бы рад принять ответ. Для полноты, вот ответ, который я считаю правильным: «... [это] является ошибкой со стороны людей, которые создали метаданные для ваших .deb» . Извините, что расстались; это действительно было предметом интереса для меня. Имея информацию в руках, я могу подать отчет об ошибке.
Все в порядке, пока я помогал, мне не нужно официальное подтверждение. Но у вас нет особой проблемы с зависимостями, вы действительно должны это делать, если хотите подать отчет об ошибке.
trudgemank