次の方法で、仮想マシンからDebian10マシンを自動的に複製しようとします。徒歩旅行者。
最初から始める包装労働者その後、すべてのパッケージと構成を再インストールします。
だからハードウェアコンピュータで試してみました。
dpkg --get-selections > dpkg
debconf-get-selections > debconf
その後、仮想マシンからインポートします。
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
すべてが期待どおりに機能しますが、msmtp
場合によっては[疑似端末]phpldadmin
ダイアログボックスで以前の設定を選択するように求められますucf
。
debconf
両方のダイアログボックスに自動的に応答するにはどうすればよいですか(または他のトリック)?
debconf
手動選択ダイアログで更新しようとしましたが、成功しませんでした。
これpstree
:
│ └─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
:
confifold:confファイルが変更され、パッケージのバージョンが変更された場合、--force-confdefも指定しない限り、プロンプトなしで古いバージョンは常に保持されます。この場合、基本操作が好ましい。
ただし、このスイッチを使用してもメッセージが表示されます。
msmtp
Deb会議:
$ 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
Deb会議:
$ 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
答え1
次のように解決しました。
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
ありがとうございます^^