Вырезки  из handbook: + UPD от 11/01/2011

Portsnap — система для защищенного распространения дерева портов FreeBSD. Примерно раз в час генерируется "снэпшот" дерева портов, который затем архивируется и подписывается электронной подписью. Полученные файлы затем распространяются при помощи HTTP.

Первый запуск Portsnap

При первом запуске утилите portsnap(8) потребуется загрузить упакованный снэпшот полного дерева портов в каталог /var/db/portsnap/ (/usr/local/portsnap/, если Portsnap был установлен из Коллекции портов). На начало 2006 года размер снэпшота составляет около 41 МБ.

portsnap fetch

После загрузки снэпшота из него может быть развернуто основное дерево портов. Это необходимо, даже есть каталог /usr/ports/заполнен каким-либо другим способом, например при помощи CVSup, поскольку позволяет установить точку отсчета, от которой portsnap будет определять необходимый объем изменений.

portsnap extract

Замечание: В конфигурации установки по умолчанию каталог /usr/ports не создан. Если вы используете FreeBSD 6.0-RELEASE, создайте его самостоятельно перед первым запуском утилиты portsnap. В более поздних версиях FreeBSD или в версии из портов Portsnap автоматически создаст его при первом вызове.

Обновление дерева портов

После того как первоначальный снэпшот дерева портов будет развернут в каталог /usr/ports/, обновление дерева портов будет состоять из двух шагов: загрузки (fetch) обновлений к упакованному снэпшоту и последующего обновления (update) основного дерева. Оба шага могут быть выполнены одним запуском portsnap:

portsnap fetch update

Некоторые из старых версий portsnap не поддерживают такой синтаксис; в этом случае, используйте две последовательные команды:

portsnap fetch
portsnap update

Запуск portsnap из cron

Для того, чтобы избежать проблем с »безумными толпами» клиентов, одновременно приходящими на сервера Portsnap, команда portsnap fetch не запустится как задание cron(8). Для работы из cron предназначена специальная команда portsnap cron, которая перед загрузкой обновлений ожидает случайное время до 3600 секунд.

Кроме того, настоятельно не рекомендуется запускать из cron команду portsnap update, поскольку при пересечении с процессом сборки или установки какого-либо порта неизбежно возникнет конфликт. С другой стороны, безопасно обновить индексный файл INDEX, запустив portsnap -I update (разумеется, команду portsnap update без ключа -I для обновления оставшейся части дерева портов придется запустить вручную).

Для ежедневного обновления упакованного снэпшота и индексного файла при помощи portsnap и последующего отчета почтой об устаревших установленных пакетах добавьте в ваш файл /etc/crontab строку:

0 3 * * * root portsnap -I cron update && pkg_version -vIL=

Если системные часы не установлены в локальное время, пожалуйста, замените 3 на случайное число между 0 и 23, чтобы не создавать пиковых нагрузок на серверы portsnap.

Замечание: Старые версии утилиты portsnap не поддерживали несколько команд при одном запуске (например, cron update). Если команда, указанная выше, не сработает, попробуйте заменить portsnap -I cron update на portsnap cron && portsnap -I update

Update от 11/01/2011

После настройки всего выше сказанного мне на почту стали падать уведомления о необходимости обновления портов, но порты сами не обновлялись, непорядок, решил исправить и в этом мне поможет portupgrade.

Перенаправление почты root FreeBSD
Перенаправление служебной почты пользователя root в nix системой может быть неплохим средством анализа происходящих на Вашем сервере событий. Использовалась система: FreeBSD 8 Для указания адреса электронной почты используется файл: /etc/aliases (его реальное местонахождение: src/etc/mail/aliases) Находим форвадинг писем root: # Pretty much everything else in this file points

Установил пакет из портов (/usr/ports/ports-mgmt/portupgrade), подтянулось ещё пару зависимостей.

Перечитал команды: rehash

Обновил все необходимые порты: portupgrade -a

Использование Portsnap (Обновление портов FreeBSD)