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

Обновление мира ("world") FreeBSD

Автор: serge.


    Обновленная версия статьи в которой постарался учесть все пожелания и замечания оставленные в коментариях. Рассматривается переход с версии 6.1 на 6.2.
   Во FreeBSD имеется две ветки разработки: FreeBSD-CURRENT и FreeBSD-STABLE. FreeBSD-CURRENT является последними рабочими версиями исходных кодов FreeBSD и предназначена в первую очередь для разработчиков, тестеров и просто интересующихся людей. В отличие от FreeBSD-CURRENT ветка FreeBSD-STABLE является разработкой, из которой делаются основные релизы. Соответственно для использования на ответственных серверах рекомендуется FreeBSD-STABLE.
   Для того чтобы иметь самые последние версии исходных текстов системы необходимо провести синхронизацию с любым из серверов проекта FreeBSD. Для этих целей воспользуемся утилитой cvsup с sup-файлом stable-supfile из каталога /usr/share/examples/cvsup. Это наиболее рекомендуемый метод, так как он позволяет вам загрузить набор исходных текстов один раз полностью, а затем загружать только произошедшие изменения. Если интернет трафик ограничен, то имеет смысл перенести исходные тексты с установочного диска и затем провести синхронизацию.
   Копируем stable-supfile и приводим его содержание к следующему виду.    
server# cp /usr/share/examples/cvsup/stable-supfile /etc/
server# vi /etc/stable-supfile
# Выбираем cvsup сервер. Кому какой ближе.
*default host=cvsup2.ru.FreeBSD.org
*default base=/var/db
*default prefix=/usr
# Качаем исходные тексты 6.2 ветки. Если необходимо 5, 4, 3 или 2.2, то меняем на
# "RELENG_5", "RELENG_4", "RELENG_3", "RELENG_2_2" соответственно.
# Если не указывать версию в ветке (RELENG_6), то будут скачиваться исходники
# последней доступной версии, которая не обязательно может быть STABLE
# (на момент написания статьи это 6.2RC2).
*default release=cvs tag=RELENG_6_2
*default delete use-rel-suffix
# Включаем сжатие трафика
*default compress
# Качаем полное дерево исходников
src-all

   Запускаем cvsup и ждем пока закончится обновление.
   
server# cvsup -g -L2 /etc/stable-supfile

   Переходим в /usr/scr и начинаем процесс обновления. Запаситесь терпением, так как это занимает 1-2 часа на P4.
server# cd /usr/src/
server# rm -rf /usr/obj
server# make -j4 buildworld

   Где j4 - компилировать в 4 потока. Рекомендуется для однопроцессорных машин, т.к. компиляция в большей степени требовательная к системе ввода-вывода, а не процессору. Для многопроцессорных это значение можно увиличить.
     Для настройки системы можно использовать make.conf. Пример смотрите здесь /usr/share/examples/etc/make.conf.
server# make -j4 buildkernel KERNCONF=MYKERNEL

   Где MYKERNEL - ваше ядро. Без KERNCONF=MYKERNEL собирается с ядром GENERIC. В следующей строке поступаем соответственно.
server# make installkernel KERNCONF=MYKERNEL

   Перезагрузимся
server# reboot

   Перейдем в однопользовательский режим. При загрузке жмем 4, либо из основного режима следующей командой.
server# shutdown now

     Монтируем разделы файловой системы.
server# mount -u /
server# mount -a
server# mergemaster -p

   Устанавливаем мир
server# cd /usr/src
server# make installworld

   Удаляем временные файлы
server# make delete-old

   Сравниваем конфигурационные файлы
server# mergemaster

   Несколько слов о работе этой утилиты. Она сравнивает уже установленные файлы конфигурации с теми которые предлагаются новой версией FreeBSD. Если есть отличия, то на экране появляется сообщение об этом. Первой строкой в нем идет имя файла, который не соответствует новым требованиям, а ниже сами отличия. Знаком "-" помечаются строки, которые утилита собирается удалить, а "+" - которые будут добавлены.
   В конце предлагаются следующие варианты:
   d - удалить предлагаемый вариант и оставить старый;
   i - установить предлагаемый вариант, удалив старый;
   m - сравнить построчно старый и предлагаемый вариант;
   v - посмотреть отличия в файлах снова.
   Чаще всего можно жать i, но иногда это может привести к замене ваших настроек на дефолтные. Так что будте внимательны. Например, у меня установлен exim, а mergemaster предложил вернуть файл /etc/mail/mailer.conf в первоначальное состояние. Это мне не нужно, поэтому выбираю m.
   Начинается построчное сравнение файлов. Экран делится на две части, слева строки из старого файла, а справа из предлагаемого. При нажатии на "Enter" выводятся возможные варианты последующих действий:
   l - использовать вариант слевой стороны;
   r - использовать вариант справой стороны;
   и т.д.
   В моем случае, чтобы оставить старые настройки жмем "l". После того как сравнение кончилось, предлагаются следующие варианты:
   i - установить получившийся файл;
   r - повторить сравнение снова;
   v - просмотреть получивщийся файл.
   Возможен также вариант, когда с новой версией системы появляются новые файлы, которых до этого не было. В таком случае предлагается только 2 варианта:
   d - удалить предлагаемый вариант и оставить старый;
   i - установить предлагаемый вариант, удалив старый.
   И в таком же духе сравниваются все файлы.
   Перезагрузимся
server# reboot
server# cd /usr/src/
server# make delete-old-libs

   Все. Проверяем.
server# uname -a
server# ... FreeBSD 6.2-RELEASE #0 ...

   До обновления было FreeBSD 6.1-RELEASE-p10



размещено: 2006-10-23,
последнее обновление: 2007-01-15,
автор: serge


vad73, 2007-01-17 в 14:38:17

Несколько комментариев:

1 - К lissyara! Статья хорошая своевременная (спасибо serge)! Но т.к. она обновленная - то она не появилась в списке свежих (в правой колонке). Мне кажется это надо поправить.

2 - По поводу строчки "*default host=cvsup2.ru.FreeBSD.org" из файла stable-supfile! Я бы рекомендовал воспользоваться командой "fastest_cvsup -c ru" - она выдает самые близкие и быстрые к вам сервера рунета.

3 - Ну и последнее дополнение к "make -j4 ". Я еще добавляю ключик "s" (пустячек - но экран выдается меньше подробностей  о процессе компиляции). И последнее - Если параметр KERNCONF=MYKERNEL задан в /etc/make.conf - то его можно не указывать в командной строке

lissyara, 2007-01-17 в 15:20:08

1. статья не моя.
3. я по три-четыре ядра собираю бывает в день. На одной машине... с суффиксами -v1; -v2; ....

OzzzY, 2007-05-15 в 18:36:12

Чтобы обновить релиз лучше использовать /usr/share/examples/cvsup/standart-supfile в котором исправить только default host.

ВиталёК, 2007-06-13 в 1:05:37

Вопрос: что нужно изменить в этом кофиги
[code]*default host=cvsup2.ru.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=RELENG_6_2
*default delete use-rel-suffix
src-all[/code]
что бы обновление было до STABLE...
сделать надо
*default release=cvs tag=RELENG_6_2_STABLE ?

KaMa-CyTpA, 2007-07-19 в 8:11:13

server# make -j4 buildworld
Нет говорит ничего такого.
Лезу - тока папка SYS
А я хочу до 7-ки обновиться.

Boogyman, 2007-07-30 в 15:31:49

БАГ!
Я конечно понимаю что повел себя как лопух, но тем не менее, действую вечером по инструкции выполнил не задумавшись:
"server# reboot
"server# cd /usr/src/
"server# make delete-old-libs

после чего получил БИГ-БИГ трабл, т.к. exim, squid, sh и т.д. использовали старые библиотеки, а обновить их я не успел и соотвественно после перезагрузки получилось что даже шел не запускается! Порадовало, что не смотря на отсутствие библиотек, squid не сдался и продолжал работать! Вот так вот я вляпался по самые помидоры! Так что думаю надо добавить этот нюанс в статью т.к. ее читают не только гуру собирающие по 3-4 ядра в день!

Товарищщ, 2007-09-27 в 18:06:57

"... гуру собирающие по 3-4 ядра в день. На одной машине..."
Э-э-э, а зачем?

Макс, 2007-10-09 в 8:45:25

Вообщето с таким конфигом качается не STABLE а RELEASE со всеми на текущий момент заплатками что есть правильно, т.к. держать на сервере всетаки лучше замороженный RELEASE чем STABLE. Хотя кому как, по мне так лучше один раз систему пересобрать а потом только следить за рассылками, да патчи по необходимости накладывать. Но это только мое мнение.

pxel, 2007-11-09 в 3:20:26

#portupgrade -f -c -a -C
#make delete-old-libs

Raven2000, 2007-11-16 в 12:51:12

to serge
Корректней и правильней так
server# cd /usr/obj
server# chflags -R noschg *
server# rm -rf *
Так в процессе прошлых сборок создаются файлы с флагом schg (флаг "постоянства системы") которые даже под рутом не удалить. В итоге фак.

E-Wind, 2007-12-11 в 15:42:29

У меня под 6.2 команда cvsup -g -L2 /etc/stable-supfile не прошла. Заменил в ней cvsup на csup и все запустилось...

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

VVD, 2008-03-21 в 11:31:21

Может я не в том мире живу, но регулярно слышу, что использовать -j для сборки системы и уж темболее ядра - не лучшая идея. Даже порты собирать "все" рекомендуют без -j.
В рассылке, как только попадается вопрос об ошибках при сборке, первым делом рекомендуют попробовать собрать без -j.
Если очень критично время сборки, то можно и поэсперементировать, но врядли имеет смысл рекомендовать всем использование -j.

mcat, 2008-03-29 в 16:45:01

2 VVD : у меня проблема многопоточного мыйканья была только на машинах - уровня пентиум 3 и ниже

VVD, 2008-03-31 в 18:08:16

2 mcat: я вот только месяц назад видел тред в рассылке uafug.org.ua вопрос о проблемах сборки с -j. И тут же куча советов забить вообще на -j, в том числе и при сборке портов, не говоря уже о мире и ядре.

Игорь, 2008-06-06 в 14:08:20

Че то после описанных выше процедур система перестала монтировать /usr. fsck со всеми возможными опциями отказывался что либо делать говоря что нет доступа для записи на диск! Благо все это было на пробной машине =(

HOSTER, 2008-07-22 в 23:24:38

Да статья хорошая но делать ето все очень стремно, чет не решился я на ето все) проще будет ФРЮ переставить и без риска )

Rus, 2008-08-09 в 13:19:15

Ух... вроде всё встало нормально.
Но статейка точно для юных Торвальдсов писана.
По некоторым позициям вопросов появляется больше, чем было до прочтения статьи.

А всем, кто только начал обновлять свой "world" могу посоветовать прежде внимательно прочитать все комментарии,
во избежание проблемных ситуаций (и последующего психического расстройства). :))

Rus, 2008-08-10 в 22:02:39

Да, еще надо заметить, что у меня обновление портов из нета проходило сутки. Поэтому терпением надо запастись просто нечеловеческим...

Anri, 2008-09-09 в 22:34:29

Vse supper! Obnovlenie proshlo bez edinoi problemmy! Spasibo!!!

nevzorofff, 2008-12-08 в 18:24:44

Про j истина, два раза ядро пересобира уже, а оно пересобирается по 12 часов, потому что кампутер на amd k6-2 300mHz :)

Хотя порты обновляются пару часов, потому что канал толстый! :-)

adminMK, 2009-01-08 в 2:18:41

На этапе make installworld [u] наткнулся на:
santacruz# make installworld
...
....
.....
.../usr/src/i386/usr/games:/tmp/install.63146 make -f Makefile.inc1
reinstall
make: permission denied
*** Error code 126

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
santacruz#

причина:
/tmp был смонтирован с опциями noexec,nosuid
решение:
#umount /tmp
#mergemaster -p
#make installworld

omolota, 2009-01-19 в 11:07:55

Ура! Все получилось 7.0 Release => 7.1 Stable.

viktor, 2009-02-20 в 11:58:40

Спасибо за статью! =) Уже как полгода мир на всех серверах под 6.2 обновляю по этой статье и никаких проблем.. =)

ПРОхожий, 2009-02-21 в 1:03:03

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

Olorin, 2009-02-21 в 7:02:47

Никто не освобождал от прочтения: [url=http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/makeworld.html]

Менее понятно, но более подробно. Удобно совмещать статью и хэндбук.

afiskon, 2009-05-23 в 14:49:17

Пара замечаний:
* csup уже включен в мир, cvsup не нужен
* в статье не помешает лишний раз напомнить о необходиости делать бекапы.

Raven2000, 2009-05-25 в 21:51:34

to afiskon
баян =) глянь дату статьи (но предложение дельное и нужно подкорректировать)

Gurd, 2009-06-19 в 19:28:57

OlorinrnСамый правильный комментарий ;)rn+1

receptor, 2009-07-25 в 14:14:56

freebsd-update upgrade -r 7.2
freebsd-update install
shutdown -r now


Всё!)

acd, 2009-08-19 в 19:15:49

 А если update ядра или world надо сделать на удалённой машине, как тогда "Перейдем в однопользовательский режим." ?

Raven2000, 2009-08-19 в 19:23:23

to acd
вот для как раз тебя Локальное и удаленное обновление FreeBSD =)

Senya88, 2010-01-22 в 14:48:55

Подскажите пожалуйста, что можно сделать в том случае если по глупости нажималось в mergemaster -i "i" везде вместо "d" ?  Теперь сервер загружается с ошибками, /etc/rc ругается source_rc_confs not found
и дальше ругань на rc.conf.
Поможет ли повторный запуск mergemaster -i ?

receptor, 2010-05-01 в 0:49:16

Senya88 думаю не поможет, проще перезаписать все конфиги из исходников.
При условии конечно что дефолтные конфиги в системе.

nevzorofff, 2010-05-25 в 12:59:21

Второй раз mergemaster лучше запускать с ключиками a и U - заменит автоматически неизменившиеся и не изменявшиеся юзеров файлы автоматически.

gonzo111, 2010-05-27 в 13:44:09

чтоб убрать подтверждение при
delete-old надо

#> yes | make delete-old
ну или
#> make BATCH_DELETE_OLD_FILES=YES delete-old delete-old-libs

Dusya, 2010-06-20 в 23:51:42

В отличие от FreeBSD-CURRENT ветка FreeBSD-STABLE является разработкой, из которой делаются основные релизы. Соответственно для использования на ответственных серверах рекомендуется FreeBSD-STABLE.


Ага, канешна, а не лучше ли релизы ставить на сервера?

Нахрен нужна промежуточная разработка на серваке который не имеет права падать.

adre, 2010-07-08 в 4:15:58

дУСЯ в чем отличие релиза от стайбл?

Dusya, 2010-07-25 в 3:26:40

В том шо из стейблов делают релизы.
Вот и вся разница

gonzo111, 2010-10-17 в 11:51:19

сделал  /etc.mergemaster.rc
    # Install the new file if it differs only by VCS Id ($FreeBSD, -F)
FREEBSD_ID=yes
    #
    # Verbose mode includes more details and additional checks (-v)
    #VERBOSE=
    #
    # Automatically install files that do not exist on the system already (-i)
AUTO_INSTALL=yes
    #
    # Automatically upgrade files that have not been user modified (-U)
#AUTO_UPGRADE=yes

mir11.ru, 2011-08-24 в 1:21:05

adminMK спасибо, откровенно выручил!))

tehnikpc, 2012-04-13 в 10:11:40

\"Переходим в /usr/scr и начинаем процесс обновления. Запаситесь терпением, так как это занимает 1-2 часа на P4\"
На Pentium IV это займёт минимум 3-4 часа.

VVD, 2012-04-13 в 17:51:34

> На Pentium IV это займёт минимум 3-4 часа.
9-а собирается часа 2.
У меня P4-3GHz 2Gb.

tehnikpc, 2012-04-13 в 22:12:46

VVD, странно. У меня на Intel Core i7-990X и SSD OCZ Vertex 3 тоже 2 часа make buildworld. Только я новые исходники не качал.



 

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

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0368 секунд
Из них PHP: 27%; SQL: 73%; Число SQL-запросов: 77 шт.
Исходный размер: 52404; Сжатая: 12486