У меня есть несколько серверов Debian, и я хочу убедиться, что на них никогда не будет установлен X-сервер. Иногда, когда я устанавливаю пакет, он имеет зависимости, включающие X. Есть ли хороший способ убедиться, что X-сервер никогда не будет установлен? Я бы предпочел, чтобы библиотеки X11 также не устанавливались, поскольку перенаправление X никогда не должно быть включено.
Помещение пакета в режим ожидания не работает (очень хорошо) для этого. Он не охватывает все инструменты удовлетворительным образом. Например, aptitude в командной строке полностью игнорирует предыдущий вызов aptitude hold somepackage
при установке пакета также устанавливаются зависимости, даже если они приостановлены.
На мой взгляд, лучший способ - создать поддельный пакет (с названием, например, «unwanted-pkg»), который конфликтует со всеми нежелательными пакетами, и установить его (с dpkg -i
). Затем вы откладываете этот пакет, чтобы избежать его удаления.
Вы можете использовать такой инструмент, как «Equivs», чтобы легко создать поддельный пакет. Видеть equivs-control
и equivs-build
. Поле конфликтов выглядит так:
Conflicts: xserver-xorg-video-2, xserver-xorg-core
Вы можете конфликтовать с низкоуровневыми зависимостями, общими для всех нежелательных пакетов, чтобы не перечислять каждый отдельный пакет (или использовать виртуальный пакет, например xserver-xorg-video-2).
Обратите внимание, что закрепление не помогает решить эту проблему. Если вы сделаете aptitude install xorg
он установит множество пакетов xserver-xorg- *, несмотря на отрицательное закрепление. Кстати, чтобы закрепление распознавалось apt (проверьте с помощью apt-cache policy <package>
) вы должны использовать такой синтаксис:
$ cat /etc/apt/preferences
Package: xserver-xorg-video-vga
Pin: version *
Pin-Priority: -100
$ LANG=C apt-cache policy xserver-xorg-video-vga
xserver-xorg-video-vga:
Installed: (none)
Candidate: 1:4.1.0-8
Package pin: 1:4.1.0-8
Version table:
1:4.1.0-8 -100
500 http://localhost lenny/main Packages
Использование регулярного выражения в поле «Пакет» не работает (кроме символа «*», в этом случае у вас есть другие требования в поле «Пин»).
http://www.debian.org/doc/FAQ/ch-pkg_basics.en.html
См. Раздел 7.12, «Как поставить пакет в режим ожидания?»
Если вы «удерживаете» в данный момент удаленный пакет, он никогда не будет установлен.
Вы можете использовать apt pinning, чтобы предотвратить установку определенных пакетов. Попробуйте вставить это /etc/apt/preferences
:
Package: xserver-xorg* Pin-Priority: -100
Должен предотвратить установку всех пакетов xserver-xorg *.