使用自訂 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

我們在此稱為 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 命令複製文件,或者在使用者登入後將 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

相關內容