Удобный механизм обновлений во FreeBSD

Marinavo_0507

Был как-то holywar на тему преимуществ систем, основанных на компиляции из исходных текстов, но что-то не смог найти. Так вот там говорилось, что скачивание обновлений исходников происходит быстрее, так как нужно взять только патчи. И я верил. Пока не занялся сегодня обновлением FreeBSD.
1. cvsup для портов происходит жутко медленно. У меня - около 40 минут. Функциональный аналог этой процедуры в Debian - apt-get update происходит примерно на порядок быстрее, даже если с заграничных серверов качать. Может, он и меньше скачивает, но обход дерева портов идёт медленнее.
2. Запустил я потом portupgrade. Так он написал про Starting session, и начал молча тупить. Фиг знает, сколько он будет тупить. Даже ключ -v разговорчивости не прибавляет. Вот что он делает в это время, и почему ничего не пишет даже в verbose mode?
UPDATE: portupgrade тупил полчаса, и сказал, что есть проблемы с зависимостями. apt-get к аналогичным выводам приходит, опять же, минимум на порядок быстрее.

Marinavo_0507

На этом сервере ещё пара jail'ов есть.
Хотелось бы, чтоб и там всё обновилось.
Я подозреваю, что они были созданы не вручную, а с помощью какой-то программы, которая копирует только то, что нужно. Но apropos jail показывает только jail(2) и jail(8 беглый просмотр которых ничего не дал. Гуглением нашёл совет, датированный 2001г (что хорошо, так как FreeBSD стоит версии 4 в котором советовалось в аналогичной ситуации написать скрипт, который сравнит бинарники в jail'е и снаружи, и скопирует новые версии. Более удобные и надёжные способы есть?

janlynn

cvsup для портов происходит жутко медленно. У меня - более 2 часов
у меня минут 5 как максимум

janlynn

portupgrade тупил полчаса, и сказал, что есть проблемы с зависимостями
pkgdb -F

Marinavo_0507

5 минут - тоже не особо быстро
а 2 часа, возможно, от того, что я ещё ни разу не обновлял порты

janlynn

5 минут это если давно не обновлял, если раз в неделю хотя бы - то быстрее

Marinavo_0507

Один раз скомпилировать perl-5.6.2 оказалось недостаточно. Пошло по второму разу. Очень эффективный механизм обновлений!
UPDATE: оно и проинсталлировать его попыталось второй раз. Но не шмогло. В результате апгрейд net/p5-Net-Daemon не удался.
UPDATE2: походу, все зависимые от perl порты не установятся по той же причине. На ^C portupgrade не реагирует (я хотел его прервать и запустить повторно).

AlexV769

проблемы с портапгрейдом были, если сильно менялось дерево зависимостей у какого-нить пакета (в основном, когда шло переименование).
проблем с ^C никогда не было, всегда откликается нормально.
обноволение портов лучше поставить в крон - че-нить типа
08 6 * * * lockf -t 0 /tmp/portsupdate.lock /usr/bin/make -C /usr/ports update fetchindex > /var/log/portsupdate
У меня - более 2 часов
медленный канал в инет? медленный проц? выключенное сжатие при обновлении?

lopidus

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

Marinavo_0507

проблемы с портапгрейдом были, если сильно менялось дерево зависимостей у какого-нить пакета (в основном, когда шло переименование).
Ну наверное, оно поменялось.
И что мне теперь делать? после "обновления" пропал perl и собственно portupgrade.
проблем с ^C никогда не было, всегда откликается нормально.
И что при этом происходит нормально?
медленный канал в инет? медленный проц? выключенное сжатие при обновлении?
Всё мимо.

garikus

Может быть подойдёт cpdup? (ports/sysutils/cpdup)

Marinavo_0507

Even if you don't do anything wrong, a package database may get corrupt somehow when it is heavily updated.

garikus

И что мне теперь делать? после "обновления" пропал perl и собственно portupgrade.
Куда пропали?
Я вот недавно обновлял программы на FreeBSD 4.11, так вот там ничего никуда не пропало.. Может ты ошибся, и portupgrade всё-таки на месте? Тогда попробуй обновить его.

Marinavo_0507

Я уже заново поставил.
А пропал он, так как ruby тоже как-то не-так обновилось.

janlynn

наверно ты както не так обновляешь

Marinavo_0507

Ну если в хендбуке неправильно написано, то что ж поделаешь...

AlexV769

гм.
с какими ключами запускаешь cvsup?
откуда синхронизируешься?
за 2 часа можно дерево портов выкачать дохрена раз.

Marinavo_0507

*default  host=cvsup2.ru.FreeBSD.org
*default base=/usr/local/etc/cvsup
*default prefix=/usr
*default release=cvs tag=RELENG_4_8
*default delete use-rel-suffix
ports-all tag=.

только supfile, ключи не указывал

AlexV769

cvsup в течении 2х часов вытаскивал дерево портов или полтора часа из них пытался подключиться к серверу?

Sharp

А может пора уже перейти на csup заместо cvsup-а?
(я это не про скорость скачивания, просто у меня закралась мысль что все пишут про cvsup - неужели про csup никто не в курсе?)

krishtaf

говнотред

Marinavo_0507

наврал я
не 2 часа, а "всего" 40 минут
бодро скачивал всё это время, без пауз

AlexV769

это знчит лишь то, что ты ооочень долго не обновлял порты.
в таких ситуациях лучше качать полный tgz и его распаковывать поверх старых портов, чем делать инкрементальные изменения за несколько месяцев.
man portsnap

hoha32

Кстати, 4.8 - это же жутко Legacy, с этим и могут быть связаны проблемы portupgrade.

Marinavo_0507

Не такая уж и древность. Я Debian дольше использую - подобных косяков не наблюдал.

Marinavo_0507

Короче, я всё обновил, преодолев многочисленные грабли.
Надо заметить, это всё же чуть полечге, чем поддерживать редхат того же года розлива.

Filan

Не забывай читать /usr/ports/UPDATING.
Я бы ещё рекомендовал проапдейтить систему до RELENG_4. 4_8 уже давно не поддерживается.
Так же хорошо что здесь упомянули о csup (для апдейта сырцов) и portsnap (для апдейта дерева портов).
Ещё перед апдейтом системы (но после обновления сырцов) обязательно почитай /usr/src/UPDATING.

Marinavo_0507

Не забывай читать /usr/ports/UPDATING
Я подумал, что за N лет там написали сильно дофига.

sergey_m

а 2 часа, возможно, от того, что я ещё ни разу не обновлял порты
С учётом того, что там у тебя какая-то старая версия можно сделать вывод, что ты скачал порты заново. В таком вырожденном случае, когда данные активно меняются, а обновляются раз в 4 года, конечно метод обновления через сравнение и патчи оказывается наихудшим.
Кстати в современных версиях FreeBSD пользователи пользуются portsnap, он работает несколько секунд.

sergey_m

А может пора уже перейти на csup заместо cvsup-а?
(я это не про скорость скачивания, просто у меня закралась мысль что все пишут про cvsup - неужели про csup никто не в курсе?)
csup не работает быстрее, потому что работает по тому же принципу. Может быть он работает чуть-чуть быстрее из-за другой реализации. csup нет в таких старых версиях FreeBSD. Порты надо обновлять portsnapом.

sergey_m

Я бы ещё рекомендовал проапдейтить систему до RELENG_4. 4_8 уже давно не поддерживается.
Говно совет, имхо. RELENG_4 тоже не особо поддерживается. Да, туда мержатся security fixes, перед тем как идти в RELENG_4_11. Но еще туда время от времени, кто-то что-то коммитит, и качество этих коммитов лично для меня стоит под вопросом. Назвать их мержами нельзя, т.к. слишком уж разные системы 4.x и 7.0, поэтому каждый раз патч суть ли не пишется заново. А потом эти патчи подвергаются очень незначительно тестированию. Никто из девелоперов уже не держит у себя RELENG_4, стресс тесты на нём не запускаются. Все пользователи, что держат RELENG_4 не обновляют его.
А главное смысл? Что это даст. Серьёзных security проблем не было обнаружено в этом промежутке. Если хочется закрыть несерьёзные проблемы, то лучше ставить RELENG_4_11. Ибо он прошёл цикл релиза, был оттестирован и с тех пор в него вошли исключительно security fixes.

Marinavo_0507

Сейчас там RELENG_4_10, до которого я обновил 2 года назад по твоему совету. Его нужно менять на 4_11, или и так сойдёт?

Marinavo_0507

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

sergey_m

Сейчас там RELENG_4_10, до которого я обновил 2 года назад по твоему совету. Его нужно менять на 4_11, или и так сойдёт?
А какая собственно цель? Если получить security fixes, то оставляй RELENG_4_10.
Оставить комментарий
Имя или ник:
Комментарий: