将包复制到带有定制 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 命令复制文件,或者在用户登录后使用 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

相关内容