Обновление портов FreeBSD 14
Отличительная особенность FreeBSD это использование коллекции портов. Они представляют список программ и библиотек в исходных кодах с возможностью сборки с любыми необходимыми опциями. Порты находятся /usr/ports/ каталоге. Покажу два метода развертывания и обновления портов, через репозиторий используя систему контроля версия Git (актуальный) и portsnap (старый, на FreeBSD 13.2 еще поддерживается).
1. Обновление портов через Git
1.1. Установка Git
Нужно установить Git (система управления версиями), если ранее не была установлена.
В системе раньше уже использовались порты, устанавливаем из портов
cd /usr/ports/devel/git/ && make install clean
Если в системе порты не использовались устанавливаем через пакеты pkg.
pkg install git
Достаточно поставить облегчённую версию git-lite или git-tiny (у этих версий меньше зависимостей). Используем команду: pkg install git-tiny
1.2. Развертывание коллекции портов
Клонируем официальный репозиторий портов FreeBSD
git clone https://git.FreeBSD.org/ports.git /usr/ports
Если получаем сообщение: fatal: destination path '/usr/ports' already exists and is not an empty directory. Значит коллекция портов ранее использовалась и необходимо удалить содержимое каталога /usr/ports/ или сам каталог
rm -rf /usr/ports/
Порты клонированы из репозитория, перейдем в каталог /usr/ports/ и посмотрим содержимое каталога.
cd /usr/ports/ && ls
1.3. Обновление коллекции портов
Используем команду, где параметр -С путь до каталога портов
git -C /usr/ports pull
Или переходим в каталог портов и выполняем команду git pull
cd /usr/ports/
git pull
Перед установкой программ и компонентов всегда нужно обновлять порты.
2. Обновление портов через portsnap (устаревший метод)
В FreeBSD 14 данный метод не поддерживает и утилита portsnap удалена. Устаревшим методом еще поддерживается в FreeBSD 13.3.
Переходим в каталог /usr/ports/
cd /usr/ports/
Если каталог нет, создаем
mkdir -p /usr/ports/
Скачиваем и извлекаем коллекцию портов
portsnap fetch extract
Для обновления используем команду
portsnap fetch update