четверг, 4 ноября 2010 г.

Обновление FreeBSD

Обновить ОС FreeBSD в общем случае достаточно просто и легко, но для начала нужно определиться какого рода обновления нас интересуют.
Любого рода обновления можно разделить на несколько категорий:
  • Обновление самой ОС FreeBSD
    • Обновление ядра FreeBSD
    • Обновление мира FreeBSD
  • Обновление установленного программного обеспечения ( порты, ports )
Теперь разберем по порядку каждый вариант обновлений.



Обновления ОС FreeBSD
Как и в любой другой операционной системе в ОС FreeBSD тоже находят ошибки и уязвимости, и их надо исправлять.
Для этого разработчики FreeBSD предлагают несколько вариантов:
  • Бинарное обновление.
  • Обновление «по старинке», сборкой из исходников.
Бинарное обновление произвести довольно просто, но все пройдет успешно если у вас GENERIC ядро и вы не делали изменений в других частях ОС. Конечно в некоторых случаях и с  кастомным ядром бинарное обновление тоже может пройти успешно, но гарантий совершенно нет.
Итак, что нужно набирать в консоли при бинарном обновлении в текущей версии:
# freebsd-update fetch
скачаем бинарные обновления с сервера обновлений
# freebsd-update install
установим обновления
# reboot
Для перехода на следующую версию:
freebsd-update -r 7.3-RELEASE upgrade
freebsd-update install
reboot
freebsd-update install
reboot
Вот так все просто!
В случае если у вас в системе присутствует директория с исходными текстами то обновятся и они, что в дальнейшем может быть полезно при пересборке.
Нужен доступ к серверу, так как придется загружаться в single user mode + доступ в интернет + время + прямые руки.
Обновления с исходних кодов.
1. Заходим под root`ом(пока что можно удаленно)
2. Копируем образец supfile в удобное для нас место
cp /usr/share/examples/cvsup/standard-supfile /root/supfile.8
3. Редактируем /root/supfile.8. Изменяем
*default host=cvsup1.us.FreeBSD.org
*default release=cvs tag=RELENG_8_0
4. Скачиваем исходники FreeBSD 8
csup /root/supfile.8
Переходим в /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, но иногда это может привести к замене ваших настроек на дефолтные. Так что будте внимательны
Возможен также вариант, когда с новой версией системы появляются новые файлы, которых до этого не было. В таком случае предлагается только 2 варианта:
d - удалить предлагаемый вариант и оставить старый;
i - установить предлагаемый вариант, удалив старый.
И в таком же духе сравниваются все файлы.
Перезагрузимся
server# reboot
server# cd /usr/src/
server# make delete-old-libs
Обновление установленного программного обеспечения.
Есть несколько вариантов как установить софт в ОС FreeBSD:
  • Сборка из «портов»
  • Сборка из исходных кодов
  • Установка скомпилированых пакетов
Порты FreeBSD это грубо говоря набор указаний для системы, откуда скачивать исходники, какие патчи применять, какие права выставлять, и т.п.
Для того чтобы использовать всю мощь »портов» и их удобство, порты необходимо скачать и регулярно обновлять, делается это так:
# portsnap fetch
# portsnap extract
Эти две команды нужно использовать если у вас еще не установлены «порты».
# portsnap fetch update
Эта команда используется для обновления дерева портов
Для сборки какого либо порта например php нужно использовать такую команду:
# make -C /usr/ports/lang/php5/ install clean
Для обновления рекомендую использовать например portupgrade который так же можно установить из портов командой:
# make -C /usr/ports/ports-mgmt/portupgrade/ install clean
После обновления дерева портов нужно посмотреть что собственно требует обновления
# pkg_version -v|grep need
apache-2.2.15_2 < needs updating (port has 2.2.15_7)
freetype2-2.3.11 < needs updating (port has 2.3.12)
gio-fam-backend-2.22.4 < needs updating (port has 2.24.1)

Ну вот у нас есть явные кандидаты на обновление, при помощи portupgrade делаем примерно так:
# portupgrade -a
Такой командой мы обновим все.
# portupgrade apache-2.2.15_2
Такой командой мы обновим только пакет Apache
Установка и обновление уже собранных пакетов выглядит примерно так:
# pkg_add -r mc
Установка пакета Midnight Commander
# pkg_deinstall mc
Удаление пакета  Midnight Commander
# pkg_add -r mc
Установка обновленного пакета делается точно так же как и первоначальная его установка.

Комментариев нет:

Отправить комментарий