为了我的项目目的之一,我正在自动安装 dpkg-sig。现在我想以非交互方式安装它。
我在 /etc/sudoers.d/ 内的文件中添加了以下内容
Cmnd_Alias DPKGSIG_INSTALL = /usr/bin/apt install -y dpkg-sig, \
/bin/apt install -y dpkg-sig
abc ALL=(root) NOPASSWD: DPKGSIG_INSTALL
Defaults:abc !requiretty
我正在尝试使用我的 golang 代码安装 dpkg-sig,如下所示:
installDpkgSig := "/usr/bin/sudo DEBIAN_FRONTEND=noninteractive apt install -o Dpkg::Options::=--force-confold -y dpkg-sig"
executor.cmd = *exec.Command("bash", "-c", installDpkgSig)
它无法安装它。出现以下错误:
sudo: sorry, you are not allowed to set the following environment variables: DEBIAN_FRONTEND
但是当我删除DEBIAN_FRONTEND=非交互式来自安装命令的一部分,它工作正常。如何以非交互方式运行安装?
答案1
终于能够解决这个问题了。它不需要对 /etc/sudoers.d/ 文件进行任何更改。
将上面的代码修改如下并且它有效。
installDpkgSig := "export DEBIAN_FRONTEND=noninteractive && /usr/bin/sudo apt install -o Dpkg::Options::=--force-confold -y dpkg-sig"
executor.cmd = *exec.Command("bash", "-c", installDpkgSig)
当 bash 会话结束时DEBIAN_FRONTEND将被设置为默认值。