Обновление FreeBSD при помощи Portsnap

Рано или поздно возникает вопрос обновления установленного программного обеспечения. Способов обновить FreeBSD и коллекцию портов существует придостаточно (например обновление FreeBSD при помощи csup). Давайте рассмотрим обновление системы и дерева портов при помощи Portsnap (поставляется вместе с базовой версией FreeBSD начиная с версии 6.0).

Далеко ходить не нужно, стоит лишь заглянуть в Handbook. Отличительной особенностью portsnap является то, что он работает не с основной веткой портов (по умолчанию она лежит в /usr/ports) а с ее сжатой копией (по умолчанию лежит в /var/db/portsnap). После обновления сжатой копии, она используется для обновления основной копии портов.

Конфигурации portsnap находится в /etc/portsnap.conf (или в /usr/local/etc/portsnap.conf, в случае если portsnap был установлен из коллекции портов). Handbook утверждает, что нам, обычным пользователям, подойдет конфигурация по умолчанию. Давайте посмотрим что там.

  • SERVERNAME=portsnap.FreeBSD.org — пул, из которого будут скачиваться актуальные снимки дерева портов. Я насчитал их целых 7 штук. (portsnap1.FreeBSD.org, …, portsnap6.FreeBSD.org). Так что если с каким-то из пулов связь будет лучше, стоит изменить конфигурацию SERVERNAME на более быстрый пул.
  • WORKDIR=/var/db/portsnap — Место, куда будет скачиваться сжатая копия коллекции портов из пула.
  • PORTSDIR=/usr/ports — Место, где лежит основная копия портов.
  • KEYPRINT=<ключ> — Ключ, который дает понять пулу, что вы пришли с миром. Менять его не стоит.
  • INDEX — Список индексных файлов, которые нужно обрабатывать. Сюда лучше не лезть.

На этом список параметров по умолчанию ограничивается. Если сравнивать с csup — portsnap выигрывает уже с момента установки системы. Не нужно ничего настраивать. Просто запускай команду и иди пить кофе.

Но я бы порекомендовал настроить еще один параметр REFUSE. Запретить обновление всяких не нужных портов (японские локализации и тд и тп).

Делается это так:

REFUSE japanese polish korean

Тобишь пишем REFUSE и через пробел названия портов, которые мы не хотим обновлять. Вот и все.

При первом запуске portsnap скачивает сжатую копию коллекции портов, которая весит более 50 мегабайт (по сегодняшним реалиям. Для справки — на конец 2006 года коллекция весила всего лишь 41 мегабайт). И тут portsnap выигрывает у csup, потому что csup работает не с сжатой копией, а с CVS репозитарием. Один файл скачать гараздо быстрее чем тысячи мелких.

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

#portsnap fetch

#portsnap extract

или:

#portsnap fetch extract

При последующих запусках (обновлении коллекции) portsnap будет скачивать лишь обновления.

Также отличительной особенностью portsnap от csup является дополнительный шаг — развертывание обновлений в основное дерево портов. Так, чтобы обновить коллекцию портов нужно выполнить две команды (благо их можно выполнить одной командой):

#portsnap fetch

#portsnap update

Одна команда будет выглядить так:

#portsnap fetch update

Хотя extract и update делают одно и тоже действие — получают коллекцию портов для пользователя, они это делают по разному. extract полностью разворачивает сжатую копию в основную, а update лишь обновляет дерево портов. По этому разумно использовать extract только для того, чтобы получить дерево портов снуля. А все последующие разы использовать только update.

Выводы:

И portsnap и csup поставляются в стандартной поставке системы (а раньше приходилось собирать cvsup-without-gui… эх были времена). Portsnap работает с собственным пулом сжатых портов, которое обновляется раз в час. Csup работает с CVS репозитариями. Portsnap обладает более высокой скоростью обновления портов нежели csup. Portsnap не требует дополнительной настройки, им можно пользоваться сразу после установки системы. Csup требует дополнительных настроек. По этому как и чем кому пользоваться каждый решает сам.

Поделитесь статьей:
Константин

Константин

Программист, фрилансер, фотограф любитель, автолюбитель, геймер, писатель, читатель.

Отправить ответ

4 Комментарий на "Обновление FreeBSD при помощи Portsnap"

Notify of
avatar
2000
Сортировать:   новые | старые | наиболее популярные
Andrey
Гость

Спасибо! Все чётко и понятно! 🙂
Также возник вопрос, а как определять быстрый канал к серверу или нет? Какие существуют методики? Какими инструментами для этого пользоваться? Думаю это будет интересно многим.

Константин
Гость

Мне кажется, что определение скорости канала между двумя серверами — это задача настолько тривиальная, что тут даже писать то много не надо.
Выполняешь команду ping и смотришь время, за которое пакеты уходят туда и возвращаются.
64 bytes from portsnap1.freebsd.org (204.109.56.116): icmp_seq=2 ttl=53 time=142 ms
64 bytes from portsnap1.freebsd.org (204.109.56.116): icmp_seq=3 ttl=53 time=143 ms
64 bytes from portsnap1.freebsd.org (204.109.56.116): icmp_seq=4 ttl=53 time=142 ms
Тут видно что 142 милисекунды в среднем. Смотрим другие сервера таким же образом.
PING portsnap3.freebsd.org (212.101.4.241) 56(84) bytes of data.
64 bytes from mirror.solnet.ch (212.101.4.241): icmp_seq=1 ttl=59 time=37.0 ms
64 bytes from mirror.solnet.ch (212.101.4.241): icmp_seq=2 ttl=59 time=36.7 ms
64 bytes from mirror.solnet.ch (212.101.4.241): icmp_seq=3 ttl=59 time=36.6 ms
64 bytes from mirror.solnet.ch (212.101.4.241): icmp_seq=4 ttl=59 time=36.9 ms
Понятно что мне выгоднее пользовать portsnap3.freebsd.org. Для тебя будут естественно другие «быстрые» сервера.

Andrey
Гость

Да, согласен, это я попутал с измерением ширины канала, и пропускной способности сети с помощью iperf. Но тут гугл в помощь. Но применительно к вопросу о выборе сервера хватит и пинга.

Константин
Гость

Ну так ты сам намекнул себе о том, что пора бы и свою статейку про iperf набросать и разместить у меня=)

wpDiscuz
Весь контент, размещенный на сайте madjack.ru является интеллектуальной собственностью автора (если явно не указано обратное).
При копировании или использовании контента - обязательно указывайте ссылку на страницу с ним.
Все права защищены © Дьяков Константин Сергеевич, 2008-2015