我正在尝试安装一个软件包,但没有得到提示。我在网上找到的答案是使用这个,它对我正在安装的软件包来说运行得很好;
DEBIAN_FRONTEND=noninteractive apt install myPackage -y
但是,最近我换了另一家云提供商,在同一个 Ubuntu 20.04 服务器上运行相同的命令并没有得到相同的结果。这次失败了。我相信他们使用的是不同的 Ubuntu 20.04 版本(很可能是常规版本和最低版本)。“失败”的意思是,即使从 bash 脚本运行,它仍然会提示我。
我尝试了不同的方法,例如以下方法,但都无法回答该包提出的最后一个问题,这只是一个是非问题,即使在交互式 GUI 中,我也无法直接按下enter
来回答yes
。它迫使我输入yes
。此外,尽管我已经设置了,上述命令仍然会使用黑白文本 GUI 提示我noninteractive
。
我试过但没有效果的方法;
export DEBIAN_FRONTEND=noninteractive
export DEBIAN_PRIORITY=critical
sudo apt-get install -y myPackage
yes yes | sudo DEBIAN_FRONTEND=noninteractive apt-get install -y myPackage
DEBIAN_FRONTEND=noninteractive /usr/bin/apt-get --option=Dpkg::Options::=--force-confold --option=Dpkg::options::=--force-unsafe-io --assume-yes --quiet install myPackage
我该如何让它工作,以便我可以只用默认答案回答问题而不被提示?它在一台 Ubuntu 20.04 服务器上运行良好,但在另一台来自不同提供商的服务器上却无法运行。
安装
apt-utils
解决了问题。现在noninteractive
按预期运行。我认为你应该能够做到:
我认为,只要您进入“sudo”区域,任何“export”的环境变量都会被删除,因为它是一个不同的用户空间。
似乎与此处类似: https: //stackoverflow.com/questions/70236670/debian-frontend-noninteractive-not-working-inside-shell-script-with-apt-get
apt 及其衍生产品(
apt-get
、apt-cache
、...)只是 Debian 包管理器的前端dpkg
。您可以使用安装从存储库服务器下载的包文件。
请参阅
man dpkg
以了解更多相关信息。您使用 所做的一切都是正确的
DEBIAN_FRONTEND=noninteractive apt-get install -y
!任何正确的.deb 包都会使用apt-get
的功能与您(用户)对话,当您告诉apt-get
(或apt
)(或者更确切地说是底层dpkg
命令,但这里并不重要)您不想被询问时,问题就解决了。问题解决了!但是,正如所展示的,有些软件供应商只是制造了有问题的软件包。如果这是来自 Ubuntu 软件存储库的软件包,那么就需要提交错误报告,并且该软件包应该很快就会得到修复。
愚蠢的“类型yes”方法让我相信这是一些带有一些许可证的第三方包
……可疑的 EULA 包装器。这里发生的事情是这样的:一个包只是一个存档文件,
在您的情况下,有一个包中包含一个脚本,无论是安装后还是安装前,它都会向您发出恶意询问。
所以,我们的任务是修改包!
未完待续;我现在必须离开了