Как заблокировать обновление определенного пакета (программы) в Ubuntu

Бывают такие случаи, когда вам не нужно, чтобы обновлялся какой-нибудь пакет из нестабильного репозитория. Те же драйвера на нвидиа например. Или Google-chrome из unstable репозитория, выходят каждый день практически.
Можно не отключать репозиторий из системы, а просто легко и быстро запретить его обновление, а потом снова разрешить обновление и обновить его.
Делается это довольно просто. В этой статье покажу три способа.

Первый способ - использую dpkg

Открываем терминал и для блокировки вводим следующую команду:
sudo echo 'имя_пакета hold' | sudo dpkg --set-selections
имя пакета берется из команды, которой вы ставили этот пакет:
sudo apt-get install имя_пакета
Чтобы снова разрешить обновление заблокированного пакета, введите следующую команду: echo 'имя_пакета install' | sudo dpkg --set-selections

Вот таким способом мы можем, установив какой-либо пакет, тут же заблокировать его обновление, не удаляя репозиторий из системы. А потом снова разблокировать его, если вдруг снова когда-нибудь захотим обновить.

Данной командой можно просмотреть все статусы пакетов в системе (выведется весь список установленных пакетов и можно просмотреть у которых стоит статус hold - то есть заблокированы для обновления): dpkg --get-selections

Данной командой можно просмотреть статус определенного пакета: dpkg --get-selections | grep 'имя_пакета'

Второй способ - используя apt-get

Здесь все просто, маркируем пакет, который не хотим, чтобы обновлялся.
Команда, чтобы заблокировать обновление пакета: sudo apt-mark hold package_name
Команда, чтобы разблокировать обновление пакета: sudo apt-mark unhold package_name

Третий способ - используя aptitude.

Если Вы используете вместо пакетного менеджера apt-get пакетный менеджер aptitude, то там еще проще:
Для заблокирования пакета команда:sudo aptitude hold package_name
Для разблокировки пакета команда: sudo aptitude unhold package_name

Четвертый способ - используя графический интерфейс (Synaptic).

Для начала нужно установить графический менеджер пакетов Synaptic(если он у вас не установлен конечно): sudo apt-get install synaptic
После чего открываем его.

В фильтре находим нужный нам пакет, выделяем его курсором затем:



Меню - Пакет - Заблокировать версию. И всё. После этого не будет обновляться наш выбранный пакет.

Поделиться:

Если у Вас возникли вопросы.

Приглашаю задавать их на сервисе вопросов и ответов: Ask LinuxRussia.com.
Там Ваши вопросы не потеряются и Вы быстрее получите ответ, в отличие от комментариев.

4 коммент. :

  1. Очень полезная стать. Спасибо автору!

    ОтветитьУдалить
  2. а можно еще пересобрать пакет и указать в депендс версию загранично последним числом и тогда всё норм будет и не будет висеть в менеджере обновлений, что один пакет не обновлен.

    ОтветитьУдалить
  3. То что доктор прописал! Спасибо.

    ОтветитьУдалить
  4. отличная статья, то что надо было, что зафиксировать версию apache2.2 для 1С 8.3

    ОтветитьУдалить