Categories: FreeBSD

freebsd-update/

31-го июля сего года закончилась поддержка FreeBSD 8.2 . На моем ноутбуке Asus X51L как раз установлена FreeBSD, притом именно этой версии. Решил обновиться до FreeBSD 9.0 и запостить в бложик заметку о том, как выглядит процесс обновления этой системы.

Есть по крайней мере два способа обновления FreeBSD. Если вы используете ядро GENERIC (собранное с параметрами по умолчанию), то можете скачать и установить бинарное обновление с помощью утилиты freebsd-update. Чуть более сложный, но и более универсальный, способ заключается в получении исходников интересующей вас версии FreeBSD из SVN репозитория с последующей их компиляцией. Я использую ядро GENERIC, так что далее речь пойдет о первом способе.

Дополнение: Описание второго способа вы найдете в заметке Собираем ядро и мир FreeBSD из исходников .

Важно! Каждый раз, когда вы обновляете систему, не сделав бэкап, в мире умирает десять котят!

Поехали:

freebsd-update -r 9.0 -RELEASE upgrade

Если во время обновления будет получена такая ошибка:

The update metadata is correctly signed, but failed an integrity check. Cowardly refusing to proceed any further.

… следует применить к /usr/sbin/freebsd-update вот этот патч . Там требуется всего лишь немного поправить одну строчку.

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

После завершения работы скрипта говорим:

freebsd-update install

… и перезагружаем систему:

shutdown -r now

После перезагрузки внимательно проверяем, что ничего не отвалилось. Если система вдруг не сможет загрузиться, то при следующей загрузке будет использовано прежнее ядро.

Лично я столкнулся со следующей проблемой. Оказалось, что перестал работать фаервол (PF). Команда `dmesg -a` показала мне следующую ошибку:

pfctl: DIOCADDRULE: Operation not supported by device

Как выяснилось , это ОК (причина заключается в расхождении версий ядра и мира), потому я продолжил обновление системы.

Следующим шагом говорим (да, опять):

freebsd-update install

И действительно, после выполнения команды:

pfctl -F all -f / etc / pf.conf

… фаервол заработал.

Во время последнего запуска freebsd-update вывел мне такое сообщение:

Completing this upgrade requires removing old shared object files. Please rebuild all installed 3rd party software (e.g., programs installed from the ports tree) and then run «/usr/sbin/freebsd-update install» again to finish installing updates.

Вот вам еще одна причина пользоваться бинарными пакетами, а не портами . В случае использования бинарных пакетов достаточно подправить значение переменной окружения $PACKAGESITE и сказать:

pkg_upgrade -a

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

ln -s / lib / libutil.so.9 / lib / libutil.so.8

Итак, завершаем обновление системы:

freebsd-update install

Готово!

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

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

А вы уже перешли на девятую ветку?

admin

Share
Published by
admin
Tags: FreeBSD

Recent Posts

vim-commands/

Самое главное — побороть боязнь белого листа. Я всегда говорю это себе, когда нужно начать…

1 месяц ago

firefox-thunderbird-en-ru-dict/

По не вполне ясным причинам, Firefox умеет проверять орфографию либо только в русских, либо только…

1 месяц ago

perl-hacks/

Около месяца собирал разные «хаки» на языке программирования Perl. Эта подборка наглядно демонстрирует, как в…

1 месяц ago

perl-cy-check/

C недавних пор я стал увлекаться SEO. Порой передо мной встает задача быстро проверить индекс…

1 месяц ago

which-cms-perl/

Недавно написал несколько скриптов, позволяющих автоматически определять, какая CMS (Content Management System, система управления контентом)…

1 месяц ago

smtp-descr/

Я так подозреваю, что среди вас найдется те, кто скажет, что этот пост боян и…

1 месяц ago