Как заблокировать обновление определенного пакета (программы) в 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
После чего открываем его.

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

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

  • Анонимный

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

  • Анонимный

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

  • https://www.blogger.com/profile/12008687870906697777 Котангенс

    То что доктор прописал! Спасибо.

  • https://www.blogger.com/profile/04987808731444737479 Unknown

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