LINUX.ORG.RU
решено ФорумAdmin

Офлайн обновление Gentoo

 ,


0

1

Привет всем.

Собственно возник следующий вопрос. Дана машина без доступа к сети, на ней установлен некоторый набор пакетов, дана вторая машина с доступом к сети, но с другой архитектурой и другим набором пакетов.

Требуется обновить систему на первой машине с помощью второй: возможно ли автоматизировать это?

//Соединить машины сетью невозможно. Целевая машина синхронизируется с тестингом, производительность инет-машины низкая.

//Ну и замкадье же.

Всем спасибо.

Машины связанные по сети? Если да, то на второй ставишь прокси.
Если нет, качаешь архив, распаковываешь его в чрут, копируешь make.conf portage/package.* с нужной машины, (по хендбуку настроить сеть) в чрут, emerge -avf world && emerge -avf pack1 pack2 pack3 ... и копируешь /usr/portage/distfiles/

ymuv ★★★★ ()

проудблирую тут

переносим /etc/portage в, скажем /var/localhost_portage
а сам /etc/portage делаем линком на /var/localhost_portage
в /var/netless_portage пихаем /etc/portage с бессетевой тачки
с переключаем, меняя диру на которую указывает /etc/portage
с миром и make.conf аналогично
------
всё это запихаваем в скрипт с case с 2-мя вариантами - локалхост и бессетевая, который и будет переключать «профили»
------
так же можно запилить (скорее нужно) запилить distfiles
которые потом для netless тачки переносишь на бессетевую и спокойно обновляешь
------
хотя дисты и не обязательно - просто тогда на всех машинах будут x86 и x86_64 специфичные дисты
хотя их мало, конечно...можно и забить

megabaks ★★★★ ()

1). на 2-ой скачать дистфайлы и любым образом скопировать их на 2-ую, можно написать баш скрипт описывающий набор дистфайлов, которые нужны

2). на 2-ой заиметь чрут (если системы x86_64-ая и x86 первая), в котором будет копия первой системы, соотв обновлять её и на 1ую тупо накатывать образ диска, или собранные quickpkg пакеты.

3). п 2 но с виртуалкой или кросскомпиляцией, полученные пакеты паковать в бинарные и ставить на второй.

qnikst ★★★★★ ()
Ответ на: комментарий от megabaks

ах да - дисты для netless доставать с emerge -fe
для начала
потом с emerge -uDNf world

megabaks ★★★★ ()
Ответ на: комментарий от qnikst

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

megabaks ★★★★ ()

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

LongLiveUbuntu ★★★★★ ()

Возможно.

1) Сначала скачай с зеркала /snapshots/portage-latest.tar.bz2 (или .tar.xz)

2) Раcпакуй его в ${PORTDIR} (по умолчанию /usr/portage). Предварительно старое содержимое удали, кроме distfiles и packages. А лучше distfiles и packages перенеси в другую директорию. Переменные DISTDIR и PKGDIR отвечают за них соответственно, просто добавь в make.conf.

3) emerge --metadata. Обновляет метаданные по пакетам

4) emerge -pf ... - выдаёт список файлов, которые надо загрузить, чтобы установить новые пакеты. Для каждого файла несколько ссылок на разные зеркала. Скачиваешь их и кладёшь в ${DISTDIR} (по умолчанию /usr/portage/distfiles).

5) emerge ... - ставишь пакеты.

Фактически, инет нужен 2 раза - при обновлении дерева портеджа и при скачивании файлов для новых пакетов. Совместить их в 1 не думаю что можно.

anonymous ()

emerge -fp `cat pkgs.txt`

anonymous ()
Ответ на: комментарий от anonymous

Ах да, шаг 1 на машине с инетом. Шаги 2 и 3 - на машине без инета. Из шага 4 emerge -pf ... на машине без инета, скачиваешь файлы на машине с инетом и скидываешь в ${DISTDIR} машины без инета. Шаг 5 на машине без инета.

anonymous ()

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

Thero ★★★★★ ()
Ответ на: комментарий от qnikst

1). на 2-ой скачать дистфайлы и любым образом скопировать их на 2-ую, можно написать баш скрипт описывающий набор дистфайлов, которые нужны
только ты не расписал хоть сколько-нибудь как получить это список, не вставая 2 раза
+ не учёл разность архитектур и «профилей»
потому фэйл

megabaks ★★★★ ()

я вижу это так:

1) делаешь копию всей системы

2) на машине с интернетом чрутишься туда делаешь fetch без установки исходников необходимых пакетов

3) на машине без интернета переносишь исходники и собираешь, чрутишься в виртуальную машину и собираешь там второй раз или делаешь копию всей системы ещё раз, не знаю - этот шаг надо как-то упростить

можеть быть еть более простой способ, я пока вижу только так.

Nensha ()
Ответ на: комментарий от Thero

предлагаю также туда установить на такой хард системрескусд и иметь ему копию актуальных каталогов /etc и /usr/portage с безсетевой машины, грузится с него налюбой машине с сетью монтировать их поверх выполнять emerge --sync emerge -avuDNf world и всё нужные для обновления дисты у нас есть можно идти на безсетевую машину. ЗЫ возможно этот способ будет работать с 32 гиговой флэшкой, на которую можно вместо срцд поставить и калькулэйт в режиме билдера для удобства синхронизаций.

Thero ★★★★★ ()
Ответ на: комментарий от Nensha

там не только /etc/portage, но и

с миром и make.conf аналогично


+ чрут из одной архитектуры в другую не факт что вообще будет работать

megabaks ★★★★ ()
Ответ на: комментарий от Thero

скорее хватит, но для наверняка можно взять и весь етц он весит немного.

Вы чётко представляете себе процесс переключения разных /etc в системе? о_О

Nensha ()
Ответ на: комментарий от Nensha

эм mount -o bind /offline/etc /etc всегда работал после загрузки... а то что потом нифига запускаться пока унмаунт не сделаешь так и пофиг, но если заморочится то можно пойти уберпутём и составить список нужных для портажки файлов из етц и отовсюду.

Thero ★★★★★ ()
Ответ на: комментарий от megabaks

а разве не факт что вообще работать не будет?

Thero ★★★★★ ()
Ответ на: комментарий от megabaks

Кто-нибудь это уже пробовал? ) Если да, то все вопросы отпадают.

+ чрут из одной архитектуры в другую не факт что вообще будет работать

точно... на arm приходилось воевать с quemu же.

Nensha ()
Ответ на: комментарий от Nensha

а тут и пробовать нечего
мир - тут понятно всё
make.conf - основной конфиг портажа, включая архитектуру
/etc/portage - попакетные конфиги + странности в bashrc (если есть)
собссно всё - нам же надо просто взять дерево (оно везде одинаковое) + дисты слить - они то как раз и зависят от архитектуры и юзов/кейвордов/масок и прочего в /etc/portage
всё

megabaks ★★★★ ()
Ответ на: комментарий от megabaks

запомнил. будем бэкапить в куданибудь.

Thero ★★★★★ ()
Ответ на: комментарий от megabaks

1). на 2-ой скачать дистфайлы и любым образом скопировать их на 2-ую, можно написать баш скрипт описывающий набор дистфайлов, которые нужны

только ты не расписал хоть сколько-нибудь как получить это список, не вставая 2 раза

не расписал, но к счастью это сделали за меня минимум 2 анонимуса

+ не учёл разность архитектур и «профилей»

ты ошибаешься.

qnikst ★★★★★ ()

Скачать portage-latest, а потом всё из

emerge -qpfuND world  | sed 's/ .*$//;/^$/d'

Tanger ★★★★★ ()
Ответ на: комментарий от megabaks

FEATURES=«mirror»

Хотя для неанлимного интернета это может быть болезненно

Pinkbyte ★★★★★ ()
Ответ на: комментарий от Nensha

я пробовал практически то, что предлагал megabaks.Работает

Pinkbyte ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.