URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 97814
[ Назад ]

Исходное сообщение
"Обновление старого релиза FreeBSD"

Отправлено Ibn Ash , 19-Янв-22 10:54 
Есть FreeBSD 8.4, generic, надо бы обновиться.
Подскажите, как это вообще правильнее делать в случае со столь старым релизом, какие могут встретиться подводные. С FreeBSD редко дело имею, но помню что уже после 8.х ветки там вроде бы система управления портами менялась, ещё наверное что-то важное было, что хорошо бы учесть при обновлении.
Понятно, что лучше бы поставить наново, возможно, так и сделаю, но для начала думаю всё-таки попробовать обновление, вдруг и сработает.

Содержание

Сообщения в этом обсуждении
"Обновление старого релиза FreeBSD"
Отправлено Сергей , 19-Янв-22 15:09 
> Есть FreeBSD 8.4, generic, надо бы обновиться.
> Подскажите, как это вообще правильнее делать в случае со столь старым релизом,
> какие могут встретиться подводные. С FreeBSD редко дело имею, но помню
> что уже после 8.х ветки там вроде бы система управления портами
> менялась, ещё наверное что-то важное было, что хорошо бы учесть при
> обновлении.
> Понятно, что лучше бы поставить наново, возможно, так и сделаю, но для
> начала думаю всё-таки попробовать обновление, вдруг и сработает.

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


"Обновление старого релиза FreeBSD"
Отправлено Ibn Ash , 19-Янв-22 15:30 
> Вы до какой версии хотите обновиться?

До последней самой модной-молодёжной.

> Если вы уже юзали pkg, то с тех пор ничего не изменилось

Юзать-то конечно юзали, но при переходе со старых систем времён всяких портснапов, портапгрейдов и портмастеров — там же наверное нужно будет какие-то предварительные действия предпринимать, чтобы удачно на новую систему мигрировать, само же оно навряд ли телепатию проявит.

> и вообще все зависит от вашего сервера, точнее, что он делает
> и что на нем стоит, может уже ваш софт
> уже в текущих портах отсуствует...

Ды эт понятно. Меня больше возможные грабли при таком масштабном обновлении самой системы интересуют (ну, кроме очевидного апдейта до последнего патчлевела) и нюансы переход на pkg в целом.


"Обновление старого релиза FreeBSD"
Отправлено lavr , 19-Янв-22 16:28 
>[оверквотинг удален]
> Юзать-то конечно юзали, но при переходе со старых систем времён всяких портснапов,
> портапгрейдов и портмастеров — там же наверное нужно будет какие-то предварительные
> действия предпринимать, чтобы удачно на новую систему мигрировать, само же оно
> навряд ли телепатию проявит.
>> и вообще все зависит от вашего сервера, точнее, что он делает
>> и что на нем стоит, может уже ваш софт
>> уже в текущих портах отсуствует...
> Ды эт понятно. Меня больше возможные грабли при таком масштабном обновлении самой
> системы интересуют (ну, кроме очевидного апдейта до последнего патчлевела) и нюансы
> переход на pkg в целом.

установите на виртуалке 8.4 с пакетами и тренируйтесь с апгрейдом...
Увы, поезд ушел, убьетесь и придете к нижнему.

Проще и быстрей накатить сервер сбоку с 12.3 или 13.0
- установить софт из пакетов, недостающее из портов через portmaster
- настроить
- переключиться со старого на новый


"Обновление старого релиза FreeBSD"
Отправлено Ibn Ash , 20-Янв-22 09:14 
> Проще и быстрей накатить сервер сбоку с 12.3 или 13.0

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


> установить софт из пакетов, недостающее из портов через portmaster

А почему именно из пакетов и только недостающее — из портов?
Почему бы не всё сразу из портов?
И почему портмастер? Чтобы было две базы софта — pkg для пакетов и portmaster для портов? Неужели pkg в соло не потянет?


"Обновление старого релиза FreeBSD"
Отправлено lavr , 20-Янв-22 10:48 
>> Проще и быстрей накатить сервер сбоку с 12.3 или 13.0
> Ну, это само собой. Вероятно, так и сделаю в конце концов.
> Просто я подумал, что вдруг здесь кто-нибудь недавно делал что-то похожее с
> обновлением древнего релиза и есть пример успешного опыта с описанием граблей.

врядли кто-то делал подобное недавно.

>> установить софт из пакетов, недостающее из портов через portmaster
> А почему именно из пакетов и только недостающее — из портов?
> Почему бы не всё сразу из портов?

пакеты - это "бинарники", которые собраны из портов с DEFAULT options.
Зачем ВСЕ собирать из портов и тратить на это время?
Если опции сборки многих портов устраивают, проще все это установить
из пакетов.

> И почему портмастер? Чтобы было две базы софта — pkg для пакетов
> и portmaster для портов? Неужели pkg в соло не потянет?

pkg - пакетный менеджер
portmaster - менеджер портов.

База установленных пакетов ОДНА, итогом сборки порта является установка
собранных бинарников и РЕГИСТРАЦИЯ их в локальной базе пакетов.

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

Если какие-то пакеты не устраивают, то наименее затратный путь:
1. все что возможно установить из пакетов
2. остальное установить из портов
3. последующие обновления только из портов (например portmaster)


"Обновление старого релиза FreeBSD"
Отправлено Ibn Ash , 20-Янв-22 11:17 
Ох, спасибо Вам огромное. Я почему-то немного по-другому себе представлял всё это (выше уже говорил, что последние годы сравнительно нечасто с FreeBSD приходится работать, к сожалению), и ещё не успел освежить знания.
Ещё пара вопросов, если не затруднит.

> База установленных пакетов ОДНА, итогом сборки порта является установка
> собранных бинарников и РЕГИСТРАЦИЯ их в локальной базе пакетов.

Но ведь база данных портов (само дерево, настройки, данные об уже собранных ранее портах) — она ведь тоже должна существовать, должен же portmaster знать, с чем работает. Получается, две базы данных установленного ПО — для pkg и для portmaster.


> Соль в том, что если мы выполняем сборку из портов с изменением
> опций сборки, последующее обновление через пакетный менеджер pkg
> делать нельзя.

Нельзя почему? Просто потому что опции сборки обнулятся дефолтными или потому что у pkg могут быть проблемы при работе с пакетом, установленным из порта?


> Если какие-то пакеты не устраивают, то наименее затратный путь:
> 1. все что возможно установить из пакетов
> 2. остальное установить из портов
> 3. последующие обновления только из портов (например portmaster)

То есть, если я правильно понял, процесс обновления будет разбит на две части — отдельно обновления "родных" пакетов (pkg) и отдельно обновления того, установлено в пакеты через порты (portmaster).


"Обновление старого релиза FreeBSD"
Отправлено lavr , 20-Янв-22 12:22 
>> База установленных пакетов ОДНА, итогом сборки порта является установка
>> собранных бинарников и РЕГИСТРАЦИЯ их в локальной базе пакетов.
> Но ведь база данных портов (само дерево, настройки, данные об уже собранных
> ранее портах) — она ведь тоже должна существовать, должен же 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 в котором иные зависимости, ОТЛИЧНЫЕ от того что Вы установили
дополнительно из портов со своими зависимостями

Потренируйтесь в виртуалке, придут знания и наступит понимание, нет знаний - нет
понимания процессов.


"Обновление старого релиза FreeBSD"
Отправлено Ibn Ash , 20-Янв-22 14:08 
Благодарю Вас!

А насчёт обновления самой системы — полагаете, что не выйдет обновиться даже постепенно небольшими шажками до близких релизов вроде 8.4 => 10.0 => 10.4 => 12.1?


"Обновление старого релиза FreeBSD"
Отправлено lavr , 20-Янв-22 15:51 
> Благодарю Вас!
> А насчёт обновления самой системы — полагаете, что не выйдет обновиться даже
> постепенно небольшими шажками до близких релизов вроде 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
и от старых портов и установить их или аналоги более свежих версий заново.

Вопрос: сколько времени нужно потратить на верхнее и каков итог?
Суть: своевременный апгрейд!

Верхнее понятно расписано? Вопросы?


"Обновление старого релиза FreeBSD"
Отправлено Ibn Ash , 21-Янв-22 09:40 
> Верхнее понятно расписано?

Да, всё стало намного понятнее, ещё раз Вас благодарю за труд по разъяснению.

> репозитория для 10/11 нет

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

Спасибо!


"Обновление старого релиза FreeBSD"
Отправлено abi , 19-Янв-22 17:59 
> Есть FreeBSD 8.4, generic, надо бы обновиться.

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


"Обновление старого релиза FreeBSD"
Отправлено Ibn Ash , 20-Янв-22 09:16 
> Попробуйте обновиться до 10 в начале

Да, это само собой.
Прыгать сразу через 4 релиза это слишком, конечно.


"Обновление старого релиза FreeBSD"
Отправлено Сергей , 20-Янв-22 15:18 
>> Попробуйте обновиться до 10 в начале
> Да, это само собой.
> Прыгать сразу через 4 релиза это слишком, конечно.

  Вы сделайте dump сервера, да разверните его в виртуалку, ну и изголяйтесь...
  Лучше конечно прыгать с ветки на ветку...
  По поводу софта, в принципе с  уже стоящего софта можно сделать пакеты и попытаться их поставить
под новую операциоку с предсустановленным портом compat8x.
   Я в свое время обновлял с 7.4 на 10.2 через исходники, без гемора оказался путь, 7.4-8.2-8.4-9.2-9.4-10.2, после каждого перехода обновлялся софт со среза релиза на который переходил...  


"Обновление старого релиза FreeBSD"
Отправлено abi , 20-Янв-22 22:14 
> через исходники, без гемора оказался путь, 7.4-8.2-8.4-9.2-9.4-10.2, после каждого перехода
> обновлялся софт со среза релиза на который переходил...

Софт обновить на промежуточной остановки не получится, пакеты 10 (включительно) и ниже дропнуты уже.

Проще записать "верхнеуровневые порты" и поставить их, не обновляя. (сохранив себе куда-нибудь /usr/local/etc)