Вырезки из 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.
Установил пакет из портов (/usr/ports/ports-mgmt/portupgrade), подтянулось ещё пару зависимостей.
Перечитал команды: rehash
Обновил все необходимые порты: portupgrade -a