Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> настройка —> portsnap

Использование утилиты portsnap для обновления портов

Автор: lissyara.


    С версии FreeBSD 6.0 штатным средством обновления портов является portsnap - утилита использующая моментальные, заранее сделанные снимки портов. Непонятно, чем не устраивает cvsup. Но - надо идти в ногу со временем :) Про неё в-принципе написано в хандбуке, поэтому эта статья является просто высказыванием собственного мнения и впечатлений. Итак, для начала рихтуем конфиг - /etc/portsnap.conf, если нужно указать другой сервер для обновлений:
# /etc/portsnap.conf - конфигурационный файл portsnap

# Директория, где по дефолту сохраняются сжатые моментальные снимки
# дерева портов.
# WORKDIR=/var/db/portsnap

# Собственно где находятся порты (для команд "update" и "extract")
# PORTSDIR=/usr/ports


# Сервер, или пул серверов с которых брать обновления. Можно
# поменять, но обычно это не приносит значимого ускорения работы
# (а на мой взгляд имеет смысл только в случае если у вас разная
# цена трафика из разных стран - например наш дешевле...)
SERVERNAME=portsnap.FreeBSD.org

# Доверенный ключ. Изменять его следует только в том случае, если
# если вы получили такое указание в подписанном PGP письме
# от <security-officer@FreeBSD.org> с объяснением почему.
KEYPRINT=9b5feee6d69f170e3dd0a2c8e469ddbd64f13f978f2f3aede40c98633216c330

Ну и пробуем:
/usr/home/lissyara/>portsnap fetch
Looking up portsnap.FreeBSD.org mirrors... using portsnap1.FreeBSD.org
Fetching public key... done.
Fetching snapshot tag... done.
Fetching snapshot metadata... done.
Fetching snapshot generated at воскресенье, 14 мая 2006 г. 04:39:01 (MSD):
ef5549df4952a2f59eb20419ac8008f6039b75268d7fbb  5% of   40 MB   42 kBps 15m35s
Extracting snapshot... done.
Verifying snapshot integrity... done.
Fetching snapshot tag... done.
Fetching snapshot metadata... done.
Updating from воскресенье, 14 мая 2006 г. 04:39:01 (MSD) to
воскресенье, 14 мая 2006 г. 21:02:49 (MSD).
Fetching 4 metadata patches... done.
Applying metadata patches... done.
Fetching 0 metadata files... done.
Fetching 79 patches.....10....20....30....40....50....60....70.... done.
Applying patches... done.
Fetching 3 new ports or files... done.
/usr/home/lissyara/>

Мдя. Мало что 40 мегов, так ещё и по времени на моём AMD K6-II 533 ушло минут 20 на телодвижения после скачивания... Долго. После чего устанавливаем дерево портов:
/usr/home/lissyara/>portsnap extract
/usr/ports/.cvsignore
/usr/ports/CHANGES
/usr/ports/COPYRIGHT
/usr/ports/KNOBS
/usr/ports/LEGAL
/usr/ports/MOVED
/usr/ports/Makefile
/usr/ports/Mk/bsd.apache.mk
.................
.................
/usr/ports/x11/yelp/
/usr/ports/x11/zenity/
Building new INDEX files... done.
/usr/home/lissyara/>

Ещё час с гаком ушёл... Пробуем обновиться:
/usr/home/lissyara/>portsnap fetch update
Looking up portsnap.FreeBSD.org mirrors... using portsnap1.FreeBSD.org
Fetching snapshot tag... done.
Fetching snapshot metadata... done.
Updating from воскресенье, 14 мая 2006 г. 21:02:49 (MSD) to
воскресенье, 14 мая 2006 г. 22:00:22 (MSD).
Fetching 4 metadata patches... done.
Applying metadata patches... done.
Fetching 0 metadata files... done.
Fetching 4 patches... done.
Applying patches... done.
Fetching 0 new ports or files... done.
Removing old files and directories... done.
Extracting new files:
/usr/ports/LEGAL
/usr/ports/MOVED
/usr/ports/databases/p5-DBD-Pg/
/usr/ports/textproc/p5-HTML-EscapeEvil/
Building new INDEX files... done.
/usr/home/lissyara/>

Ну, тут он у cvsup`a выиграл :) минута ушла, или две :)

Итого - по времени на первое скачивание и установку стока же или даже больше чем установка cvsup из портов, потом быстрей получается. Мне - не понравилось... Хотя утилита чётко в UNIX-like стиле - делает одно, но неплохо. Тем не менее cvsup ведь всё равно ставить придётся - чтоб обновлять исходные коды системы, такчто решать вам.



размещено: 2006-05-15,
последнее обновление: 2006-05-15,
автор: lissyara


Abigor, 2006-05-15 в 6:26:26

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

Юрий, 2006-07-07 в 11:21:32

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

Продолжение ..., 2006-07-07 в 11:47:03

Fetching 4 metadata files... /usr/sbin/portsnap: cannot open lfdce7940f3108b72254d4c206ab3211390d297flbe3c5ba639de643346298.gz: No such file or directory
metadata is corrupt.

Вот такие пироги.

Sasha, 2006-08-20 в 0:56:39

portsnap fetch --debug ,бывает из-за прокси ,лучше обновить версию.

karoll, 2006-11-08 в 19:22:17

 /usr/sbin/portsnap: cannot open...
Говорит о том что побился архив.
Заходишь в /var/db/portsnap/files и трешь его ручками - в итоге скачиваешь еще 40Mb :)

Seclorum, 2006-12-12 в 1:48:35

Не знаю с какой версии FreeBSD, но теперь ( у меня FreеBSD 6.2) в базовую систему входит csup ( переписанный на Cи cvsup)

Bas, 2007-01-18 в 15:52:48

Я конечно еще чайник, но могу высказать свое мнение у меня например корпоративная сеть и выход есть токо по 80-у порту в инет при етом cvsup мну посылает и нехосет работать а portsnap сделал свою работу на 5

Slava524, 2007-01-30 в 14:50:14

Кстати, в 6.2 (раньше не замечал) сразу в комплекте идет утилитка csup - делает то же, что и cvsup, но последний-то еще установить надо (а он еще модулу за собой тянет). конфиги подходят от cvsup, опция -g ему вообще не требуется. красота!

lissyara, 2007-01-30 в 14:53:24

тока работает медленней чем cvsup. Хоть и на сях написан.

arachnid, 2007-03-29 в 14:44:08

ну если и медленнее (csup), то ненамного. по крайней мере без секундомера не обнаружить.
недостатки обоих sup-ов - неумение работать через прокси. но к сожалению и портснап страдает некорректной работой. а сливать каждый раз по 40 метров слегка напрягает :)
csup входит в базовую систему с 6.2, для предидущих есть в портах

фф, 2007-04-25 в 22:45:14

[quote]а сливать каждый раз по 40 метров слегка напрягает :)[/quote] чтото ты не так понял, это тока первы раз качаешь ~40М, а потом тока новые пакеты - мне например очень понравилось как портснэп работает, намного быстрее чем ксуп или квсуп.

nebo, 2007-05-12 в 0:17:56

to Slava524
cvsup-without-gui пашет без всяких опций:
cvsup /usr/ports/ports-supfile ;)

KaMa-CyTpA, 2007-05-19 в 11:04:55

У меня в сетке несколько сервантов на фре. Все 6.2
Можно ли сделать так, чтобы я на проксе (она тоже на фре) закачивал вот это филе, а остальные чтобы с прокси уже брали?
Экономия ведь получается неплохая если 5 серверов...

Nichls, 2007-06-28 в 12:42:19

Данная статья + хэндбук = все хорошо. Касательно меня - мне все равно, сколько будет качать, если это надо для дела. О таких мелочах заботиться - попусту тратить свое время. ИМХО описанный метод проще. От sup'ов отказался. Всем спасибо.

karakurty, 2007-07-09 в 18:14:04

to Kama-Sutra:
please look to cvsup-mirror

bioroido, 2007-07-10 в 13:17:48

to karakurty:
cvsup-mirror "окупаться" долго будет, ибо тянет в начале кучу потолще 40-ка мегабайт. но зато свое, локальное.

mcat, 2007-08-03 в 6:44:46

Я б к этой рихтовкеИтак, для начала рихтуем конфиг - /etc/portsnap.conf, и если кроме Аглицкого и локально-русского или украинскаго другие порты апдейтить не нужно - расскоментировать
REFUSE arabic chinese french german hebrew hungarian japanese
REFUSE korean polish portuguese vietnamese

ShorKan, 2007-10-02 в 23:22:41

Если пользуешь portsnap, cvsup' om пользоватся можно? конфликтов не будет тогда?

mike, 2007-10-24 в 18:27:02

в cvsup есть встроенная возможность работать через SOCKS-прокси. а через HTTP(S)-прокси можно заставить работать при помощи proxytunnel, сам себе так сделал - прекрасно работает. У меня стоит SQUID. По логам смотрю, сколько каждый раз при обновлении было скачано - очень удобно. Правда конфигурацию по-умолчанию придется подправить, необходимо в squid.conf разрешить метод CONNECT на tcp порт 5999.

kmb, 2007-11-22 в 13:43:37

mike, опиши на форуме подробнее как ты cvsup через прокси пускаешь.

Wormer, 2007-11-25 в 2:44:51

kmb
http://www.lissyara.su/?id=1012 в каментах, в самом низу описано как сделать. Проверял, все отлично работает. ;)

Covax, 2008-03-12 в 14:37:58

На 6.3 уже 50 метров первый раз тянет.

VVD, 2008-03-21 в 4:22:18

На любой фре portsnap качает одинаково.
Раньше было 40Mb, а теперь 50Mb, потому что портов стало больше - каждый день добавляются новые порты.

С машины на машину очень просто копировать базу портснапа, чтобы выкачивать только 1 раз из инета эти 50Mb.
Примерно так:
# cd /var/db
# rm -rf portsnap
# scp -r user@computer:/var/db/portsnap .
# portsnap extract
Работает - проверено на личном опыте.
На машинке computer перед этими телодвижениями запукскаю portsnap fetch.

freeman_tnu, 2008-03-29 в 19:27:56

Никто не в курсе, в UA-IX есть зеркала portsnap-a?

P@trick, 2008-03-30 в 15:25:49

Вопрос, а чем можно сделать локальный сервер портснапа ?
(типа cvsupd) ???

P@trick, 2008-03-30 в 22:33:36

>>Никто не в курсе, в UA-IX есть зеркала portsnap-a?
Если подскажете чем - заделаю у себя :)

VVD, 2008-03-31 в 17:57:57

AFAIK, это обычный http с определённой структурой каталогов.

HOSTER, 2008-06-14 в 17:52:02

Да гаразда круче cvsup`a. Спасибо за статтейку!

Rimlyanin, 2008-07-10 в 13:22:07

fax# portsnap fetch
Looking up portsnap.FreeBSD.org mirrors... 4 mirrors found.
Fetching snapshot tag from portsnap1.FreeBSD.org... done.
Fetching snapshot metadata... done.
Fetching snapshot generated at Thu Jul 10 04:14:39 EEST 2008:
840893447b57af1c77868d8f34c2c47fd9d24495553217 99% of   52 MB   82 kBps 00m00s


и так мы можем стоять на 99% очень долго

W@lker, 2008-10-23 в 15:21:04

Главное правильно выбрать зеркало
SERVERNAME=ru.portsnap.FreeBSD.org
в конфиге

А до этого наблюдал 20 Kbps
после изменения аж 300-400 Kbps

FRAGmat, 2009-04-30 в 7:43:10

Я новичок в этом деле.
Решил попробовать цвску, закопался и удалил цвску.
portsnap, имхо, для новичков лучше.

turbo, 2009-05-28 в 8:58:23

американский портснап portsnap.freebsd.org медленный я перебирал варианты и гуглил - в результате мой список зеркал

ru.portsnap.freebsd.org
eu.portsnap.freebsd.org

Nickless, 2009-06-17 в 14:31:50

и не забываем после portsnap fetch && portsnap extract делать еще

cd /usr/ports
make index


а еще лучше --
make fetchindex

чтобы не самому индекс строить, это долго, а скачать готовый

Nikolay, 2009-10-22 в 9:10:53

Что бы было всем известно ... и на этом сервере в одном месте все время висело, а то забываю ...
> From: [EMAIL PROTECTED]
> [EMAIL PROTECTED] On Behalf Of
> Elwell, Richard

> I get the following error when I run portsnap fetch:

> Fetching 14248 new ports or files... /usr/sbin/portsnap: cannot open
> d5742d6e9ca3b11450f23606ae6a16b391a12f4c7b2d4fc638513ce34f7c2c
> 25.gz: No
> such file or directory
>
> snapshot is corrupt.
> A quick search led to a similar problem in the past:

Richard,

By any chance is your portsnap using a proxy server, possibly squid?

If so this may get around the problem prior to running your portsnap.

# sysctl net.inet.ip.portrange.randomized=0

You may want to check the value first, and reset it after the portsnap.

Maybe something like this in your portsnap script.

dr129s, 2010-02-17 в 8:59:48

portsnap При обновлении портов через proxy выдает ошибку:
#Fetching 1248 new ports or files... /usr/sbin/portsnap: cannot open
#d5742d6e9ca3b11450f23606ae6a16b391a12f4c7b2d4fc638513ce34f7c2c25.gz: No such file or directory
....
Нужно в .csrhc добавить
setenv HTTP_PROXY=http://IP-PROXY:Port_Proxy
setenv HTTP_PROXY_AUTH=basic::username:password

подробно написано почему именно так в http://forum.sysadmins.su/lofiversion/index.php/t20449.html

dr129s, 2010-02-17 в 9:13:24

для bash:
export HTTP_PROXY=http://IP-PROXY:Port_Proxy
export HTTP_PROXY_AUTH=basic::username:password
для csh:
setenv HTTP_PROXY http://IP-PROXY:Port_Proxy
setenv HTTP_PROXY_AUTH basic::username:password

SolarBack, 2010-03-19 в 16:22:19

Комменты очень выручили. Cvsup не хотел работать через prtunnel с авторизацией на проксе, а portsnap все отлично проглотил.
Самое главное, нужно в .csrhc добавить (если используете csh)
setenv HTTP_PROXY http://IP-PROXY:Port_Proxy
setenv HTTP_PROXY_AUTH basic::username:password

bonhead, 2010-05-24 в 3:56:00

Ребята я готов сделать портснап мирор в UA-IX подскажите каким образом

gonzo111, 2010-09-08 в 11:02:47

обновляю скриптом
update.sh
#!/bin/sh
portsnap fetch update
more /usr/ports/UPDATING
echo "Press any key to continue...Server update" && portmaster -ad

demon, 2011-08-05 в 10:37:41

В Cron чтобы запустить portsnap -I cron update
а потом время от времени portsnap update

quiber, 2012-02-07 в 18:08:37

на данный момент portsnap занимает 60мб и extract длится более полутора часа (угнетает).
сервер 8.2
проц 2.6 интел пень
ддр 512

VVD, 2012-02-07 в 19:08:08

quiber, в первую очередь я бы посмотрел на диски - если в компе какой-нибудь IDE 20-40Gb 5400rpm, то ничего удивительного. Поставь современный SATA от 500Gb на пластину и увидишь разницу в разы. Проц на это мало влияет, а память совсем не влияет.
Ещё интересно какая нагрузка на машинку во время extract?
Если сильно принципиально, то могу потестить на P4-3GHz/2Gb/WDC WD15EADS-00P8B0 1.5Tb 5400rpm.

Alex Keda, 2012-02-07 в 19:31:43

mount -o async /
или
tunefs -n enable /

я обычно первое делаю, если надо с корневым разделом много на запись работать

arachnid, 2012-02-07 в 19:39:01

по любому extract делается только один раз

Александр, 2012-12-27 в 5:35:34

Спасибо за эту статью и сам ресурс. Не только начинающие найдут для себя новое.

unkn0wn, 2013-02-09 в 18:17:52

Не понятно, как у многих отписавшихся распаковка занимает часы. По факту portsnap скачивает архив, распаковывает (в первый раз это действительно будет долго - на целероне 2.8 минут двадцать), еще за 20 минут делается апдейт (ide-винт). Но даже в этих раскладах оно будет быстрее, чем csup-ить дерево, которое у меня в лучшем случае обходится за час.

Alex Keda, 2013-02-09 в 19:02:32

просто ФС в синхронном режиме работает. вот и всё.

vadim64, 2013-04-18 в 13:44:23

да просто статья когда писалась то
это щас всем похеру на проц, хард и канал, а рама - вообще стоит дешевле пива



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.2411 секунд
Из них PHP: 43%; SQL: 57%; Число SQL-запросов: 86 шт.
Исходный размер: 50306; Сжатая: 12629