Как удалить X Server и Desktop Manager при работе в качестве безголового сервера?

Я использую мой малиновый Pi как безголовый сервер , в который я могу войти. Мне не нужен X-сервер, LXDE и т. Д.

Я запускаю Raspbian «wheezy». Я уже отключил «Запустить рабочий стол при загрузке» с помощью raspi-config, как описано здесь . Но я постоянно получаю множество обновлений пакетов для всех материалов рабочего стола, которые я не использую (я запускаю apticron , чтобы уведомить меня о ожидающих обновлениях по электронной почте), поэтому я хотел бы полностью apt-get remove все ненужные пакеты, чтобы избежать этих ненужных обновлений.

Какой пакет (ы) следует удалить?

До сих пор я придумал следующее:

sudo apt-get remove desktop-base lightdm lxappearance lxde-common lxde-icon-theme lxinput lxpanel lxpolkit lxrandr lxsession-edit lxshortcut lxtask lxterminal obconf openbox raspberrypi-artwork xarchiver xinit xserver-xorg xserver-xorg-video-fbdev

Я сделал приведенный выше список, посмотрев aptitude для всех пакетов в Installed Packages -> x11 -> основной раздел, который не был «автоматической установкой».

По какой-то причине, когда я запускаю это, apt-get говорит мне, что:

The following extra packages will be installed:
  libutempter0 xbitmaps xterm

, который кажется немного странным для операции удалить .

Есть ли более простой способ? Есть ли «супер» пакет, который владеет всем этим графическим материалом и может быть удален, используя все его зависимости? По моему мнению, это не похоже на то, что это возможно, потому что эти вещи не были автоматически установлены, то есть мне нужно отследить их все и удалить их явно.

84 голоса | спросил Day 29 Jpm1000000pmTue, 29 Jan 2013 23:40:03 +040013 2013, 23:40:03

8 ответов


82

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 будет отслеживать, если он был установлен only как побочный эффект установки foo и предложить автоматически удалить его, если вы его попросите, пока другие не зависят от него)

Мета-пакеты зависят от от набора других пакетов во многом таким же образом, что foo зависит от libfoo , поэтому, когда вы удаляете мета -пакет, немного больше обычно удаляется. Например, может быть два метапакета, которые зависят от xterm (возможно, lxsession и xfsession), но удаление одного или обоих не будет удалять xterm, потому что xterm is not сломанный без lxsession или xfsession. Мета-пакеты обычно находятся в top дерева зависимостей, а не внизу, и несколько вещей, как правило, зависят напрямую от метапакетов. Мета-пакеты в первую очередь обеспечивают удобный способ установки разумного набора пакетов одновременно, но они не являются инструментами для удаления.

Итак, если вы хотите обгореть все , что зависит от 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 , чтобы выполнить операцию после , вы проверили, что она не будет удалять пакеты, которые вы сделали не намерены удаляться.)

Я предпочитаю чистить и чистить побочные эффекты и добавлять их по мере необходимости. Кроме того, я пошел дальше и протестировал это на своем собственном pi, и он перезагрузился на очень спартанский, но функциональный сервер. :)

Почему удаление устанавливает что-то?

Вышеупомянутая стратегия решает указанную проблему, но все еще остается любопытство, почему операция remove приводит к установке .

В основе каждого менеджера пакетов лежит решатель выполнимости . Когда вы сообщаете диспетчеру пакетов установить некоторые пакеты, удалить некоторые пакеты или обновить некоторые пакеты, то, что вы действительно просите его сделать, это для решения для следующего желаемого состояния установки программного обеспечения при наличии доступного набора пакетов. Это решение может включать установку дополнительных пакетов (зависимостей), удаление существующих пакетов (конфликты, разрывы), понижение /обновление определенных пакетов (уровень совместимости) или их комбинацию. Поэтому, хотя это немного противоречит тому, что решатель определяет, что некоторые пакеты должны быть установлены , чтобы другие пакеты были удалены , это имеет смысл. Это - это неприятная проблема управления зависимостями, которую решают менеджеры пакетов.

Конкретный пример. Учитывая набор уже установленных приложений Java, все они зависят от совместимой с Java среды выполнения, которая в настоящее время является openjdk-7-jre . Затем вы попросите менеджера пакетов решить проблему установки нового инструмента Java, объявляющего конфликт с openjdk-7-jre , но работает с oracle-7-jre (оба пакета обычно предоставляют java-7-runtime ). Решитель предложит удаление openjdk-7-jre и установить из oracle-java-7-jre как решение желаемого состояния установки нового пакета, не нарушая существующих пакетов.

В этом конкретном случае xterm представляет собой пакет, который предоставляет виртуальную зависимость, называемую x-terminal-emulator ( xterm , lxterminal и aterm все предоставляют x-terminal-emulator ), поэтому вполне вероятно, что при удалении lxterminal (как части удаления lxde) решатель обнаружил существующий установленный пакет ( transcode в качестве возможного примера), который требовал some x-terminal-emulator , поэтому решатель решил установить xterm (для которого требуется libutempter0 и xbitmaps , объясняя другие пакеты для установки), чтобы удовлетворить иначе нарушенную зависимость. Не видя базы данных пакета, я бы предположил, что это наиболее вероятный сценарий.

Чтобы обнаружить пакеты, которые в настоящее время зависят от xterm (или альтернативного), используйте команду apt-cache rdepends (используя - установленный для ограничения только установленных пакетов):

$ apt-cache --installed rdepends xterm
xterm
Reverse Depends:
    |xorg
     clusterssh
    |xinit
    |tk8.5
    |tk8.4
    |transcode

Зависимости, начинающиеся с символа чередования '|' означает, что пакет зависит от xterm или того, что он предоставляет (что-то в этом случае является x-terminal-emulator ). Пакет clusterssh зависит от xterm явно и не допускает альтернативы. Это короткий список пакетов, требующих xterm.

Как насчет deborphan?

Функциональность отслеживания сирот была включена в apt-get через функцию autoremove в 2010 году (ошибка Debian 582791 ) рендеринг deborphan преимущественно избыточен и существенно устарел. В отличие от deborphan и других подобных решений, apt-get direct отслеживает, какие пакеты были установлены явно и какие пакеты были установлены как побочный эффект или зависимость явно установленного пакета. Например, если администратор устанавливает foo, libfoo устанавливается как побочный эффект и apt-get autoremove будет , на самом деле, удалить libfoo, если autoremove (или --auto -remove) указывается при удалении foo.

Подход, принятый deborphan, представляет собой набор догадок. Например, предположим, что установленная библиотека, которая не имеет зависимости, должна быть сиротой: если установлен libfoo , но ни foo , ни xfoo >, деборфан может решить, что он должен быть сиротой. Один из способов отказа заключается в том, что библиотеки могут быть специально установлены для инструментов, которые они предоставляют (libxml2 для xmllint, прежде чем они были переупакованы в libxml2-utils) или просто доступны для целей разработки. Такие пакеты не являются сиротами. Кроме того, deborphan фокусируется на библиотеках, поэтому он пропускает несколько сирот non-library , которые apt отслеживают (Устаревшие пакеты против потерянных пакетов) .

ответил Maxx Daymon 26 FebruaryEurope/MoscowbTue, 26 Feb 2013 01:26:19 +0400000000amTue, 26 Feb 2013 01:26:19 +040013 2013, 01:26:19
25
sudo apt-get install deborphan
sudo apt-get autoremove --purge libx11-.* lxde-.* raspberrypi-artwork xkb-data omxplayer penguinspuzzle sgml-base xml-core alsa-.* cifs-.* samba-.* fonts-.* desktop-* gnome-.*
sudo apt-get autoremove --purge $(deborphan)
sudo apt-get autoremove --purge
sudo apt-get autoclean

Первая строка устанавливает deborphan, который удалит все потерянные пакеты.

Вторая строка удаляет базовые пакеты системы X11 LXDE, Samba (общий доступ к файлам Windows), шрифты, Gnome и другие материалы, связанные с рабочей средой малины Pi.

Третья строка удаляет все потерянные пакеты, обнаруженные deborphan.

Четвертая строка удаляет ненужные пакеты.

Пятая строка очищает кеш пакетов.

ответил Fabio 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 10 Sep 2014 22:28:13 +0400 2014, 22:28:13
8

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

Конечный результат: Безголовый и чистый как свисток

ответил James 16 J0000006Europe/Moscow 2014, 02:07:55
6

Есть вид здесь но прокрутите вниз до части tasksel.

Запуск tasksel --list-tasks на pi через wifi ssh дает мне (примерно через 30 секунд):

u desktop   Debian desktop environment
u web-server    Web server
u print-server  Print server
u database-server   SQL database
u dns-server    DNS Server
u file-server   File server
u mail-server   Mail server
u ssh-server    SSH server
u laptop    Laptop

Итак, tasksel remove desktop должен делать то, что вам нужно [см. комментарии] . Страница руководства немного краткая и загадочная, возможно, потому что tasksel в основном предназначен для поддерживающих debian. Если это работает, сообщите нам;)

ответил goldilocks 30 Jam1000000amWed, 30 Jan 2013 00:24:51 +040013 2013, 00:24:51
4

В качестве альтернативы вы можете попробовать минимальное изображение Raspbian: http : //www.linuxsystems.it/raspbian-wheezy-armhf-raspberry-pi-minimal-image/

ответил Aaron 20 32013vEurope/Moscow11bEurope/MoscowWed, 20 Nov 2013 04:23:57 +0400 2013, 04:23:57
2

На основе данных tasksel можно узнать, что есть мета-пакет task-desktop, который ссылается на все другие связанные с GUI пакеты. Так что просто

sudo apt-get remove task-desktop

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

Фон: имя пакета task-desktop можно найти, выполнив следующие команды tasksel:

tasksel --list-tasks
tasksel --task-packages desktop
ответил geekQ 31 Maypm13 2013, 13:55:11
0

Другой вариант - использовать aptitude, который вы всегда должны предпочесть, если вы собираетесь сделать больше, чем просто установить или удалить несколько пакетов.

Запустите aptitude как root, набрав sudo aptitude. В стандартном представлении пакетов aptitude последняя запись списка Tasks, в которой вы можете выбрать различные параметры, перечисленные taskel. Перейдите по элементам с помощью j, k и enter. Отметьте элемент, который нужно очистить, введя _ (подчеркивание) на выделенный элемент. Это только готовит действия. Для выполнения действий нажмите g.

Прочитайте aptitude в руководстве по debian .

ответил BdN3504 6 Jam1000000amMon, 06 Jan 2014 03:14:35 +040014 2014, 03:14:35
0

Введите этот код:

sudo apt-get purge desktop-base lightdm lxappearance lxde-common lxde-icon-theme lxinput lxpanel lxpolkit lxrandr lxsession-edit lxshortcut lxtask lxterminal obconf openbox raspberrypi-artwork xarchiver xinit xserver-xorg xserver-xorg-video-fbdev
ответил Raspbian 7 FebruaryEurope/MoscowbSun, 07 Feb 2016 04:32:09 +0300000000amSun, 07 Feb 2016 04:32:09 +030016 2016, 04:32:09

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132