Обновление портов FreeBSD, программа Portsnap

Обновить дерево портов FreeBSD можно несколькими способами. Один из них, на мой взгляд самый удобный, использовать штатную утилиту обновления портов –Portsnap.

Как было сказано выше, данная утилита является штатной, для операционной системы FreeBSD, поэтому присутствует в системе по-умолчанию, во всяком случае в версии 9.2, если ничего не путаю, то в старых версиях, например 5.4, нужно было ее, персонально, из портов ставить.

Программа Portsnap, не работает напрямую с основным деревом портов /usr/ports, она использует рабочий каталог, по-умолчанию /var/db/portsnap, туда скачивается сжатая копия ( snapshot ) дерева портов, а оттуда уже обновляется основное дерево портов. Конфигурационный файл живет по адресу/etc/portsnap.conf, в принципе его можно не трогать, но если вдруг надумаете, например, поменять адрес сервера, откуда программы будет качать исходники или расположение рабочей директории, там все довольно хорошо откомментировано.

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

  • Команда fetch — Скачивает снимок ( snapshot ), основного дерева портов с указанного в конфигурации сервера. Используется только для интерактивной работы, не через cron
  • Команда cron — Используется для запуска из планировщика заданий cron.
  • Команда extract — Разворачивает дерево портов, данная команда полностью удаляет существующее дерево портов, включая все внесенные в него изменения, как правило выполняется в первый раз и в случае, если нужно получить, чистое дерево портов или при использовании с опцией path( cм. ниже )
  • Команда update — Служит для, непосредственно, обновления, основного дерева портов.
  • path — Это дополнительная опция, используется с командой extract, для обновления конкретного порта, или нескольких портов.

Итак, если это первый запуск portnap, делаем:

# portsnap fetch
Looking up portsnap.FreeBSD.org mirrors... 3 mirrors found.
Fetching snapshot tag from portsnap2.FreeBSD.org... done.
Fetching snapshot metadata... done.
Updating from Mon Jun 1 17:22:35 UTC 2009 to Sun Jun 28 08:01:56 UTC 2009.
Fetching 3 metadata patches.. done.
Applying metadata patches... done.
Fetching 3 metadata files... done.
Fetching 2058 patches.....10....20....30....40....50....60....70....80... done.
Applying patches... done.
Fetching 2094 new ports or files... done.

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

Теперь можно распаковать дерево:

# portsnap extract
/Mk
/usr/ports/Templates 
/usr/ports/Tools 
/usr/ports/accessibility 
/usr/ports/arabic 
-----------------------------
пропущено..
-----------------------------
/usr/ports/x11/yelp/
/usr/ports/x11/zenity/
Building new INDEX files... done.

Данная команда разворачивает все дерево целиком, поэтому время выполнения не зависит от того, как давно вы обновлялись. У меня на тестовой, не самой сильной машине, с операционной системой FreeBSD 9.2, ушло порядка 15-ти минут

Теперь обновляем:

# portsnap update
Removing old files and directories... done.
Extracting new files:
/usr/ports/devel/Makefile
/usr/ports/devel/p5-DateTime-Format-SQLite/
/usr/ports/lang/neko/
/usr/ports/security/fakeroot/
/usr/ports/security/tor-devel/
/usr/ports/www/lighttpd/
/usr/ports/www/webcheck/
/usr/ports/www/xpi-noscript/
Building new INDEX files... done.

Вот собственно и все, имеем свежее дерево портов. Если обновление система обнаружит что обновление не требуется, будет выдано соответствующее сообщение:

# portsnap update
Ports tree is already up to date.

Повторюсь, первоначально, процедура может быть весьма длительной, но переживать из-за этого особо не стоит.

Источник

Статья помогла? Поблагодари автора, он ведь старался

Добавить комментарий