我正在尝试安装.deb文件...例如: example.deb。 但该程序已经安装在Debian最小服务器上的旧版本中。
所以做dpkg -i example.deb
正在创建一个对话框,如果我想保留配置...
有没有办法做到这一点没有互动?
答案 0 :(得分:3)
答案 1 :(得分:0)
您似乎正在寻找
dpkg --force-confold -i package.deb
指定在发生冲突的情况下dpkg
应该优先使用现有的旧配置文件。
更广泛地说,适当的解决方案取决于您多么迫切地希望避免使用交互式提示,以及您到底想避免哪种提示。
dpkg
具有许多选项,可以为各种情况选择特定的行为。参见其man page;滚动到--force-
事物的部分;其中之一是--force-confold
,或者相反是--force-confnew
,以始终替换任何现有配置文件。 (许多现代软件包都可以自动完全升级所有未更改的配置,但是手动更改的配置文件仍然需要手动更新或合并。)
如果您不是直接运行dpkg
,apt
和朋友可以让您通过它传递选项
apt install -o Dpkg::Options::="--force-confold" install package
(是的,冒号很多。您可能还希望install -y
避免Apt本身的交互式提示。)
将环境变量DEBIAN_FRONTEND
设置为字符串noninteractive
将使Debconf(Debian的配置管理组件)为所有问题选择默认答案,并禁用任何提示。
如果对软件包的配置问题的默认答案不合适,则可以预置 Debconf的配置数据库以及所需的设置。您需要安装包含实用程序debconf-utils
的{{1}}。进一步参见its man page,例如https://wiki.debian.org/DebianInstaller/Preseed的某些部分(尽管在安装程序中这是相当集中的,所以您可以潜在地执行所有Debian的无人值守安装)。
问题
debconf-set-selections
是您无法完全预测将显示哪些提示,具体取决于软件包和托管系统的配置;您可能对不需要的内容说yes | dpkg -i package.deb
,或者告诉系统您的域名或默认数据库用户是yes
。 Debconf旨在为您提供非常详细的信息,并且在大多数情况下,可以非常安全,可靠地控制软件包的安装-使用该功能。