Як заборонити встановлення конкретного пакету?


27

Чи можу я налаштувати Ubuntu ніколи не встановлювати певний пакет, навіть якщо цього вимагає інший встановлений мені пакет?


Ви не можете встановити пакет без його залежностей, якщо ви не хочете зламати систему.
enzotib

2
@enzotib, насамперед ви помиляєтеся: залежність від пакета може бути зайвою. є численні приклади, або ви можете встановити еквівалент необхідного пакету іншим способом (наприклад, я встановив openjdk-6 так, як це вимагається всіма програмами java в репост, але я ніколи фактично не використовую openjdk-6, я налаштуйте все, щоб натомість використовувати openjdk-7 або Oracle JDK 7). І друге - я не говорив, що хочу встановити залежний пакет - він може просто помилитися в цьому випадку, я просто хочу переконатися, що певний пакет ніколи не встановлюється.
Іван

Відповіді:


28

Як і в Debian, ми можемо використовувати apt-pinning для управління версіями та встановленням в Ubuntu .

Щоб заблокувати встановлення даного пакету, ми можемо помістити наступні рядки /etc/apt/preferences

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

Надаючи негативний пріоритет для цього штифта, ми заблокуємо встановлення <nameofpackage>з не далі вказаного походження, тобто нашого локального сховища. Звичайно, ми можемо застосувати влучне закріплення, щоб закріпити певну версію пакета або конкретне походження.

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

Альтернативу та запобігання оновлення певного пакету див.


Чи знаєте ви, чи могло це працювати в Ubuntu 12.04? Інше питання - це повідомлення про те, що, можливо, це не працює.
Lucio

1
@Lucio: впевнений - він все ще працює; просто перевірив його, щоб він працював і в 12.10.
Таккат

3
У рядку Package:-line ви можете перелічити декілька пакунків, розділених пробілами, наприклад: Пакет: metacity metacity-загальний libmetacity-private0a. (Схоже, такі шаблони, як Package: metacity * також можливі)
Volker Siegel

5
В Ubuntu 16.04 Pin: origin ""не працював для мене, але Pin: release *був.
барбаз

3

У debian ви можете заблокувати пакет, і він вже не буде оновлений

# echo name_of_package hold | dpkg --set-selections

але я не впевнений, що ви можете заборонити


Я просто спробував це на Ubuntu 15.10 (хитро), і він не блокував пакунок; щойно дав мені попередженняpackage not in database
Brent Baccala

2

У мене є пакет, який продовжує прокрадатись назад і порушувати git

sudo apt-mark hold libgnutls-deb0-28

має запобігти встановленню цього пакета

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.