Оновлюємо freebsd, виконую установку, настройку, супровід серверів

Тут будуть розглянуті 3 способи: через svn. через cvsup (вже не працює) і через freebsd-update (бінарне оновлення).

через freebsd-update (бінарне оновлення, тільки для ядра GENERIC)

Це так би мовити повне оновлення всіх бінарників і ядра на GENERIC.

Послідовно виконаємо наступні команди (за умови, що у вас ядро ​​GENERIC. Інакше буде лайка):

# Freebsd-update -r 7.2-RELEASE upgrade
# Freebsd-update install
#reboot
# Freebsd-update install
#reboot

Якщо при виконанні freebsd-update ... upgrade отримуємо помилку:

no mirrors remaining giving up

то пробуємо вказати IP одного з серверів (update.freebsd.org - update7.freebsd.org):

# Freebsd-update -s 63.140.118.125 -r 7.2-RELEASE upgrade

і далі як зазвичай.

Використовуйте одну з 2-х команд:

через cvsup / csup (Офіційно вже закритий, використовуйте тільки svn)

Тут буде описаний метод оновлення з FreeBSD 7.0 до FreeBSD 7.1-RELEASE-p2. тобто до останнього релізу на момент поновлення. Сам процес складається з декількох етапів.

У процесі оновлення потрібно дотримуватися такого порядку: зібрати світ (НЕ НЕ інсталювати), зібрати і інсталювати нове ядро ​​(якщо раптом щось піде не так, можна завжди завантажити старе ядро) і тільки після того, як ви зрозуміли, що все нормально працює - інсталювати світ. В іншому випадку ви можете отримати новий світ і старе ядро ​​(якщо наприклад, нове не грузиться) - а це вже дуже погано, аж до незагружаемості сервера.

1) Установка cvsup і попередня настройка.

Ставимо cvsup-without-gui. (У кого оболонка bash. Команду rehash робити не потрібно!) Якщо у вас 7.0 і вище, то cvsup ставити не треба, є вже штатний csup.

#cd / usr / ports / net / cvsup-without-gui make install clean rehash

А можна і не ставити csvup. а використовувати штатний csup. У нових версіях переходять посилено на svn. тому рекомендую використовувати утиліту snvup (є в портах) - легка заміна стандартному svn.

Після цього створюємо файл такого змісту

* Default tag = RELENG_7_1
* Default host = cvsup5.ua.freebsd.org
* Default prefix = / usr
* Default base = / var / db
* Default release = cvs tag = RELENG_7_1
* Default delete use-rel-suffix
# * Default compress
src-all
# * Default tag =.
# Ports-all

і обзивати його, наприклад, /etc/cvs.conf

Якщо вказати замість 7_1 просто 7. то ми оновили до PRERELEASE.

Ця процедура дуже тривала. До речі, є ще кілька альтернативних дзеркал

Після того, як все було викачано, приступаємо до пересброрке ядра. Якщо у вас ядро ​​відрізняється від GENERIC. рекомендується пересобрать спочатку GENERIC. а потім після того, коли система оновлена ​​- тільки тоді пересобрать вже змінений. Від версії до версії деякі змінні можуть змінюватися. Якщо ви перебуваєте в безпосередньо близько, можете збирати заново змінений ядро, а не GENERIC. Перший мій досвід був саме Перезбірка НЕ ​​GENERIC. а мого. Хоча досить багато чув, як деякі адміни після віддалених оновлень поспішали до сервак, бо ядро ​​не Грузія :). Таке найімовірніше буває, коли оновлюєте, наприклад, з 5 до 6. або 6 до 7. Якщо оновлення відбуваються в межах головної версії (з 7.0 до 7.1) то можна пробувати і не GENERIC збирати заново.

Перед складанням рекомендується зробити

#rm -rf / usr / obj / usr / src /

#cd / usr / src make -j4 -s buildworld make -j4 -s buildkernel KERNCONF = GENERIC INSTKERNNAME = kernel.new

Примітка: при апдейте на версію 10.3 і вище, потрібно додатково виконати:

# Cd / usr / src make -C sys / boot install

після цього продовжуємо:

#cd / usr / src make -s -j4 installkernel KERNCONF = GENERIC INSTKERNNAME = kernel.new

Параметр -j4 означає збирати в 4 потоки, а параметр -s - показувати тільки те, що скомпіллілось, а не повністю процес компіляції. Тобто, якщо у вас як мінімум dual-core. тоді має сенс використовувати цей параметр і збірка теоретично повинна пройти в кілька разів швидше.

Так само можна використовувати параметри:

- INSTKERNNAME = kernel.new. який встановить нове ядро ​​з ім'ям kernel.new. Якщо цього не потрібно, то можете прибрати INSTKERNNAME = kernel.new

- KODIR = / boot / kernel.other. явно вказує куди встановлювати ядро

Якщо все вдало (а що б було все вдало, рекомендую використовувати nextboot), то виконуємо ребут щоб в разі проблем можна було залишитися зі старою версією системи (завантажити старе ядро ​​і потім скопіювати його в / boot / kernel):

# / Sbin / shutdown -r now

3) mergemaster і узгодження паролів і груп.

Починаючи з 9-ої версії, рекомендують використовувати замість mergemaster використовувати etcupdate.

#cd / usr / src make -s -j4 installworld

При виконанні наступної команди, будьте уважні, так як вона видаляє старі бібліотеки, з якими можуть бути слінковани, наприклад, ssh або bash. Цю команду краще робити вже після повного пересбора критичного ПО. Якщо ви оновлюєтеся в межах релізу (наприклад, з 10.1 на 10.3), то дана команда практично нешкідлива, але краще ще раз все перевірити.

#yes | make delete-old yes | make delete-old-libs

5) mergemaster і оновлення всіх конфігураційних файлів.

Зараз має бути най-най трудомістка процедура. Будуть задаватися питання про заміну або збереженні існуючих файлів конфігурації. Для більшого пізнання mergemaster рекомендую прочитати хороший огляд цієї утиліти тут

А можна спробувати виконати і в автоматичному режимі (природно, на свій страх і ризик):

6) Заключний reboot.

Вообщем, робимо цю команду, і сидимо молимося :). Якщо щось пішло не так - тоді Новомосковськ, думаємо і гугл 🙂

Обов'язково перевірте, однією чи версії ядро ​​і світ:

$ Uname -K
1003000
$ Uname -U
1001000

Після вдалої завантаження рекомендую перевірити встановлені пакети (якщо використовуєте pkg-ng):

і по можливості оновити порти і оновити весь софт, який стоїть. Як оновити порти описано тут. а як оновити софт - використовуємо таку команду:

Ця команда оновить все встановлених пакети, а так же оновить базу, в якій знаходиться інфа про пакетах (назва, версії, залежно, та інше).

PPS. А можна все це і однією командою зробити:

#csup /etc/cvs.conf rm -rf / usr / obj make cleanworld make buildworld make buildkernel KERNCONF = GENERIC make installkernel KERNCONF = GENERIC reboot

При оновленні з 7.2 на 8.0-RC2 після виконання кінцевого mergemaster - почали сипатися помилки. І що я тільки не робив, і очищав все оплатой заново сорци і збирати заново. Помилки почали сипатися вже при складанні світу. Почитав в інеті, що одному чола допоміг ребут. Я ребутнул, ядро ​​загрузилось нове, а ось «світ» - залишився колишній. Це я зрозумів, тому що більшість прог відмовилися запускатися. Я пересобран ще раз ядро, світ і перевантажився. Після цього все запрацювало.

На іншій машині вилетіла помилка при виконанні mergemaster. Я перевантажився, і заново запустив mergemaster. після чого помилок вже не було.

Навігація по публікаціям