TL; DR или "Просто выжги мой пи"
sudo apt-get remove --auto-remove --purge 'libx11-.*'
sudo apt-get autoremove --purge
(Повторяйте, apt-get autoremove --purge
пока не останется сирот)
Дальнейшее объяснение
Если пакет foo зависит от другого пакета libfoo и вы удаляете пакет libfoo , зависимый ( foo ) также удаляется. Поскольку в Foo есть строка зависимости, определяющая libfoo , было бы прервано , чтобы оставить foo, если libfoo был удален. Обратное неверно: удаление foo не приводит к автоматическому удалению libfoo . Другой пакет xfoo также может зависеть от libfoo, поэтому apt не просто удалит его (хотя apt будет отслеживать, был ли он установлен только как побочный эффект от установки foo и предложите автоматически удалить его, если вы попросите об этом, до тех пор, пока другие не будут зависеть от него)
Мета-пакеты зависят от набора других пакетов во многом так же, как foo зависит от libfoo , поэтому при удалении метапакета обычно удаляется немного другое. Например, может быть два метапакета, которые зависят от xterm (возможно, lxsession и xfsession), но удаление одного или обоих не приведет к удалению xterm, потому что xterm не сломан без lxsession или xfsession. Мета-пакеты, как правило, находятся вверху дерева зависимостей, а не внизу, и лишь немногие вещи напрямую зависят от метапакетов. Мета-пакеты в первую очередь предоставляют удобный способ сразу установить разумный набор пакетов, но они не являются инструментами удаления.
Итак, если вы хотите опалить все, что зависит от X11, вам нужно настроить целевой набор библиотек libx11, от которого в конечном итоге должны зависеть все приложения x11 :
sudo apt-get remove --dry-run --auto-remove --purge 'libx11-.*'
sudo apt-get autoremove --dry-run --purge
Это (имитирует) удаление всего, что в конечном итоге зависит от libx11 -. *, А также удалит все пакеты, которые были установлены как зависимости программы X11, даже если они не зависели напрямую от самого X11 (обычно устанавливаются CUPS и Ghostscript как побочный эффект установки окружения рабочего стола). Вторая команда удалит последующих сирот, пока их не останется. Удалите «--auto-remove», если вы хотите сделать этот шаг позже или не делать это вообще, или просто добавьте обратно пакеты вручную после очистки графического интерфейса пользователя.
Удалите параметр --dry-run, чтобы фактически выполнить операцию после того, как вы проверили, что она не удалит пакеты, которые вы не собирались удалять.)
Я предпочитаю убирать и очищать побочные эффекты и добавлять их обратно по мере необходимости. Кроме того, я пошел дальше и проверил это на своем собственном пи, и он перезагрузился на очень спартанский, но функциональный сервер. :)
Почему удаление устанавливает что-то?
Выше стратегия решает поставленную задачу, но есть еще любопытство , почему удалить операцию приводит к пакетам быть установлены .
В основе каждого менеджера пакетов лежит какой-то решатель удовлетворенности . Когда вы говорите менеджеру пакетов установить некоторые пакеты, удалить некоторые пакеты или обновить некоторые пакеты, вы действительно просите его выполнить следующее требуемое состояние установки программного обеспечения с учетом доступного набора пакетов. Это решение может включать в себя установку дополнительных пакетов (зависимостей), удаление существующих пакетов (конфликты, разрывы), понижение / обновление определенных пакетов (уровень совместимости) или их комбинации. Таким образом, хотя немного нелогично, что решатель решает, что некоторые пакеты должны быть установлены для удаления других пакетов.это имеет смысл. Это неприятная проблема управления зависимостями, которую решают менеджеры пакетов.
Конкретный пример: учитывая набор Java-приложений, которые уже установлены, все они зависят от java-совместимой среды выполнения, которая в настоящее время называется openjdk-7-jre . Затем попросите менеджер пакетов решить для установки нового инструмента Java , который декларирует конфликт с OpenJDK-7-JRE , но работает с оракулом-7-JRE (оба пакета в общем предоставляет в Java-7-среде выполнения ). Солвер предложит удаление из OpenJDK-7-JRE и установить на Oracle-Java-7-JREкак решение желаемого состояния установки нового пакета, не нарушая существующие пакеты.
В этом конкретном случае, Xterm это пакет , который предоставляет виртуальную зависимость называемых х-терминал-эмулятор ( Xterm , lxterminal и Aterm все обеспечить в й-терминальном-эмуляторе ), поэтому вполне вероятно , что при удалении lxterminal (в составе удаление LXDE), решатель нашел существующий установленный пакет ( перекодировать в качестве возможного примера) , которые требуют какой - то вид х-терминал-эмулятор , поэтому решатель выбрал для установки Xterm (который требует libutempter0 и xbitmaps, объясняя другие пакеты для установки), чтобы удовлетворить в противном случае нарушенную зависимость. Не видя базы данных пакетов, я бы предположил, что это наиболее вероятный сценарий.
Для того, чтобы открыть пакеты, которые в настоящее время в зависимости от XTerm (или альтернативный), используйте apt-кэш RDEPENDS команды (используя --installed переключателя ограничивать установленные пакеты только):
$ apt-cache --installed rdepends xterm
xterm
Reverse Depends:
|xorg
clusterssh
|xinit
|tk8.5
|tk8.4
|transcode
Зависимости, которые начинаются с символа чередования '|' означает, что пакет зависит от xterm или чего-то, что он предоставляет (что-то в данном случае является x-терминал-эмулятором ). Пакет clusterssh явно зависит от xterm и не допускает альтернативы. Это краткий список пакетов, вызывающих необходимость использования xterm.
Что насчет деборфана?
Функциональность отслеживания сирот была включена в apt-get с помощью функции «autoremove» в 2010 году (ошибка Debian 582791 ), что делает деборфан в основном избыточным и, по сути, устаревшим. В отличие от deborphan и других подобных решений, apt-get напрямую отслеживает, какие пакеты были установлены явно, а какие были установлены как побочный эффект или зависимость явно установленного пакета. Например, если администратор устанавливает Foo, libfoo устанавливается в качестве побочного эффекта и APT-получить autoremove будет , на самом деле, удалить libfoo если autoremove (или --auto-удалить) задается при удалении Foo.
Подход, принятый deborphan, представляет собой сборник догадок. Например, предположение о том, что установленная библиотека, не имеющая зависимого элемента, должна быть сиротой: если libfoo установлена, но не установлены ни foo, ни xfoo , deborphan может решить, что она должна быть сиротой. Один из режимов сбоя заключается в том, что библиотеки могут быть специально установлены для предоставляемых ими инструментов (libxml2 для xmllint до того, как они были перекомпонованы в libxml2-utils) или просто доступны для целей разработки. Такие пакеты не являются сиротами. Кроме того, deborphan фокусируется на библиотеках, поэтому он пропускает ряд небиблиотечных сирот, которые могут отслеживать (устаревшие пакеты или потерянные) .
munin
по какой-то причине, но я мог потом достаточно легко это исправить.'libx11-.*'
чтобы предотвратить слипание оболочки.apt-get remove
что хотел,install
xterm
и двумя другими. Я тоже испытал это и не мог решить это.rootfs ... 94% /
. После apt-get remove --auto-remove --purge libx11 -. *:rootfs ... 51% /
Отличный ответ, большое спасибо!rootfs ... 41% /
...Первая строка устанавливает,
deborphan
которая удалит все потерянные пакеты.Во второй строке удаляются основные пакеты системы X11: LXDE, Samba (Windows File Sharing), шрифты, Gnome и другие вещи, связанные с окружением рабочего стола Raspberry Pi.
Третья строка удаляет все потерянные пакеты, обнаруженные deborphan.
Четвертая строка удаляет все ненужные пакеты.
Пятая строка очищает кеш пакета.
источник
1 /. Чтобы удалить все рабочие столы, которые я только что сделал (пойти приготовить кофе. Прогуляйтесь, это займет некоторое время) ...
apt-get remove --auto-remove --purge libx11-.*
2 /. Затем я установил deborphan, чтобы избавиться от потерянных файлов ...
sudo apt-get install deborphan
Если вы хотите увидеть, что осиротело, сделайте это ...
deborphan -sz
3 /. Затем я удалил все потерянные файлы ...
sudo apt-get remove --purge $(deborphan)
Наконец, сделайте это, чтобы удалить ненужные пакеты, которые не являются осиротевшими ...
sudo apt-get autoremove
Конечный результат: без головы и чистый как свист
источник
apt-get remove --dry-run
абсолютно ничего не делает , но печатает сообщения на экране.Есть здесь смотрите , но прокрутите вниз до части о
tasksel
.Запуск
tasksel --list-tasks
по пи через wifi ssh дает мне (примерно через 30 секунд):Итак,
tasksel remove desktop
следует делать то, что вы хотите [см. Комментарии] . Страница man немного краткая и загадочная, возможно, потому, что tasksel в основном предназначен для сопровождающих Debian. Если это работает, дайте нам знать;)источник
tasksel
, хотя у меня достаточно опыта работы с Ubuntu. К сожалению, я попробовал это, потребовалось некоторое время, чтобы выполнитьremove desktop
команду, но все эти «графические» пакеты все еще там согласноaptitude
.tasksel
без опций). Я уверен, что теперь «u» означает, что метапакеты не установлены, и если вы установите «рабочий стол», вы получите больше, чем просто lxde-версию wiki.debian.org/tasksel . Я заметил, что метапакет "xorg" изapt-cache search metapackage
фактически не установлен. Во всем виноваты распбианы.Кроме того, вы можете попробовать это Raspbian минимальное изображение: http://www.linuxsystems.it/raspbian-wheezy-armhf-raspberry-pi-minimal-image/
источник
Основываясь на информации о tasksel, можно выяснить, что существует рабочий стол метапакета, который ссылается на все другие пакеты, связанные с GUI. Так просто
Это удалит множество других пакетов (связанных с GUI / Desktop).
Справочная информация: имя пакета
task-desktop
можно найти, выполнив следующие команды tasksel:источник
Другой вариант - использовать aptitude, который вы всегда должны предпочитать, если вы собираетесь делать больше, чем просто устанавливать или удалять несколько пакетов.
Начало способности как корень, набрав
sudo aptitude
. В стандартном представлении пакетов aptitude последняя запись списка,Tasks
в которой вы можете выбрать различные опции, перечисленные tasksel. Перемещение по пунктам сj
,k
иenter
. Отметьте объект, который необходимо очистить, введя_
(подчеркивание) на выделенном элементе. Это только готовит действия. Для выполнения действий нажмитеg
.Прочтите об aptitude в руководстве к Debian .
источник
Введите этот код:
источник
purge
вместоremove
?