Debian

無法強制 Debian 進行無人值守安裝… libc6 需要互動式確認

  • March 8, 2014

我正在嘗試創建一個腳本,強制 Debian Lenny 安裝以安裝最新版本的 CRAN R。在安裝過程中,似乎 libc6 已升級並且安裝需要互動式確認可以重新啟動三個服務(mysql、exim4、cron )。此過程必須無人值守,因為它在 Amazon 的 Elastic Map Reduce (EMR) 機器上執行。但我的選擇已經不多了。這是我嘗試過的一些事情:

這個先前的問題似乎正是我正在尋找的。所以我設置我的安裝腳本如下:

# set my CRAN repos... yes, I know there's a new convention where to put these. 
echo "deb http://cran.r-project.org/bin/linux/debian lenny-cran/" | sudo tee -a /etc/apt/sources.list
echo "deb-src http://cran.r-project.org/bin/linux/debian lenny-cran/" | sudo tee -a /etc/apt/sources.list

# set the dpkg.cfg options per the previous SuperUser question
echo "force-confold" | sudo tee -a  /etc/dpkg/dpkg.cfg
echo "force-confdef" | sudo tee -a  /etc/dpkg/dpkg.cfg
export DEBIAN_FRONTEND=noninteractive

# add key to keyring so it doesn't complain 
gpg --keyserver pgp.mit.edu --recv-key 381BA480
gpg -a --export 381BA480 > jranke_cran.asc
sudo apt-key add jranke_cran.asc

sudo apt-get update

# install the latest R
sudo apt-get install --yes --force-yes r-base 

但是此腳本掛起以下輸入請求:

在此處輸入圖像描述

好的,所以我嘗試使用以下腳本停止服務:

sudo /etc/init.d/mysql stop
sudo /etc/init.d/exim4 stop
sudo /etc/init.d/cron stop
sudo apt-get install --yes --force-yes libc6

這不起作用,互動式螢幕又回來了,但這次只有 cron 列為必須重新啟動的服務。

那麼有沒有辦法讓 libc6 在沒有使用者輸入的情況下重新啟動這些服務?或者有沒有辦法停止 cron 所以它不會導致互動式提示?也許是我從未想過的創意選擇?

請記住,這個系統是啟動的,一些 Hadoop 程式碼執行,然後它被拆除。因此,我可以忍受在生產台式機或 Web 伺服器中可能不希望出現的副作用和不良行為。

我對 Lenny 中的設置並不積極,但我知道在 Squeeze 中,sudo 的配置env_reset意味著它會在執行命令之前刪除除極少數選擇環境變數之外的所有環境變數。

這意味著您設置的DEBIAN_FRONTEND變數實際上永遠不會進入apt-get install --yes --force-yes r-base. 如果您對 sudo 具有完全訪問權限,這意味著您在具有ALL = ALL權限的 sudoers 文件中,那麼您可以覆蓋此行為。

嘗試改用以下內容。

sudo DEBIAN_FRONTEND=noninteractive apt-get install --yes --force-yes r-base

編輯:請注意,重寫腳本以不在任何地方使用 sudo 而是以 root 身份執行腳本也可以。但這樣做只會避免我指出的真正問題,而不是解決它並從中學習。

引用自:https://serverfault.com/questions/238679