5. Поддержание системы в актуальном состоянии.

Немаловажно поддерживать приложения системы в актуальном состоянии. Всё, что для этого нужно уже придумали за нас. Начнём с того, что необходимо установить порт /usr/ports/ports-mgmt/portupgrade/. Это целый программный комплекс, призванные упростить управление установленными программными пакетами.

Прежде чем заняться обновлением ПО необходимо обновить базу портов. Выполнить это можно с помощью стандртной утилиты csup. Стоит заметить, что в настоящий момент начат процесс перехода на subversion, поэтому в будущем процесс обновления портов может измениться.

Для обновления дерева портов нам необходим файл конфигурации. Самый простой способ получить его - воспользоваться уже готовым в каталоге с примерами: /usr/share/examples/cvsup/ports-supfile. Скопируйте его в удобное для вас место. Перед обновлением портов нужно добавить один штрих - указать сервер, с которого будет производиться обновление.

*default host=CHANGE_THIS.FreeBSD.org

Замените CHANGE_THIS на наиболее подходящее для вас зеркало. Для России во многих случаях оптимальным будет использование зеркала Яндекса: cvsup7.ru.FreeBSD.org. Посмотреть полный список зеркал можно по адресу: http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/cvsup.html#CVSUP-MIRRORS. Для обновления портов данного изменения ports-supfile достаточно.

Можно приступить к обновлению дерева портов:

# csup -L 2 ports-supfile

Ключ -L 2 в команде просто указывает на объём выводимой информации во время обновления. Процесс обновления достаточно продолжительный. Так он зависит от скорости вашего интернет-соединения.

Внимание

Обращаю ваше внимание на то, что используется команда csup, а не cvsup, о которой вы можете прочитать в документации. csup - это аналог cvsup без gui-интерфейса написанный на языке C++. Также csup включен в стандартную поставку системы начиная с 6.2 версии. Если вы желаете, то можете использовать cvsup. В таком случае для отключения gui необходимо добавить ключ -g при выполенении обновления.

По окончании процесса обновления можно заняться обновлением. Для начала создадим необходимые базы данных /usr/ports/INDEX-* и /usr/ports/INDEX-*.db. Первый файл - это стандартная база коллекции портов, второй - бинарная база, используемая комплексом portupgrade. Итак, выполняем:

# portsdb -Uu

Ключ U отвечает за базу INDEX, u - INDEX.db. Процесс создания базы довольно продолжительный, так что запаситесь терпением. После того, как база создана, можно просмотреть список устаревших пакетов.

# portversion

В данном случае вы получите полный список всех установленных портов. Символами меньше, больше или равно отмечены соотвественно устаревшие, актуальные и более новые пакеты, чем в вашей текущей базе (скорее всего ваша база данных портов устарела и её надо переформировать, предварительно обновив порты).

# portversion -l "<"

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

Внимание

Сравнение версий производится не по базе /var/db/pkg, а /var/db/pkgdb.db. Эта база автоматически обновляется при использовании portugrade. Однако в некоторых случаях может потребоваться скорректировать эту базу, для чего можно использовать утилиту pkgdb с ключами -F (интерактивный режим) или -fu (автоматический режим).

Вооружившись списком устаревших портов можем обновить из по одному

# portupgrade libGL

Как вы понимаете, занятие это утомительное. Поэтому можно воспользоваться ключём -a, который заставит portupgrade обновить все устаревшие порты. Кроме этого, возможно понадобятся ещё две опции, заставляющие рекурсивно обновлять пакеты -r (обновлять также все порты, которые зависят от обновляемых) и -R (обновление всех портов, от которых зависят обновляемые). Таким образом даём команду

# portupgrade -arR

и ожидаем завершение установки. Процесс обновления зависит от количества обновляемых портов и от производительности компьютера. Иногда может потребоваться очень много времени (при большом числе пакетов) Кроме того, во время обновления из сети скачиваются все необходимые исходные коды приложений. Чтобы этого не происходило, можете перед процессом обновления скачать все необходимые файлы, воспользовавшись командой

# portupgrade -arRF

Во время обновления портов периодически обращайте внимание на консоль. Некоторые порты выводят интерактивное меню и требуют выбрать определённые опции. Пока вы этого не сделаете, процесс сборки портов останавливается.

Внимание

Во время сборки портов возможны различного рода ошибки. Большинство известных проблем описано в файле /usr/ports/UPDATING. Не стоит пренебрегать изучением этого файлы перед обновлением системы.