notby.NET Logo

Обновление всех установленных портов 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
FreeBSD установка portmaster из коллекции портов, конфигурация параметров для сборки

1.2. Просматриваем список портов

Выведем весь список установленных портов с их зависимостями и порты имеющие новые версии для обновления

portmaster -L

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

pkg version -l "<"

1.3. Обновляем порты через Portmaster

Обновим все установленные порты в системе которые имеют новую версию

portmaster -a
FreeBSD: Процесс обновления приложений через приложение 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

Первым пишется адрес порта куда переходим, вторым откуда переходим.

Выполнение команды "portmaster -o www/nginx-devel www/nginx" успешно, nginx был заменен на версию порта nginx-devel

Так же можно перейти на другую версию порта, например с 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
FreeBSD установка Portupgrade из коллекции портов, конфигурация параметров для сборки

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