📦 Как исключить определенный пакет из обновления apt |

📦 Как исключить определенный пакет из обновления apt

Мануал

При работе над некоторыми проектами иногда требуется стабильность среды.

Обновление какого-либо пакета может привести к сбою всего проекта.

Мы можем случайно обновить такие пакеты, которые создадут серьезные проблемы на сервере.

Вот почему может быть важно поддерживать определенную версию пакета.

Это руководство покажет вам, как можно исключить определенный пакет из обновления на дистрибутивах Ubuntu или Debian.

1. Исключение пакетов с помощью некоторых команд

Существует несколько различных методов исключения или удержания определенного пакета во время полного обновления системы.

Можно пометить пакет как “удерживаемый”.

В этой статье для примера мы будем использовать пакет virtualbox.

Вы можете посмотреть установленную версию:

# dpkg -l | grep virtualbox
ii  virtualbox    5.0.18-dfsg-2build1   amd64   x86  virtualization solution - base binaries

Теперь вы можете увидеть, что у нас есть обновленная версия.

# apt list --upgradable
Listing... Done
virtualbox/xenial-updates 5.0.40-dfsg-0ubuntu1.16.04.2 amd64 [upgradable from: 5.0.18-dfsg-2build1]

Вы можете пометить пакеты с помощью следующих команд:

apt-mark

Вы можете использовать команду aptmark, за которой следует опция hold.

Это предотвратит автоматическую установку, обновление или удаление пакета.

Синтаксис команды выглядит следующим образом

apt-mark hold package

Вы можете использовать его практически следующим образом:

# apt-mark hold virtualbox 
virtualbox set on hold.

Теперь вы можете проверить, как показано ниже:

# apt upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  virtualbox
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

Вы можете увидеть, что обновление пакета невозможно.

Чтобы снять пометку, используйте следующий синтаксис

apt-mark unhold package

Практически у вас будет следующая команда:

# apt-mark unhold virtualbox
Canceled hold on virtualbox.

dpkg

Вы также можете использовать команду dpkg –set-selection для маркировки пакета.

Синтаксис команды выглядит следующим образом:

# echo " hold" | dpkg --set-selections

Практически, вы можете сделать это следующим образом:

# echo "virtualbox hold" | dpkg --set-selections

У вас нет никакого вывода, который показывает результат.

Поэтому уточним

# apt upgrade
Reading package lists... Done
Building dependency tree 
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
 virtualbox
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

Вы можете видеть, что это работает.

Теперь, чтобы разблокировать, команда отличается и соблюдает синтаксис

echo "package install" | sudo dpkg --set-selections

поэтому используйте команду:

# echo "virtualbox install" | dpkg --set-selections

Вывода не будет.

Поскольку мы уже являемся пользователем root, мы не используем sudo

aptitude

Вы также можете использовать команду aptitude.

По умолчанию эта команда отсутствует в вашей системе, поэтому вам необходимо установить ее следующим образом:

# apt install aptitude
Reading package lists... Done
Building dependency tree 
Reading state information... Done
The following additional packages will be installed:
 aptitude-common libcwidget3v5

Чтобы пометить пакет с помощью команды, используйте синтаксис

aptitude hold package

Когда вы помечаете пакет с помощью aptitude, у вас нет вывода.

Если вы проверите результат с помощью aptitude upgrade, у вас не будет упоминания отмеченного пакета, но оно появится, если вы попробуете apt upgrade.

Вы можете снять пометку с помощью синтаксиса:

aptitude unhold package

так же, как и ниже

# aptitude unhold virtualbox
No packages will be installed, upgraded, or removed.
0 packages upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

dselect

Вы можете использовать команду dselect, которая является дополнением к dpkg, используемому для управления пакетами программного обеспечения в Debian и Debian-based дистрибутивах Linux.

Она не присутствует по умолчанию, поэтому вам необходимо установить её:

# apt install dselect

Запустите команду

Теперь внимательно прочитайте справку.

Теперь вы можете использовать клавишу пробела, чтобы выйти из справки и найти пакет, который нужно “захолдить”.

Это можно сделать с помощью H или =

теперь вы можете выйти с помощью Q.

Откроется первое меню, выберите Quit.

Вы можете проверить измнения:

# apt upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  virtualbox
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

2. Блокировка пакета с помощью конфигурационных файлов apt

Одним из способов пометить пакет является редактирование файла /etc/apt/preferences.

Чтобы не обновлять пакет при обновлении всей системы, мы должны установить приоритет apt pin меньше нуля (0). если файл не существует, вы должны его создать.

Необходимо соблюдать следующий синтаксис:

Package: <package-name> ('*' for all packages)
Pin: release * (o=Ubuntu for Ubuntu origin)
Pin-Priority: <less than 0>

Есть и другие опции, которые можно использовать.

Чтобы заблокировать пакет virtualbox, отредактируйте файл следующим образом:

Package: virtualbox
Pin: release o=Ubuntu
Pin-Priority: -1

сохраните и выйдите.

Это все, что вам нужно для блокировки пакета.

Чтобы снять блокировку пакета, можно закомментировать строки или просто удалить файл.

Заключение

Вы видите, что можно использовать несколько методов для блокировки пакета.

Это может быть полезно для поддержания стабильной версии вашего проекта.

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий