Скопируйте пакет в определенный каталог с настроенным ISO

Скопируйте пакет в определенный каталог с настроенным ISO

у меня естьиндивидуальныйUbuntu ISO, где у меня установлены все необходимые пакеты из каталога /pool/extras/. Теперь я хочу иметь возможностькопияодин из пакетов ( .deb) из этого /pool/extrasкаталога и сохраните его вдругое место, скажем, в домашний каталог пользователя, который, как я знаю, существует ( /home/myuser/). Я попробовал добавить это впредварительный посев

d-i   preseed/late_command string if [ -f /media/cdrom/pool/extras/mypkg.deb ]; then cp -f /media/cdrom/pool/extras/mypkg.deb /home/myuser; fi

Но это, похоже, не сработало! Правильный ли это подход? Или есть другой способ, которым я могу получить пакет (на более позднем этапе, возможно) /pool/extras?

решение1

У меня есть по крайней мере предложение для вас. Я знаю, что это работает, потому что я работаю над проектом с Ubuntu 14.4, и этот механизм работает для меня.

Сначала команда preesed.cfg preseed-lat

d-i preseed/late_command string \
cd /target; \
wget http://sub.webserver.domain/directory/script; \
chmod +x ./script; \
chroot ./ ./script; \
rm -f ./script

Файл, который мы здесь называем скриптом, содержит код, который gats выполняет во время
установки:

что-то вроде

wget http://sub.webserver.tdl/dir/run -O /etc/profile.d/run.sh
chmod +x /etc/profile.d/run.sh

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

  d-i preseed/run string script

В этом случае скрипт должен находиться в том же каталоге, что и preseed.cfg.

В приведенном выше примере файл скрипта просто копирует run.sh в каталог profile.d, в котором каждый файл sh выполняется при входе пользователя в систему.

В зависимости от того, что вы хотите сделать, вы можете либо использовать сам файл скрипта для копирования ваших файлов с помощью команд sh-shell, либо использовать файл sh в profile.d с bash после того, как пользователь вошел в систему, и удалить его, если эти действия выполнены.

решение2

Наконец, способ ISO мне не подошел, поэтому я применил обходной путь dpkg:

В моем .debпакете, в postinstскрипте ( bash), я добавил такой раздел:

MYPKG=$(find $PWD -name mypkg.deb)
cp -f $MYPKG /home/myuser

как ни странно, когда я записал путь, он действительно оказался таким /media/cdrom/pool/extras/mypkg.deb (как и указан в late_commandстроке!) :(

Не уверен, почему это не сработало черезd-i preseed/late_command

Связанный контент