如何使用预置删除软件包?


13

我正在建立一个自动化的“无问题”预置系统,并以Dustin Kirkland的服务器预置为例。

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

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

我正在寻找相反的情况,基本上可以在自动安装过程中删除软件包。

  • 我已经检查了安装指南
  • 我已经检查了preseed这个示例,但尚不清楚这是否是每个可用选项的规范列表。

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


绝对可以。虽然并不大。我使用伪软件包,并从没有任何不需要的基本安装开始。
RobotHumans 2011年

桌面团队或服务器团队中没有人看着这个问题吗?
Manish Sinha

我已经尝试过使用这种方法删除软件包,但对我不起作用
Maverick

Answers:


13

在前面的配置脚本中没有清除或删除软件包的选项,但是您可以使用此命令...。

di 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

0

所举的例子仅仅是一个例子。它不包含所有可能的di组合,而只是更常见的组合。

就个人而言,我从未尝试从安装中删除软件包,因此我不确定是否有特定的di命令;因此,听起来您d-i preseed late_command应该可以工作。快速搜索di docs并没有产生任何结果...但是,当然,Colin会知道;-)

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

tasksel tasksel/first   multiselect     Basic Ubuntu server
...
d-i preseed/late_command string apt-install whatever else
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.