私はカスタマイズ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