notby.NET Logo

Управление пакетами в FreeBSD 14

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

Смешивать в системе установку через порты и пакеты не рекомендуется. Если ты используешь для установки порты, то обновляй приложения через порты. В статье рассказывается про пакеты и утилиту pkg, а как обновлять через порты читай: https://notby.net/obnovlenie-vsekh-ustanovlennykh-portov-freebsd

1. Установка pkg

Если пакетный менеджер pkg еще не установлен, то устанавливаем его

pkg

Соглашаемся с тем что пакетный менеджер будет установлен.

Установка pkg в FreeBSD. Установка успешно завершена.

Пакетный менеджер успешно установлен.

2. Выбор Latest ветки обновления

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

По умолчанию пакеты в FreeBSD используют Quarterly (квартальную) ветку обновлений. Это означает что пакеты обновлятся раз в квартал. Если появляется проблема с безопасностью в пакете, обновление приходит раньше.

Существует еще Latest (последняя) ветка. В этой ветке всегда свежие версии программ и сервисов, по мере их сборки после появления в коллекции портов FreeBSD. Ветка Latest может незначительно отставать от портов FreeBSD.

Я привык использовать порты, а что-то тяжелое ставить из пакетов. И что бы версии что в портах и пакетах были одинаковые я использую Latest ветку.

Перейдем на Latest ветку пакетов.

Создаем директорию для пользовательского файла конфигурации pkg

mkdir -p /usr/local/etc/pkg/repos

Скопируем файл конфигурации

cp /etc/pkg/FreeBSD.conf /usr/local/etc/pkg/repos/FreeBSD.conf

Отредактируем файл /usr/local/etc/pkg/repos/FreeBSD.conf

nano /usr/local/etc/pkg/repos/FreeBSD.conf

Заменим в файле quarterly на latest

Редактирование файла /usr/local/etc/pkg/repos/FreeBSD.conf, изменена ветка обновлений на latest.

После изменения необходимо обязательно обновить репозиторий пакетов. Параметр -f сделают полную загрузка репозитория пакетов.

pkg update -f

3. Обновление установленных пакетов

Обновляем репозиторий пакетов

pkg update

Обновляем все установленные пакеты

pkg upgrade

Будет показано доступные пакеты для обновления и установка новых пакетов если это необходимо.

FreeBSD обновление всех пакетов через команду "pkg upgrade".

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

4. Список установленных пакетов

Просмотрим список установленных пакетов

pkg info

Выведем список пакетов относящихся к PHP

pkg info | grep php
FreeBSD команда "pkg info | grep php". Выведена версии PHP 8.2 и список установленных модулей для PHP.

Посмотрим информацию про конкретный пакет, например php82.

pkg info php82

Будет выведена подробная версии и информация о пакете, параметры сборки порта в пакеты, дата установки и так далее.

5. Поиск пакета в репозитории

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

pkg search mariadb

Выполнится поиск доступных пакетов и их версий с именем mariadb

FreeBSD поиск доступных пакетов и версий mariadb. Команда "pkg search mariadb".

6. Установка пакета

Устанавливаем пакет. Для примера установим nano.

pkg install nano

Также будут установлены необходимые пакеты если они нужны. Для nano дополнительные пакеты не требуются.

FreeBSD команда "pkg install nano". Текстовый редактор nano успешно установлен.

Текстовый редактор nano успешно установлен.

Если пакет имеет несколько версий, необходимо прямо указывать версию пакета. В предыдущем разделе искали доступные версии mariadb. Сервер MariaDB имеет несколько версии для установки. Например, для установки сервера MariaDB версии 10.6.* необходимо будет использовать mariadb106-server в запросе установке

pkg install mariadb106-server

7. Удаление пакета

Для удаления пакета используем команду, где nginx - имя удаляемого пакета

pkg remove nginx

Если удаляемый пакет является зависимостью для других пакетов, то будет выведен список удаляемых пакетов вместе с этим пакетом. Nginx не является для других пакетом зависимостью, поэтому удален только он будет.

FreeBSD команда "pkg remove nginx". Веб-сервер nginx успешно удален.

8. Блокировка и разблокировка пакета

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

Заблокируем например пакет php82 от любых действий с ним

pkg lock php82

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

Разблокируем пакет php82

pkg unlock php82

Список всех заблокированный портов в системе

pkg lock -l

Я обновляю почти все через пакеты, так как это быстрее. Nginx и PHP у меня собираются с нужными мне опциями из портов. Я поступаю следующим образом: обновляю все пакеты через pkg, затем разблокирую пакеты Nginx и PHP, обновляю их через сборку из портов, вновь блокирую их чтобы случайно не обновить.
Это получается некий костыль, но я как то к этому привык и проблем у меня с этим не возникает. В комментариях в соцсетях под постом с этой статьей можешь оставить комментарий как это можно оптимизировать, если это возможно.
Если используется много приложений через порты, то логично отказатся от пакетов совсем.

9. Удаление неиспользуемых пакетов

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

Удалим все неиспользуемые пакеты

pkg autoremove
FreeBSD команда "pkg autoremove". Список пакетов на уделения которые больше не нужны.

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

Если что-то собиралось из портов, то для сборки были собраны autoconf, automake, gmake и другие утилиты. Для пакетного менеджера они не являются зависимостями для других пакетов и небыли явно установлены в систему.

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

pkg set -A 0 devel/autoconf devel/automake devel/gmake
FreeBSD команда "pkg set -A 0 devel/autoconf devel/automake devel/gmake". Пакеты помечены как установленные.

Пакеты autoconf, automake, gmake были помечены как установленные пакеты, и теперь они не будет удалятся по команде pkg autoremove.

Список пакетов которые явно установленные (не как необходимые зависимости) можно посмотреть командой

pkg prime-list

После удаления неиспользованных пакетов, очистим старые установочные файлы

pkg clean

Будет выведен список старых установочных файлов для удаления и суммарный объем который будет освобожден после их удаления.

FreeBSD команда "pkg clean". Список установочных файлов для удаления. Все файл удалены.

Чтобы удалить установочные файлы пакетов которые сейчас установлены в систему, добавляем параметра -a к команде

pkg clean -a

Если в системе мало место на диске, периодически выполняй очистку от установочных файлов.