Найти в Дзене
Записки сисадмина

Linux. Apt. Устанавливаем пакеты без лишней грязи

Случилось ужасное: сменив место работы, я поневоле становлюсь адептом Astra linux. Если вдруг меня читает кто-то из астры - большой вам привет. Для многих это будет удивительно, но никакого негатива к Astra я не испытываю. Тут ситуация как с госуслугами: дайте ребятам еще несколько лет, и они наконец сделают вполне хороший продукт. Тем, кто говорит про «переклеили шильдики» - посмотрите на количество форков дебиана и на то, как они сделаны. А теперь вернемся к Debian и его пакетному менеджеру apt. Пора поговорить еще о нескольких трюках и фишках. Когда мы запрашиваем обновление пакетов, система предлагает нам сразу все, что ей доступно в репозиториях. Однако, стоит ли устанавливать сразу все подряд? Конечно же нет. Для безопасного обновления создали unattended-upgrade. Unattended Upgrades - это механизм в Linux-системах, который автоматически загружает и устанавливает обновления безопасности и исправления без прямого вмешательства системного администратора. Устанавливаем: apt install
Оглавление

Случилось ужасное: сменив место работы, я поневоле становлюсь адептом Astra linux. Если вдруг меня читает кто-то из астры - большой вам привет. Для многих это будет удивительно, но никакого негатива к Astra я не испытываю. Тут ситуация как с госуслугами: дайте ребятам еще несколько лет, и они наконец сделают вполне хороший продукт.

Тем, кто говорит про «переклеили шильдики» - посмотрите на количество форков дебиана и на то, как они сделаны.

А теперь вернемся к Debian и его пакетному менеджеру apt. Пора поговорить еще о нескольких трюках и фишках.

1. Unattended-upgrades

Когда мы запрашиваем обновление пакетов, система предлагает нам сразу все, что ей доступно в репозиториях.

Однако, стоит ли устанавливать сразу все подряд? Конечно же нет.

Для безопасного обновления создали unattended-upgrade.

Unattended Upgrades - это механизм в Linux-системах, который автоматически загружает и устанавливает обновления безопасности и исправления без прямого вмешательства системного администратора.

Устанавливаем:

apt install unattended-upgrades

Чтобы запустить обновления всех патчей и пакетов безопасности, выполняем:

unattended-upgrade --dry-run -d
-2

В конце выполнения вы увидите:

Все обновления установлены
InstCount=0 DelCount=0 BrokenCount=0
The list of kept packages can't be calculated in dry-run mode.
При этом, не все пакеты были обновлены:
-3

2. Рекомендуемые пакеты

Очень часто, при установке какого-то пакета, к нему прилипает куча мусора. Также известного, как recommended packages.

Так, например, при установке php, вам будет предложено автоматически установить apache вместе с ним:

-4

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

К тому же, я могу столкнуться с интересной проблемой, когда у меня и apache и nginx запустятся одновременно при запуске системы. И кто первый успеет стартануть, тот и займет 80 порт.

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

apt install php --no-install-recommends
-5

Видим, что у нас теперь установится не 11 пакетов, а 8, а apache2, apache2-data и apache2-utils будут проигнорированы.

А как избавиться от recommended packages глобально и навсегда?

Создаем файл /etc/apt/apt.conf.d/99norecommends

Вставляем в него:

APT::Install-Recommends "false";
-6

Проверяем:

-7

При этом, если мы захотим для конкретного пакета установить "паразитов", указываем ключ --install-recommends

apt install php --install-recommends
-8

3. Блокировка обновления пакета

А еще каждому администратору знакома ситуация, когда ему кровь из носа нужно оставить какой-то конкретный пакет неизменяемым. Вот бывает такое, что какая-то софтина слишком сильно завязана на версию пакета. В таком случае используем механизм apt-mark, чтобы пометить наш пакет как неизменяемый.

apt-mark hold bash
-9

Разблокировать обновление пакета можно командой:

apt-mark unhold bash

Ну а в случае, если мы все-таки хотим обновить наш заблокированный пакет, но саму глобальную блокировку снимать не хотим, используем ключ --allow-change-held-packages:

apt install -y --allow-change-held-packages bash
-10