У меня есть старая виртуальная машина 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
прохода, это было представлено. Я почти уверен, что эта 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.
решение1
Как уже объясняли другие, метапакеты рабочего стола — такие как task-desktop
илиgnome-core
— установить веб-браузер в настоящее время (ну, на самом деле, довольно долго). Вы могли бы ожидать gnome-core
установки Epiphany, или, по крайней мере, разрешить его как альтернативу Iceweasel, ноэто не по соображениям безопасности. В gnome-core
описании упоминается зависимость от браузера:
Это основные компоненты среды рабочего стола GNOME — интуитивно понятного и привлекательного рабочего стола.
Этот метапакет зависит от базового набора программ, включая файловый менеджер, просмотрщик изображений, веб-браузер, видеоплеер и другие инструменты.
Он содержит официальные «основные» модули рабочего стола GNOME.
Итак, есть две причины, по которым он зависит от Iceweasel:
- он определяется как зависящий от веб-браузера;
- Единственный разумный браузер, на который можно положиться для рабочего стола GNOME, — это Iceweasel, поскольку 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-терминала.
решение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
).
VM не бесполезна; вы можете войти в консоль и запустить 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
решение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