Обновление коллекции «портов»


Вместе с самой системой FreeBSD постоянно обновляется и коллекция «портов». В ходе обновления системы обновляются и установленные «порты». Не забывайте, что дополнительное программное обеспечение может открывать уязвимости в системе безопасности, как и системное программное обеспечение, и потому лучшая защита от нежелательных вторжений — постоянное обновление программного обеспечения. Обновление установленного программного обеспечения выполняется в два этапа: первый — обновление коллекции «портов», второй — обновление установленного программного обеспечения.

Если обновление производится с помощью csup(1), добавьте в файл supfile строку ports tag=., чтобы одновременно с системой обновлялась и коллекция «портов». Однако, обновляя ветку с исправленными ошибками (errata), скорее всего, вы обновляете свою систему с помощью службы FreeBSD Update. Или, может быть, вам не требуется обновлять систему целиком, а только коллекцию «портов». Тогда на помощь придет portsnap(8).

Программа portsnap(8) загружает и устанавливает сжатые моментальные копии и обновления коллекции «портов», помогая системным администраторам обновлять установленное программное обеспечение. Каждый час, или что-то около того, центральный сервер FreeBSD portsnap собирает все изменения в коллекции «портов», внесенные с момента предыдущей проверки. Эти изменения собираются в виде заплатки. После запуска portsnap(8) загрузит все обновления, накопившиеся с момента последнего обновления дерева «портов», и применит эти изменения к локальной коллекции «портов», предоставив в ваше распоряжение самые свежие версии «портов».

portsnap или csup

Обновлять коллекцию «портов» следует с помощью одной программы — portsnap(8) или csup(1), — не смешивая эти два способа. Эти два инструмента несовместимы между собой. Для системы версии -stable или -current удобнее использовать csup, а для рабочих систем при двоичном обновлении лучше подходит portsnap. В любой ситуации можно использовать portsnap(8) или csup(1), но только какую-то одну из них!

Конфигурирование portsnap

Порядок выполнения обновлений, производимых программой portsnap(8), определяется параметрами настройки в файле /etc/portsnap.conf. Очень немногие изменят конфигурацию portsnap(8), тем не менее ниже перечислены параметры, значения которых вам, скорее всего, захочется изменить. Можно заметить, что конфигурация portsnap(8) выглядит почти так же, как и конфигурация freebsd-update(8). Оба инструмента были написаны одним и тем же человеком, поэтому они используют сходные механизмы для решения сходных задач. Файл /etc/portsnap.conf содержит ключевые слова и значения, которые им присваиваются.

SERVERNAME=portsnap.freebsd.org
Это имя сервера portsnap. В действительности под именем portsnap.freebsd.org скрывается несколько серверов. Возможно, в будущем Проект FreeBSD объявит о запуске региональных серверов для более равномерного распределения нагрузки, но пока это единственный доступный сервер portsnap.

KEYPRINT=9b5...
Параметр KEYPRINT — это криптографический ключ сервера portsnap. Сервер portsnap(8) подписывает обновления своей цифровой подписью, чтобы гарантировать их подлинность и целостность. Не изменяйте этот параметр.

REFUSE arabic korean
Параметр REFUSE позволяет определить категории программного обеспечения в «портах», которые не должны обновляться. Указанное в этом примере значение параметра предотвращает обновление категорий программного обеспечения поддержки арабского и корейского языков, как это делается в файле refuse, который используется программой csup(1). Так же как и в случае с программой csup(1), следует проявлять особую осторожность, включая категории в этот список, потому что коллекция «портов» — это единое целое, и при отказе от обновлений крупных частей дерева можно привести систему в противоречивое состояние.

portsnap(8)

При первом запуске программы portsnap(8) выполните команду fetch extract:

# portsnap fetch extract

Получив эту команду, portsnap(8) загрузит последнюю моментальную копию коллекции «портов» и извлечет ее содержимое в каталог /usr/ports. Команду fetch extract следует использовать всего один раз, с целью приведения portsnap(8) в известное состояние.

При последующих обновлениях следует использовать команду fetch update:

# portsnap fetch update

По этой команде все изменения, произошедшие с момента последнего запуска portsnap(8), будут загружены и установлены в коллекцию «портов».

Если вы планируете регулярно запускать portsnap из cron(1), то вместо команды fetch update лучше использовать команду cron update. Это поможет равномерно распределять нагрузку на серверах FreeBSD portsnap. Вот пример записи в файле crontab пользователя root, которая запускает portsnap ежедневно в пять часов утра:

0 5 * * * /usr/sbin/portsnap cron update

В действительности обновление в этом случае будет производиться в случайно выбранный момент времени, в интервале между пятью и шестью часами утра, что гораздо более эффективно, чем если бы все пользователи portsnap(8) пытались одновременно подключиться к серверу ровно в пять утра.

Фактически это все, что вам требуется знать для работы с программой portsnap(8), предоставляющей отличный способ получения самых последних версий приложений для FreeBSD без использования csup(1) или обновления всего дерева исходного кода. Единственное, что теперь осталось сделать, — это обновить программное обеспечение, чтобы привести его в соответствие с обновленной версией коллекции «портов».

Комментарии запрещены.