Есть FreeBSD 8.4, generic, надо бы обновиться.
Подскажите, как это вообще правильнее делать в случае со столь старым релизом, какие могут встретиться подводные. С FreeBSD редко дело имею, но помню что уже после 8.х ветки там вроде бы система управления портами менялась, ещё наверное что-то важное было, что хорошо бы учесть при обновлении.
Понятно, что лучше бы поставить наново, возможно, так и сделаю, но для начала думаю всё-таки попробовать обновление, вдруг и сработает.
> Есть FreeBSD 8.4, generic, надо бы обновиться.
> Подскажите, как это вообще правильнее делать в случае со столь старым релизом,
> какие могут встретиться подводные. С FreeBSD редко дело имею, но помню
> что уже после 8.х ветки там вроде бы система управления портами
> менялась, ещё наверное что-то важное было, что хорошо бы учесть при
> обновлении.
> Понятно, что лучше бы поставить наново, возможно, так и сделаю, но для
> начала думаю всё-таки попробовать обновление, вдруг и сработает.Вы до какой версии хотите обновиться? Если вы уже юзали pkg, то с тех пор ничего не изменилось, и вообще все зависит от вашего сервера, точнее, что он делает и что на нем стоит, может уже ваш софт
уже в текущих портах отсуствует...
> Вы до какой версии хотите обновиться?До последней самой модной-молодёжной.
> Если вы уже юзали pkg, то с тех пор ничего не изменилось
Юзать-то конечно юзали, но при переходе со старых систем времён всяких портснапов, портапгрейдов и портмастеров — там же наверное нужно будет какие-то предварительные действия предпринимать, чтобы удачно на новую систему мигрировать, само же оно навряд ли телепатию проявит.
> и вообще все зависит от вашего сервера, точнее, что он делает
> и что на нем стоит, может уже ваш софт
> уже в текущих портах отсуствует...Ды эт понятно. Меня больше возможные грабли при таком масштабном обновлении самой системы интересуют (ну, кроме очевидного апдейта до последнего патчлевела) и нюансы переход на pkg в целом.
>[оверквотинг удален]
> Юзать-то конечно юзали, но при переходе со старых систем времён всяких портснапов,
> портапгрейдов и портмастеров — там же наверное нужно будет какие-то предварительные
> действия предпринимать, чтобы удачно на новую систему мигрировать, само же оно
> навряд ли телепатию проявит.
>> и вообще все зависит от вашего сервера, точнее, что он делает
>> и что на нем стоит, может уже ваш софт
>> уже в текущих портах отсуствует...
> Ды эт понятно. Меня больше возможные грабли при таком масштабном обновлении самой
> системы интересуют (ну, кроме очевидного апдейта до последнего патчлевела) и нюансы
> переход на pkg в целом.установите на виртуалке 8.4 с пакетами и тренируйтесь с апгрейдом...
Увы, поезд ушел, убьетесь и придете к нижнему.Проще и быстрей накатить сервер сбоку с 12.3 или 13.0
- установить софт из пакетов, недостающее из портов через portmaster
- настроить
- переключиться со старого на новый
> Проще и быстрей накатить сервер сбоку с 12.3 или 13.0Ну, это само собой. Вероятно, так и сделаю в конце концов.
Просто я подумал, что вдруг здесь кто-нибудь недавно делал что-то похожее с обновлением древнего релиза и есть пример успешного опыта с описанием граблей.
> установить софт из пакетов, недостающее из портов через portmasterА почему именно из пакетов и только недостающее — из портов?
Почему бы не всё сразу из портов?
И почему портмастер? Чтобы было две базы софта — pkg для пакетов и portmaster для портов? Неужели pkg в соло не потянет?
>> Проще и быстрей накатить сервер сбоку с 12.3 или 13.0
> Ну, это само собой. Вероятно, так и сделаю в конце концов.
> Просто я подумал, что вдруг здесь кто-нибудь недавно делал что-то похожее с
> обновлением древнего релиза и есть пример успешного опыта с описанием граблей.врядли кто-то делал подобное недавно.
>> установить софт из пакетов, недостающее из портов через portmaster
> А почему именно из пакетов и только недостающее — из портов?
> Почему бы не всё сразу из портов?пакеты - это "бинарники", которые собраны из портов с DEFAULT options.
Зачем ВСЕ собирать из портов и тратить на это время?
Если опции сборки многих портов устраивают, проще все это установить
из пакетов.> И почему портмастер? Чтобы было две базы софта — pkg для пакетов
> и portmaster для портов? Неужели pkg в соло не потянет?pkg - пакетный менеджер
portmaster - менеджер портов.База установленных пакетов ОДНА, итогом сборки порта является установка
собранных бинарников и РЕГИСТРАЦИЯ их в локальной базе пакетов.Соль в том, что если мы выполняем сборку из портов с изменением
опций сборки, последующее обновление через пакетный менеджер pkg
делать нельзя.
Если пакетная система устраивает полностью, то использовать
только пакетный менелджер pkg.Если какие-то пакеты не устраивают, то наименее затратный путь:
1. все что возможно установить из пакетов
2. остальное установить из портов
3. последующие обновления только из портов (например portmaster)
Ох, спасибо Вам огромное. Я почему-то немного по-другому себе представлял всё это (выше уже говорил, что последние годы сравнительно нечасто с FreeBSD приходится работать, к сожалению), и ещё не успел освежить знания.
Ещё пара вопросов, если не затруднит.> База установленных пакетов ОДНА, итогом сборки порта является установка
> собранных бинарников и РЕГИСТРАЦИЯ их в локальной базе пакетов.Но ведь база данных портов (само дерево, настройки, данные об уже собранных ранее портах) — она ведь тоже должна существовать, должен же portmaster знать, с чем работает. Получается, две базы данных установленного ПО — для pkg и для portmaster.
> Соль в том, что если мы выполняем сборку из портов с изменением
> опций сборки, последующее обновление через пакетный менеджер pkg
> делать нельзя.Нельзя почему? Просто потому что опции сборки обнулятся дефолтными или потому что у pkg могут быть проблемы при работе с пакетом, установленным из порта?
> Если какие-то пакеты не устраивают, то наименее затратный путь:
> 1. все что возможно установить из пакетов
> 2. остальное установить из портов
> 3. последующие обновления только из портов (например portmaster)То есть, если я правильно понял, процесс обновления будет разбит на две части — отдельно обновления "родных" пакетов (pkg) и отдельно обновления того, установлено в пакеты через порты (portmaster).
>> База установленных пакетов ОДНА, итогом сборки порта является установка
>> собранных бинарников и РЕГИСТРАЦИЯ их в локальной базе пакетов.
> Но ведь база данных портов (само дерево, настройки, данные об уже собранных
> ранее портах) — она ведь тоже должна существовать, должен же portmaster
> знать, с чем работает. Получается, две базы данных установленного ПО —
> для pkg и для portmaster.Это Ваши "выводы" от незнания.
Порты - это директория с инструментарием для сборки из исходников,
дерево:
/usr/ports/INDEX-N (где N=цифра релиза)
/usr/ports/README
/usr/ports/UPDATING - все важные изменения и руководства к апгрейду
/usr/ports/Makefile
/usr/ports/Mk/ - важные defines для сборки make
/usr/ports/Tools/ - необходимый инструментарий
/usr/ports/category/portname/Makefile
............................/distinfo
............................/pkg-descr
............................/pkg-plist
............................/files/patches...как видно из верхнего, порт - это проект сборки третичного ПО,
где category - это множество по направлению:
/usr/ports/archivers
/usr/ports/astro
/usr/ports/audio
/usr/ports/base
/usr/ports/benchmarks
/usr/ports/biology
/usr/ports/cad
...
/usr/ports/databases
/usr/ports/deskutils
/usr/ports/devel
/usr/ports/distfiles
/usr/ports/dns
/usr/ports/editors
/usr/ports/emulatorsвнутри каждой категории, директория с отдельными портами: portname
# ls -la /usr/ports/archivers/bzip2/
total 32
drwxr-xr-x 3 root wheel 512 7 июня 2021 .
drwxr-xr-x 269 root wheel 5632 27 дек. 18:16 ..
-rw-r--r-- 1 root wheel 153 13 марта 2021 distinfo
drwxr-xr-x 2 root wheel 512 7 июня 2021 files
-rw-r--r-- 1 root wheel 2161 6 апр. 2021 Makefile
-rw-r--r-- 1 root wheel 155 1 июля 2019 pkg-descr
-rw-r--r-- 1 root wheel 571 20 окт. 2014 pkg-plist
#Собирать порты можно вручную или используя порт-менеджеры,
наиболее распространенные и рекомендуемые:
- portmaster (shell скрипт использующий пакетный менеджер "pkg")
- portupgradeрезультатом сборки в конечном итоге является "пакет", который
устанавливается в систему и регистрируется в локальной базе
пакетов которую использует и которой управляет пакетный
менеджер "pkg">> Соль в том, что если мы выполняем сборку из портов с изменением
>> опций сборки, последующее обновление через пакетный менеджер pkg
>> делать нельзя.
> Нельзя почему? Просто потому что опции сборки обнулятся дефолтными или потому что
> у pkg могут быть проблемы при работе с пакетом, установленным из
> порта?pkg использует by default официальный репозиторий FreeBSD, опции
с которыми собраны пакеты - есть зависимости.Если мы собрали и установили какой-то порт с оригинальными опциями,
нарушится зависимость между пакетами.Если после это Вы попробуете обновится через пакетный менеджер pkg,
получите бяку.>> Если какие-то пакеты не устраивают, то наименее затратный путь:
>> 1. все что возможно установить из пакетов
>> 2. остальное установить из портов
>> 3. последующие обновления только из портов (например portmaster)
> То есть, если я правильно понял, процесс обновления будет разбит на две
> части — отдельно обновления "родных" пакетов (pkg) и отдельно обновления того,
> установлено в пакеты через порты (portmaster).Нет никаких ОТДЕЛЬНО:
- есть пакетный менеджер и база установленных пакетовСоответственно:
Вариант 1: используете только пакеты из FreeBSD REPO - только пакетный менеджер,
нет проблем с апгрейдом, все через "pkg"Вариант 2: регулярно модифицируете дерево портов под себя и создаете СВОЙ REPO -
репозиторий и сами собираете ВСЕ пакеты и используете свой репозиторий, нет
проблем, используете только "pkg" с указанием своего репо.Вариант 3:
- этап 1 - устанавливаете по максимуму все из пакетов
- этап 2 - устанавливаете из портов то что Вам нужно с Вашими опциями сборки
руками или с помощью порт-менеджера
- этап 3 - дальнейший апгрейд только через порт-менеджер, ибо pkg использует
FreeBSD repo в котором иные зависимости, ОТЛИЧНЫЕ от того что Вы установили
дополнительно из портов со своими зависимостямиПотренируйтесь в виртуалке, придут знания и наступит понимание, нет знаний - нет
понимания процессов.
Благодарю Вас!А насчёт обновления самой системы — полагаете, что не выйдет обновиться даже постепенно небольшими шажками до близких релизов вроде 8.4 => 10.0 => 10.4 => 12.1?
> Благодарю Вас!
> А насчёт обновления самой системы — полагаете, что не выйдет обновиться даже
> постепенно небольшими шажками до близких релизов вроде 8.4 => 10.0 =>
> 10.4 => 12.1?Выйдет, можно по Вашей схеме, можно:
8.4 -> 10.4 -> 12.3 или 13.0
Можно сразу 8.4 -> 13.0 через сборку мира, ядра - накладно по ресурсам, зависит
от hardware. (можно сборку сделать на сторонней 8.4 и затем отдать by NFS /usr/obj
на целевую для установки)ps. Важно помнить что в ранних релизах, freebsd-update выполнялся при условии
generic kernel! Вот когда появилась возможность выполнять freebsd-update с custom kernel,
это я уж и не вспомню... Просто свое собранное ядро заменялось на generic при апгрейде ОС.Дело в другом, дано FreeBSD 8.4, на ней:
- ядро generic?
- пакеты установлены через старый pkg_install и из портовтонкость: новый пакетный менеджер pkg стал основным by default в 10.0
Выполняем бинарный апгрейд ОС:
- основное правило, текущий RELEASE должен быть обновлен до
последнего patch-level (не уверен что это обязон)# freebsd-update fetch
# freebsd-update install
# rebootимеем 8.4-pX (последний патчлевел для релиза 8.4)
- производим апгрейд по 10.0 или 10.4 ...
# freebsd-update upgrade -r 10.4-RELEASE
# freebsd-update install
# reboot
- загружаемся с ядром 10.4 нужно еще раз выполнить
# freebsd-update install
... и в конце выдаст сообщение
переустановите пакеты и затем выполните "freebsd-update install"получаем обновленную систему с ядром 10.4 и миром 10.4
прим: в FreeBSD ядро и базовая система (мир) должны быть синхронизированы
- мы два раза выполнили "freebsd-update install" и получили новую систему,
зачем выполнять еще раз? Ответ: чтобы удалить старые библиотеки и прочий хлам.
Вот почему выдается предупреждение о reinstall packages or ports!
Все пакеты и порты собраны со старыми системными библиотеками, если их
удалить - получим неработающий третичный софт.Что делать?
вариант 1: не выполнять 3ий "freebsd-update install"
вариант 2: установить compat8x - и тут засада, из портов не сможем, ибо их работа
не поддерживается, из пакетов не сможем - отсутствие репы 10.x EOL. Вытаскивать с
ftp://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releas... в надежде что на нем есть compat8x
У меня подразумевается что платформа amd64(64bit)
В принципе, compat8x можно взять с любого релиза и развернуть в /usr/local/lib/compat
и /usr/local/lib32/compat и затем выполнить ldconfig.
После этого можно выполнить 3ий "freebsd-update install"Итак, имеем 10.4-RELEASE со старым третичным ПО от 8.4:
- установить пакеты не можем их нет
- установить из портов не можем - не поддерижваются
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- взять с любого релиза и развернуть
руками, описано вышеИ последняя засада: у Вас старый пакетный менеджер и дерево установленных портов,
и это нужно трансформировать в формат нового pkg через pkgng!
Опять засада, это бесполезная работа в том смысле что репозитория для 10/11 нет,
обновить пакеты не сможем.Имеем: 10.4 на который мы стянули compat8x и установили руками.
- делаем апгрейд до 10.4 last patchlevel
# freebsd-update fetch
# freebsd-update install
# reboot
- имеем 10.4-pX
- выполняем апгрейд на 12.3
# freebsd-update upgrade -r 12.3-RELEASE
# freebsd-update install
# reboot
# freebsd-update install
# freebsd-update installИтак, имеем 12.3-RELEASE в нем:
- пакеты и порты от 8x работу которых обеспечивают библиотеки compat8xЧто дальше?!
Дальше нам нужно установить НОВЫЕ пакеты: КАК?
Только грохнуть все старье - зачистить хлам от старого pkg_install/pkg_add
и от старых портов и установить их или аналоги более свежих версий заново.Вопрос: сколько времени нужно потратить на верхнее и каков итог?
Суть: своевременный апгрейд!Верхнее понятно расписано? Вопросы?
> Верхнее понятно расписано?Да, всё стало намного понятнее, ещё раз Вас благодарю за труд по разъяснению.
> репозитория для 10/11 нет
С учётом данного факта попытка апгрейда становится целиком и полностью нецелесообразной. Я совершенно выпустил данный факт из виду, даже в голову не пришло, что всё настолько запущено. Действительно, как Вы выше уже сказли, поезд ушёл, догонять его нет никакого смысла, лучше сесть на следующий.
Спасибо!
> Есть FreeBSD 8.4, generic, надо бы обновиться.Прямое обновление бинарных образов со столько старой версии не поддерживается. Я бы не рискнул обновляться до последней версии. Попробуйте обновиться до 10 в начале
> Попробуйте обновиться до 10 в началеДа, это само собой.
Прыгать сразу через 4 релиза это слишком, конечно.
>> Попробуйте обновиться до 10 в начале
> Да, это само собой.
> Прыгать сразу через 4 релиза это слишком, конечно.Вы сделайте dump сервера, да разверните его в виртуалку, ну и изголяйтесь...
Лучше конечно прыгать с ветки на ветку...
По поводу софта, в принципе с уже стоящего софта можно сделать пакеты и попытаться их поставить
под новую операциоку с предсустановленным портом compat8x.
Я в свое время обновлял с 7.4 на 10.2 через исходники, без гемора оказался путь, 7.4-8.2-8.4-9.2-9.4-10.2, после каждого перехода обновлялся софт со среза релиза на который переходил...
> через исходники, без гемора оказался путь, 7.4-8.2-8.4-9.2-9.4-10.2, после каждого перехода
> обновлялся софт со среза релиза на который переходил...Софт обновить на промежуточной остановки не получится, пакеты 10 (включительно) и ниже дропнуты уже.
Проще записать "верхнеуровневые порты" и поставить их, не обновляя. (сохранив себе куда-нибудь /usr/local/etc)