如何以非交互方式使用 dpkg 安装 .deb?

Aer*_*ris 2 dpkg

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

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

tri*_*eee 8

您似乎正在寻找

dpkg --force-confold -i package.deb
Run Code Online (Sandbox Code Playgroud)

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

更广泛地说,正确的解决方案取决于您对避免交互式提示的迫切程度,以及您确切想要避免的提示。

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

如果你没有dpkg直接运行,apt并且朋友允许你将选项传递给它

apt install -o Dpkg::Options::="--force-confold" install package
Run Code Online (Sandbox Code Playgroud)

(是的,这是很多冒号。您可能install -y也想避免 Apt 本身的交互式提示。)

将环境变量设置DEBIAN_FRONTEND为字符串noninteractive将使 Debconf(Debian 的配置管理组件)选择所有问题的默认答案,并禁用任何提示。

如果包的配置问题的默认答案不合适,您可以使用您想要的设置预置Debconf 的配置数据库。您需要安装debconf-utils包含该实用程序的文件debconf-set-selections。进一步查看其手册页,例如https://wiki.debian.org/DebianInstaller/Preseed的某些部分(尽管这主要关注于预置安装程序,因此您可以执行所有 Debian 的无人值守安装)。


问题在于

yes | dpkg -i package.deb
Run Code Online (Sandbox Code Playgroud)

是您无法准确预测将显示哪些提示,具体取决于软件包和托管系统的配置;您可能会说出yes您不想说的话,或者可能告诉系统您的域名或默认数据库用户是yes. Debconf 旨在为您提供非常详细且在大多数情况下非常安全和强大的软件包安装控制 - 使用该功能。


hek*_*mgl 7

你可以用管道yes输入它:

yes | dpkg -i package.deb
Run Code Online (Sandbox Code Playgroud)

man yes

  • 与`是4 | dpkg -i mysql-apt-config_0.8.13-1_all.deb` 不起作用:( 获取:`wget https://dev.mysql.com/get/mysql-apt-config_0.8.13-1_all.deb` (3认同)