Страница 1 из 2
Перенос Jail на другую систему.
Добавлено: 2012-06-06 12:06:48
kharkov_max
Наткнулся на проблему, прошу помощи.
Есть сервер freebsd 8.2 i386 с установленными клетками.
Нужно клетки перенести на freebsd 9.0 AMD64.
Для клеток используется порт ezjail, собственно сам переезд клетки произошел удачно.
Далее при попытке в клетеке на новой системе запустить, к примеру mc вываливается следующее.
Код: Выделить всё
Shared object "libncurses.so.8" not found, required by "mc"
Предполагаю что эта ошибка из за смены платформы.
Как доставить необходимые либы ?
Далее планирую полную пересборку всех портов в новой клетке ..
Re: Перенос Jail на другую систему.
Добавлено: 2012-06-06 13:09:28
manefesto
Re: Перенос Jail на другую систему.
Добавлено: 2012-06-06 13:50:17
kharkov_max
А установка compat не поможет ?
Re: Перенос Jail на другую систему.
Добавлено: 2012-06-06 14:18:38
kharkov_max
Уже как-то решал такой вопрос, но не помню как.
Re: Перенос Jail на другую систему.
Добавлено: 2012-06-06 15:58:53
Morty
Код: Выделить всё
ldd /usr/local/bin/mc
/usr/local/bin/mc:
libslang.so.2 => /usr/local/lib/libslang.so.2 (0x2816f000)
libncurses.so.8 => /lib/libncurses.so.8 (0x28274000)
libglib-2.0.so.0 => /usr/local/lib/libglib-2.0.so.0 (0x282b4000)
libintl.so.9 => /usr/local/lib/libintl.so.9 (0x28387000)
libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x28390000)
libpcre.so.1 => /usr/local/lib/libpcre.so.1 (0x28488000)
libc.so.7 => /lib/libc.so.7 (0x284e0000)
libm.so.5 => /lib/libm.so.5 (0x285ff000)
копируешь либы к себе в джейл, возможно будет работать . Скорее всего пересобирать все нада будет.....
или если все на одной машине , и на хосте остались рабочие либы можно попробовать сделать маунт путей где либы внутрь джейла
Re: Перенос Jail на другую систему.
Добавлено: 2012-06-06 16:08:53
kharkov_max
Да - либы скопировал в jail_root//usr/lib32 и все завелось...
Сейчас все порты пересобираю, скорее всего что после пересборки lib32 уже будет не нужен.
Но как-то это решение не совсем красивое.
Каталог /usr/lib32 в хост системе есть, почему ezjail-admin update -i -p не прилепил его к системе jail-ов х.з.
Почему колочусь, таких клеток у меня переезжать будет несколько, не хотелось бы таким образом включать либы.
Можно как-то решить глобально через ezjail, что б новая клетка автоматом создавалась с симлинком на lib32?
Re: Перенос Jail на другую систему.
Добавлено: 2012-06-06 16:28:18
Morty
пробуй монтировать lib32 в джейл
Re: Перенос Jail на другую систему.
Добавлено: 2012-06-07 8:31:25
kharkov_max
Прошу дальнейшей помощи ...
При полной пересборке портов, что то пересобралось нормально, а что то не захотело.
Через portupgrade в новой системе уже ни чего не пересобирается.
Решил попробовать руками, получаю вот такое (к примеру mc):
Код: Выделить всё
/usr/ports/misc/mc>>make reinstall BATCH=YES clean
===> Building for mc-4.8.1.1_1
/usr/local/lib/libiconv.so.3: unsupported file layout*** Error code 1
Stop in /basejail/usr/ports/misc/mc.
*** Error code 1
Stop in /basejail/usr/ports/misc/mc
Если через portupgrade то так:
Код: Выделить всё
>portupgrade mc-4.7.5_1
.....
File system: Midnight Commander Virtual Filesystem
cpio, tar, sfs, extfs, ftp, fish, smb
Screen library: S-Lang library (installed on the system)
Mouse support: xterm only
X11 events support: no
With subshell support: yes
With background operations: yes
Internal editor: yes
Diff viewer: yes
Support for charset: yes
Search type: glib-regexp
===> Building for mc-4.8.1.1_1
/usr/local/lib/libiconv.so.3: unsupported file layout*** Error code 1
Stop in /basejail/usr/ports/misc/mc.
*** Error code 1
Stop in /basejail/usr/ports/misc/mc.
** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portupgrade20120607-96 312-308icv-0 env UPGRADE_TOOL=portupgrade UPGRADE_PORT=mc-4.7.5_1 UPGRADE_PORT_V ER=4.7.5_1 make
** Fix the problem and try again.
** Listing the failed packages (-:ignored / *:skipped / !:failed)
! misc/mc (mc-4.7.5_1) (unknown build error)
Видимо просто скопировать lib32 недостаточно, нужно еще и с бубном поплясать ...
Re: Перенос Jail на другую систему.
Добавлено: 2012-06-07 10:55:08
Morty
поставь внутри джейла /usr/ports/misc/compat8x
и опятьже монтируй libы старые... судя по всему трабл в том что софт , его части , либы в 32бита, а на новой системе чтото уже пересобрано на 64 и конфликтует
Re: Перенос Jail на другую систему.
Добавлено: 2012-06-07 11:09:27
kharkov_max
И так.
1. Снес jail и удалил его каталог esjail-admin delete jail_name.
2. Обновил и пересобрал мир и ядро в основной системе, проинсталил мир и ядро.
3. Обновил ezjail update -i -p
4. Восстановил заново из бекапа клетку.
5. Установил compat8x
6. Скопировал из основной системы /usr/lib32 в jail
Далее делаю portupgrade -a, что то пересобирается а что то нет, ошибки аналогичные
Код: Выделить всё
/usr/ports/misc/mc>>make reinstall BATCH=YES clean
===> Building for mc-4.8.1.1_1
/usr/local/lib/libiconv.so.3: unsupported file layout*** Error code 1
Stop in /basejail/usr/ports/misc/mc.
*** Error code 1
Stop in /basejail/usr/ports/misc/mc
Варианты ?

Re: Перенос Jail на другую систему.
Добавлено: 2012-06-07 11:15:45
dmtr
6. Скопировал из основной системы /usr/lib32 в jail
может поробовать:
6. Скопировал из СТАРОЙ системы /usr/lib в /usr/lib32 в jail
compat8x 64-bitные либы ж наверно ставит, небольшой помоШник?
Re: Перенос Jail на другую систему.
Добавлено: 2012-06-07 11:53:12
kharkov_max
dmtr писал(а):6. Скопировал из основной системы /usr/lib32 в jail
может поробовать:
6. Скопировал из СТАРОЙ системы /usr/lib в /usr/lib32 в jail
compat8x 64-bitные либы ж наверно ставит, небольшой помоШник?
Попробовал - не работает (((.
Re: Перенос Jail на другую систему.
Добавлено: 2012-06-07 12:12:29
Morty
удали весь софт в клетке pkg_delete -a
и поставь все поновой
ps: backup if need
Re: Перенос Jail на другую систему.
Добавлено: 2012-06-07 12:28:28
kharkov_max
Ну тогда лучше новую клетку поднять и все с нуля установить.
Идея была пернести клетку в новую ОС...
Re: Перенос Jail на другую систему.
Добавлено: 2012-06-07 12:35:26
dmtr
можт после восстановления из бэкапа старой клетки обновить её на новой системе?
Re: Перенос Jail на другую систему.
Добавлено: 2012-06-07 12:47:29
kharkov_max
dmtr писал(а):можт после восстановления из бэкапа старой клетки обновить её на новой системе?
Как ?
Собственно я хотел порты собранные в i386 перекомпилить в AMD64.
Re: Перенос Jail на другую систему.
Добавлено: 2012-06-07 13:01:14
dmtr
kharkov_max писал(а):dmtr писал(а):можт после восстановления из бэкапа старой клетки обновить её на новой системе?
Как ?
так же как клетки обновляешь после обновления хост-системы?
Код: Выделить всё
ezjail-admin update [-s sourcetree] [-i] [-pP] jailname
с ezjail'ом знаком поверхностно, но можт все-таки это необходимая операция в данном случае? и еще - порты вместе с клеткой не перенеслись случайно из i386? или монтируются с хост-системы?
Re: Перенос Jail на другую систему.
Добавлено: 2012-06-07 13:37:45
kharkov_max
dmtr писал(а):kharkov_max писал(а):dmtr писал(а):можт после восстановления из бэкапа старой клетки обновить её на новой системе?
Как ?
так же как клетки обновляешь после обновления хост-системы?
Код: Выделить всё
ezjail-admin update [-s sourcetree] [-i] [-pP] jailname
с ezjail'ом знаком поверхностно, но можт все-таки это необходимая операция в данном случае? и еще - порты вместе с клеткой не перенеслись случайно из i386? или монтируются с хост-системы?
Тут нужно понимать как ezjail работает.
По сути обновлять систему отдельно для jail в ezjail не нужно.
Достаточно ezjail-admin update -i, обновится для всех клеток сразу (если конечно что то не крутили с настройками при настройке ezjail).
По умолчению ezjail-admin update -i для всех клеток.
Можно попробовать - но толку 100% не будет.
Порты с клеткой не перенеслись, т.е. порты из AMD64
Re: Перенос Jail на другую систему.
Добавлено: 2012-06-08 10:15:33
dmtr
в "ezjail-admin update" функционал mermaster заложен? ведь ты производишь переход не только между архитектурами, но и между версиями 8->9. например куча системных конфигов в jail_dir/etc/, они ведь отдельно живут в каждой клетке?
таки не пробовал апдейт клетки сделать после восстановления?
и еще, 9.0 release или stable?
Re: Перенос Jail на другую систему.
Добавлено: 2012-06-08 10:27:37
kharkov_max
в "ezjail-admin update" функционал mermaster заложен?
По идее нет.
ведь ты производишь переход не только между архитектурами, но и между версиями 8->9. например куча системных конфигов в jail_dir/etc/, они ведь отдельно живут в каждой клетке?
На сколько я понимаю они хранятся в одном месте (basejail), для всех клеток.
таки не пробовал апдейт клетки сделать после восстановления?
Пока не пойму как ...
и еще, 9.0 release или stable?
9.0 release
Re: Перенос Jail на другую систему.
Добавлено: 2012-06-08 10:34:46
dmtr
можт перемудрили вообще?
старые либы надо переносить в новую клетку для запуска старых 32bit программ, для пересборки портов-то они не нужны.
можт какие-то либы задублировались и используется не та?
у меня вот такой вывод и в хост-системе и в клетке (ezjail) (чистая система ничего не переносилось, все ставилось с нуля)
Код: Выделить всё
[root@sys2 /]# uname -m
8.2-RELEASE-p5 amd64
[root@sys2 /]# ldconfig -r|grep libiconv
146:-liconv.3 => /usr/local/lib/libiconv.so.3
[root@sys2 /]# ldconfig -32 -r|grep libiconv
[root@sys2 /]#
проверь у себя
Re: Перенос Jail на другую систему.
Добавлено: 2012-06-08 10:50:32
kharkov_max
Код: Выделить всё
[10:44]report:/root>>uname -m
amd64
[10:47]report:/root>>ldconfig -r|grep libiconv
110:-liconv.3 => /usr/local/lib/libiconv.so.3
[10:47]report:/root>>ldconfig -32 -r|grep libiconv
[10:47]report:/root>>exit
logout
[10:47]jails:/root>>uname -m
amd64
[10:47]jails:/root>>ldconfig -r|grep libiconv
110:-liconv.3 => /usr/local/lib/libiconv.so.3
[10:48]jails:/root>>ldconfig -32 -r|grep libiconv
Собственно как и у тебя.
По идее ни чего не мудрил, установка 9.0, обновление мира, ядра, установка ezjail, обновление ezjail .
Ни каких системных настроек не менял, в ядре включил ipfw и все ...
Re: Перенос Jail на другую систему.
Добавлено: 2012-06-08 11:20:14
dmtr
таки не пробовал апдейт клетки сделать после восстановления?
Пока не пойму как ...
я имел ввиду
Код: Выделить всё
# ezjail-admin restore jail
# ezjail-admin update -i
но, похоже ты прав
обновляет как раз basejail и дополнительный запуск update ничего не изменит...
ведь ты производишь переход не только между архитектурами, но и между версиями 8->9. например куча системных конфигов в jail_dir/etc/, они ведь отдельно живут в каждой клетке?
На сколько я понимаю они хранятся в одном месте (basejail), для всех клеток.
нет, "
/etc" у всех клеток свои, в basejail нету etc
Код: Выделить всё
[root@sys2 /]# ls -l /usr/local/vhosts/basejail
total 18
drwxr-xr-x 2 root wheel 1024 Dec 28 13:47 bin
drwxr-xr-x 7 root wheel 512 Dec 28 13:47 boot
drwxr-xr-x 3 root wheel 1536 Jan 19 16:43 lib
drwxr-xr-x 2 root wheel 512 Dec 28 13:47 libexec
drwxr-xr-x 2 root wheel 2560 Dec 28 13:47 rescue
drwxr-xr-x 2 root wheel 2560 Dec 28 13:47 sbin
drwxr-xr-x 13 root wheel 512 Oct 20 2011 usr
но это значит, что ты получаешь jail с бинарниками от 9.0, а /etc/* из 8.2
в частности /jail_dir/etc/make.conf. кстати что в нем?
Re: Перенос Jail на другую систему.
Добавлено: 2012-06-08 12:54:40
kharkov_max
Код: Выделить всё
>>cat /etc/make.conf
WRKDIRPREFIX= /var/ports
DISTDIR= /var/ports/distfiles
PACKAGES= /var/ports/packages
INDEXDIR= /var/ports
# added by use.perl 2011-08-25 14:22:46
PERL_VERSION=5.10.1
х.м ... а как тогда сам jail обновить ?
Re: Перенос Jail на другую систему.
Добавлено: 2012-06-08 13:18:48
dmtr
получается ezjail-admin выполняет какбэ
Код: Выделить всё
# make installworld DESTDIR=/usr/local/vhosts/jail
надо руками походу выполнять еще
Код: Выделить всё
# mergemaster -i -U -D /usr/local/vhosts/jailname
поставить в jail compat соотвествующей версии и выполнить
# make delete-old DESTDIR=/usr/local/vhosts/jail
# make delete-old-libs DESTDIR=/usr/local/vhosts/jail