如何以非交互方式安装带有dpkg的.deb?

时间:2017-07-27 11:30:55

标签: dpkg

我正在尝试安装.deb文件...例如: example.deb。 但该程序已经安装在Debian最小服务器上的旧版本中。

所以做dpkg -i example.deb正在创建一个对话框,如果我想保留配置... 有没有办法做到这一点没有互动?

2 个答案:

答案 0 :(得分:3)

您可以将yes导入其中:

yes | dpkg -i package.deb

man yes

答案 1 :(得分:0)

您似乎正在寻找

dpkg --force-confold -i package.deb

指定在发生冲突的情况下dpkg应该优先使用现有的旧配置文件。

更广泛地说,适当的解决方案取决于您多么迫切地希望避免使用交互式提示,以及您到底想避免哪种提示。

dpkg具有许多选项,可以为各种情况选择特定的行为。参见其man page;滚动到--force- 事物的部分;其中之一是--force-confold,或者相反是--force-confnew,以始终替换任何现有配置文件。 (许多现代软件包都可以自动完全升级所有未更改的配置,但是手动更改的配置文件仍然需要手动更新或合并。)

如果您不是直接运行dpkgapt和朋友可以让您通过它传递选项

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旨在为您提供非常详细的信息,并且在大多数情况下,可以非常安全,可靠地控制软件包的安装-使用该功能。