カスタマイズされたISOを使用してパッケージを特定のディレクトリにコピーする

カスタマイズされたISOを使用してパッケージを特定のディレクトリにコピーする

私はカスタマイズUbuntu ISOから必要なパッケージをすべてインストールします/pool/extras/コピー.debこのディレクトリからパッケージ( )の1つを選択/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

少なくとも 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と同じディレクトリに置く必要があります。

上記の例では、スクリプト ファイルは、ユーザーがログインするときにすべての sh ファイルが実行される profile.d ディレクトリに run.sh をコピーするだけです。

実行したい内容に応じて、スクリプト ファイル自体を使用して sh-shell コマンドでファイルをコピーするか、ユーザーがログインした後に profile.d 内の sh ファイルを 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

関連情報