Как запретить установку определенного пакета?

27

Могу ли я настроить Ubuntu так, чтобы он никогда не устанавливал определенный пакет, даже если это требуется для другого устанавливаемого мной пакета?

Иван
источник
Вы не можете установить пакет без его зависимостей, если вы не хотите сломать вашу систему.
энзотиб
2
@enzotib, во-первых, вы ошибаетесь: зависимости пакетов могут быть избыточными. Есть множество примеров, или вы можете установить эквивалент требуемого пакета другим способом (например, у меня установлен openjdk-6, как того требуют все java-приложения в репозиториях, но я никогда не использую openjdk-6, я установите все, чтобы использовать вместо этого openjdk-7 или Oracle JDK 7). И второе - я не сказал, что хочу установить зависимый пакет - в этом случае он может просто выдать ошибку, я просто хочу убедиться, что конкретный пакет никогда не устанавливается.
Иван
Есть похожий вопрос .
Nimmermehr

Ответы:

28

Как и в Debian, мы также можем использовать apt-pinning для контроля версий и установки в Ubuntu .

Чтобы заблокировать установку данного пакета, мы можем поместить следующие строки в /etc/apt/preferences

Package: <nameofpackage>
Pin: origin ""
Pin-Priority: -1

Придав отрицательный приоритет этому выводу, мы заблокируем установку <nameofpackage>из не указанного ранее источника, то есть из нашего локального репозитория. Конечно, мы можем использовать apt-pinning для закрепления определенной версии пакета или определенного источника.

Перед тем, как продолжить, настоятельно рекомендуется прочитать приведенную выше документацию и справочную страницу из apt_preferences, поскольку apt не проверяет ошибки в этих файлах и может привести к нарушению управления пакетами.

В качестве альтернативы и для предотвращения обновления данного пакета см .:

Takkat
источник
Знаете ли вы, может ли это работать в Ubuntu 12.04? Другой вопрос - сообщать, что, возможно, это не работает.
Лусио,
1
@Lucio: конечно - это все еще работает; только что проверил его на работу в 12.10 тоже.
Таккат
3
В Package:-line вы можете перечислить несколько пакетов, разделенных пробелами, например: Package: metacity metacity-common libmetacity-private0a. (Похоже, такие шаблоны, как Package: metacity * также возможны)
Volker Siegel
5
В Ubuntu 16.04 Pin: origin ""у меня не работало, но работало Pin: release *.
Барбаз
3

В Debian вы можете заблокировать пакет, и этот пакет больше не будет обновляться

# echo name_of_package hold | dpkg --set-selections

но я не уверен, что вы можете запретить

maniat1k
источник
Я только что попробовал это на Ubuntu 15.10 (хитро), и он не заблокировал пакет; только что дал мне предупреждениеpackage not in database
Брент Баккала
2

У меня есть пакет, который продолжает красться и ломать мерзавца

sudo apt-mark hold libgnutls-deb0-28

должен предотвратить установку этого пакета

Алекс Рош
источник