私のプロジェクトの目的の1つとして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 =非対話型install コマンドで実行すると正常に動作します。非対話型でインストールをどのように実行しますか?
答え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デフォルト値に設定されます。