Страница 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
ln -s
рулит

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
Варианты ? :unknown:

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
но, похоже ты прав

Код: Выделить всё

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