Назад | Перейти на главную страницу

Предотвращение установки определенных пакетов в Debian

У меня есть несколько серверов 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 *.