Как обновить мир "другу"?
Имеем серв, с него грузятся машинки, требуется обновить мир для машинок.
Имеем корневую фс для этих машинок, скажем в /netboot.
Задача:
CONFIG_PROTECT="/netboot/etc /var/bind" PORTAGE_TMPDIR="/netboot/var/tmp" PORTAGE_CONFIGROOT="/netboot" ROOT="/netboot" emerge world -NuD;
Ограничения:
нет возможности юзать chroot, так как сей процесс будет автоматизирован + будут паковаться некоторые важные каталоги на отдельный HDD серва.
Проблема:(на примере ебилда skey, действие происходит на серве)
CONFIG_PROTECT="/netboot/etc /var/bind" PORTAGE_TMPDIR="/netboot/var/tmp" PORTAGE_CONFIGROOT="/netboot" ROOT="/netboot" emerge world -NuDpv|grep -i skey
[ebuild N ] sys-auth/skey-1.1.5-r7 98 kB [0]CONFIG_PROTECT="/netboot/etc /var/bind" PORTAGE_TMPDIR="/netboot/var/tmp" PORTAGE_CONFIGROOT="/netboot" ROOT="/netboot" emerge skey -Opv
These are the packages that would be merged, in order:
[ebuild R ] sys-auth/skey-1.1.5-r7 to /netboot/ 98 kB
stat /netboot/var/db/pkg/sys-auth/skey-1.1.5-r7/
File: `/netboot/var/db/pkg/sys-auth/skey-1.1.5-r7/'
Size: 824 Blocks: 1 IO Block: 4096 Каталог
Device: 302h/770d Inode: 12610209 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2009-02-06 05:11:23.000000000 +0500
Modify: 2009-02-06 05:11:24.000000000 +0500
Change: 2009-04-16 23:03:15.000000000 +0600
stat /var/db/pkg/sys-auth/skey-1.1.5-r7/
stat: невозможно выполнить stat для `/var/db/pkg/sys-auth/skey-1.1.5-r7/': Нет такого файла или каталога
тобишь
world не принимает /netboot/var/db/pkg, а использует /var/db/pkg
+ emerge вообще не принимает /netboot/etc/portage/, а использует /etc/portage/
+ emerge вообще не принимает /netboot/etc/make.conf, а использует /etc/make.conf
+ наверно будут проблеммы с etc-update
можно канешно сделать костыль аля
mount --bind /netboot/var/db/pkg /var/db/pkg; emerge ...; umount /var/db/pkg
НО,
0) не решает проблемы с make.conf
1) все-таки костыль (:
прошу помощи !
- Для комментирования войдите или зарегистрируйтесь
А почему бы всетаки не
А почему бы всетаки не рассмотреть chroot? имхо самое логичное что приходит в голову и чтобы не костыль. Например, создать скриптик следующего содержания:
и запихнуть его в крон, а для chroot окружения - положить в /netboot еще один скриптик (update_world.sh из примера выше) в который запихиваем все потребные команды. Все просто и красиво как мне кажется.
Не удержусь от совета :) выполнение апдейта мира в автоматическом режиме - не самая хорошая идея: если что-то пойдет не так, то потом трудно будет докопаться, хотя скидывание в лог всего происходящего - как вариант защиты от непредвиденного.
chroot /netboot
chroot /netboot /bin/bash
Недопустимая инструкция
чрут не везде сработает в том то и дело.
по поводу апдеёта мира, ессно сперва апдэйт делается на полигоне, потом уже открывается ключик на апдэйт системы до "проверенной даты".
_______________________________________
грех обманывать компиляторы в субботу
А зачем тебе шэлл запускать?
А зачем тебе шэлл запускать? Ключ #!/bin/bash в скрипте запустит все за тебя, а chroot можно делать везде, просто в зависимости от запускаемого приложения в папке chroot'a должны быть соответствующие либы и экзеки, но раз у тебя в /netboot целая система то и проблем быть недолжно (если конечно она под другую архитектуру не скомпилена :), а если так - то апдейт ее с сервера это вообще целая заморочка)
По chroot почитай http://www.gentoo.ru/node/9817 может найдешь похожую ситуацию. Или опиши подробнее, что за проблема при использовании.