如何使用 preseed 删除软件包?

如何使用 preseed 删除软件包?

我正在建立一个自动化的“不问任何问题”预播系统,并使用 Dustin Kirkland 的服务器预置举个例子。

他使用以下行来安装三个包作为自动安装的一部分:

d-i pkgsel/include string byobu vim openssh-server

我正在寻找其中,基本上能够作为自动安装的一部分删除软件包。

  • 我已经检查过了安装指南
  • 我已经检查过了示例预置,但不清楚这是否是所有可用选项的规范列表。

我在想我需要d-i preseed/late_command string apt-remove packagename在安装完成后清理我不想要的东西,但我不确定

答案1

在预置配置脚本中没有清除或删除包的选项,但您可以使用此命令......

在 preseed/late_command 中

This command is run just before the install finishes, but when there is
still a usable /target directory. You can chroot to /target and use it
directly, or use the apt-install and in-target commands to easily install
packages and run commands in the target system.
"in-target" means: chroot /target
d-i preseed/late_command string [in-target] foo

例子 :

d-i preseed/late_command string \
            in-target apt-get remove packagename

您还可以运行脚本:

d-i preseed/late_command string \
        in-target wget http://........./postinst.sh -O /root/postinst.sh; \
        in-target /bin/bash /root/postinst.sh

或者安装一组 DEB 文件:

d-i preseed/late_command               string \
    for deb in /hd-media/*.deb; do cp $deb /target/tmp; \
    chroot /target dpkg -i /tmp/$(basename $deb); done

答案2

所按下的示例仅仅是一个例子;它不包含所有可能的 di 组合,而只是包含那些更常见的组合。

就我个人而言,我从未尝试过从安装中删除软件包,所以我不确定是否有特定的 di 命令;听起来你的d-i preseed late_command应该可以。快速搜索 di 文档没有找到任何结果... 但是,当然,Colin 会知道 ;-)

或者,您可以从基本服务器开始,然后添加任何您想要的内容:

tasksel tasksel/first   multiselect     Basic Ubuntu server
...
d-i preseed/late_command string apt-install whatever else

相关内容