Обновление всех установленных портов FreeBSD 14
Периодически выходят новые версии программного обеспечения и различных сервисов. В данной статье будет рассказано как обновить программы и сервисы через “Коллекцию Портов FreeBSD”. Это можно обновлять в ручную по отдельности, но это долго. Существует две утилиты для автоматического обновления всех установленных в систему портов, это Portmaster и Portupgrade.
Смешивать в системе установку через порты и пакеты очень не рекомендуется. Если ты используешь для установки пакеты (утилита pkg), то обновляй через пакеты. В статье рассказывается про использование портов. Про использование пакеты читай: https://notby.net/upravlenie-paketami-v-freebsd
Перед начал необходимо обновить коллекцию портов. Как обновить: https://notby.net/obnovlenie-portov-freebsd
1. Обновление через Portmaster
1.1. Устанавливаем Portmaster
Для установки переходим в каталог /usr/ports/ports-mgmt/portmaster/ и устанавливаем
cd /usr/ports/ports-mgmt/portmaster && make install clean
1.2. Просматриваем список портов
Выведем весь список установленных портов с их зависимостями и порты имеющие новые версии для обновления
portmaster -L
Либо можно использовать другую команду, но она выведет только список приложений для которых есть обновления
pkg version -l "<"
1.3. Обновляем порты через Portmaster
Обновим все установленные порты в системе которые имеют новую версию
portmaster -a
Если добавить параметр -d, то будет удаленны distfiles ("установочные файлы") обновляемых приложений
portmaster -ad
Чтобы для новых портов которые будут установлены не выводилась настройка конфигурации сборки порта добавляем -G
portmaster -aG
Если портов много и их компиляция занимает очень много времени, можно использовать параметр -P. Порт будет установлен из списка пакетов, если это возможно.
portmaster -aP
Из пакета будет порт с параметрами сборки по умолчанию. По моему наблюдению: если в обновляемом порту из пакетов включено все что собиралось из порта, пакет будет установлен. Если порт собирается с дополнительными функциями/возможностями, пакет установлен не будет и будет проходить сборка порта.
1.4. Пересобираем все порты в системе
Если в процессе обновления возникают ошибки или в системе есть проблемы с приложениями, добавляем -f для обновления и пересборке всех портов. Процесс будет очень долгий, так как все установленные порты будут собраны из исходных кодов.
portmaster -af
1.5. Заменяем версию порта
Если необходимо перейти со стабильной версии порта на другую, например перейти с nginx на nginx-devel, используем команду
portmaster -o www/nginx-devel www/nginx
Первым пишется адрес порта куда переходим, вторым откуда переходим.
Так же можно перейти на другую версию порта, например с php80 на php82.
portmaster -o lang/php82 lang/php80
2. Обновление через Portupgrade
2.1. Устанавливаем Portupgrade
Для установки переходим в каталог /usr/ports/ports-mgmt/portupgrade/ и устанавливаем
cd /usr/ports/ports-mgmt/portupgrade && make install clean
2.2. Обновляем порты через Portupgrade
Обновим все установленные порты в системе которые имеют новую версию
portupgrade -a
Можно обновить отдельно приложение. Чтобы так же обновить все необходимые зависимости обновляемого приложения добавим -R перед именем приложения
portupgrade -R nginx
Что бы удалить дистрибутивные файлы (distfiles) используем команду
portsclean -D
3. Обновление портов вручную
Если нет необходимости в автоматическом обновлении всех портов, и их не очень много установлено, то можно сделать это вручную.
Так же можно в ручную вначале обновить отдельно необходимые приложения, а потом уже автоматически обновить все установленные порты.
Посмотрим список портов для которых есть новые версии.
pkg version -l "<"
Перейдем в папку порта который хотим обновить, например это будет /usr/ports/www/nginx/
cd /usr/ports/www/nginx/
Пересобираем порт и переустановим его в системе
make reinstall clean