首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为特定的包生成debconf?

如何为特定的包生成debconf?
EN

Unix & Linux用户
提问于 2021-01-26 00:41:19
回答 1查看 437关注 0票数 0

我试图通过Debian10自动在VM中克隆一台流浪汉计算机。

我从零开始使用封隔器,然后重新安装所有的包和配置。

所以,我试着用硬件计算机:

代码语言:javascript
复制
dpkg --get-selections > dpkg
debconf-get-selections > debconf

然后从VM导入它们:

代码语言:javascript
复制
debconf-set-selections < debconf
apt-get -y install dselect
dselect update
dpkg --force-confold --set-selections < dpkg
apt-get -y update
apt-get -y -o Dpkg::Options::="--force-confold" dselect-upgrade
apt-get -o Dpkg::Options::="--force-confold" -f install

一切正常工作,但是对于msmtpphpldadmin,提示我通过ucf在伪终端的对话框中选择旧的配置。

如何让debconf (或其他技巧)自动回复这两个对话框?

在手动选择对话框后,我尝试更新debconf,但没有工作。

pstree

代码语言:javascript
复制
  │                       └─dpkg,18446 --force-confold -i phpldapadmin_1.2.2-6.1~bpo9+1_all.deb
  │                           └─frontend,18456 -w /usr/share/debconf/frontend /var/lib/dpkg/info/phpldapadmin.postinst configure 
  │                               ├─phpldapadmin.po,18470 -e /var/lib/dpkg/info/phpldapadmin.postinst configure 
  │                               │   └─ucf,18483 /usr/bin/ucf --debconf-ok /tmp/tmp.eP3bVeYBPp /etc/phpldapadmin/config.php
  │                               └─whiptail,18522 --backtitle Package configuration --title Configuring phpldapadmin --output-fd 11 --nocancel --default-item ...

来自man dpkg

conffile :如果修改了conffile,并且包中的版本确实发生了更改,则始终保留旧版本而不提示,除非还指定了-force-confdef,在这种情况下,首选默认操作。

但我被提示了,即使是这个开关。

msmtp debconf:

代码语言:javascript
复制
$ grep msmtp debconf 
# Action souhaitée pour le fichier de configuration modifié msmtprc :
msmtp   msmtp/auto_from boolean true
msmtp   msmtp/tls   boolean on on on /etc/ssl/certs/ca-certificates.crt
msmtp   msmtp/host  string  smtp.foobarmail.com
msmtp   msmtp/maildomain    string  
msmtp   msmtp/port  string  587
msmtp   msmtp/sysconfig boolean true

phpldapadmin debconf:

代码语言:javascript
复制
$ grep phpldapadmin ../../files/debconf.db 
phpldapadmin    phpldapadmin/restart-webserver  boolean true
phpldapadmin    phpldapadmin/ldap-authtype  select  session
phpldapadmin    phpldapadmin/ldap-server    string  127.0.0.1
phpldapadmin    phpldapadmin/ldap-basedn    string  xxxx
phpldapadmin    phpldapadmin/ldap-bindpw    string  secret
phpldapadmin    phpldapadmin/ldap-tls   boolean false
phpldapadmin    phpldapadmin/reconfigure-webserver  multiselect apache2
phpldapadmin    phpldapadmin/ldap-binddn    string xxxx
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2021-01-31 17:26:23

像这样解决:

代码语言:javascript
复制
export LANG=C
export DEBIAN_FRONTEND=noninteractive # very important
debconf-set-selections < debconf
apt-get -y install dselect
dselect update
dpkg --force-confold --set-selections < /root/pkgs
apt-get -y update
yes '' | apt-get -y -o DPkg::options::="--force-confdef" -o DPkg::options::="--force-confold" dselect-upgrade
yes '' | apt-get -y -o Dpkg::Options::="--force-confdef" -o DPkg::options::="--force-confold" -f install

if ! dpkg -l | grep -q phpldapadmin; then
    wget http://ftp.fr.debian.org/debian/pool/main/p/phpldapadmin/phpldapadmin_1.2.2-6.1~bpo9+1_all.deb -O  phpldapadmin_1.2.2-6.1~bpo9+1_all.deb
    yes '' | dpkg --force-confold --force-confdef -i phpldapadmin_1.2.2-6.1~bpo9+1_all.deb
fi

谢谢^^

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/631004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档