Рубрики
Администрирование

Обновление портов FreeBSD

В общем-то ничего сверх секретного я не скажу. Но дабы самому не забыть, да и вдруг кому-то пригодится.
Потребовалось мне обновить порты на одном из моих серверов на FreeBSD, дабы поставить ffmpeg версии > 0.5.
Сервер в общем-то локальный, для разработки, поэтому порты там последний раз обновлялись давным давно, когда ставилось изначально ПО.
Начал вспоминать как это делается. На ум первым делом пришла мысль о cvsup, которым я когда-то давно пользовался. Но! Но потом я вспомнил что есть уже давным давно более простой способ под названием portsnap. О нем собственно и речь.

Все что нужно чтобы обновить порты с помощью portsnap, это:
root@server: /usr/ports# portsnap fetch
Looking up portsnap.FreeBSD.org mirrors… 5 mirrors found.
Fetching public key from portsnap2.FreeBSD.org… done.
Fetching snapshot tag from portsnap2.FreeBSD.org… done.
Fetching snapshot metadata… done.
Fetching snapshot generated at Tue Jul 6 04:43:03 MSD 2010:
de0402eede480ca39be5780c16323c94d9cce11aa966d3100% of 62 MB 497 kBps 00m00s
Extracting snapshot… done.
Verifying snapshot integrity… done.
Fetching snapshot tag from portsnap2.FreeBSD.org… done.
Fetching snapshot metadata… done.
Updating from Tue Jul 6 04:43:03 MSD 2010 to Tue Jul 6 10:37:47 MSD 2010.
Fetching 4 metadata patches… done.
Applying metadata patches… done.
Fetching 0 metadata files… done.
Fetching 9 patches….. done.
Applying patches… done.
Fetching 0 new ports or files… done.

которая скачает свежий снапшот с удобного сервера.

затем надо сделать:
root@server: /usr/ports# portsnap extract
которая распакует скачанный снапшот в дерево портов. Это делать надо только один раз, и если вы уже проделывали это раньше, то этот шаг можно пропустить.

Ну а далее смело идем ставить нужный нам порт. Вот собственно и все! 🙂

Для периодического обновления портов надо выполнять:
root@server: /usr/ports# portsnap update

Если вы просто попробуете выполнить апдейт портов, минуя portsnap extract, то вы увидите что-то вроде этого:
root@server: /usr/ports# portsnap update
/usr/ports was not created by portsnap.
You must run ‘portsnap extract’ before running ‘portsnap update’.