題 使用apt-get install時自動回答“是”


有沒有辦法 apt-get install 對“您想繼續[是/否]?”回答“是”?


301
2017-07-16 20:34


起源




答案:


通過 apt-get手冊頁

apt-get -y install [packagename]

351
2017-07-16 20:36



這和@bclermont回答一樣(--yes --force-yes)嗎? - jjxtra


問題:

apt-get --yes install $something

如果包簽名所有者的公鑰不在密鑰環或其他一些條件下,它將要求手動確認。確保它不會要求確認只是這樣做:

apt-get --yes --force-yes install $something

如果您想永久保留這些設置,請在/etc/apt/apt.conf.d/中創建一個文件,例如/etc/apt/apt.conf.d/90forceyes,其中包含以下內容:

APT::Get::Assume-Yes "true";
APT::Get::force-yes "true";

159
2017-07-16 22:08



+1品種。一切 -y 越來越無聊(另外,這是一個更完整的答案。) - Dennis Williamson
+1最佳答案 - 我一直在尋找強迫是的解決方案,而不是每次都必須指定它 - Robin Winslow
當它說“繼續輸入'是的,按我說的做'!”時,這是否有效?如果不是什麼是解決方案呢?我嘗試用​​我的chrooted debian圖像中的systemd替換sysvinit時遇到了這種情況。 - Lennart Rolland
請不要使用 --force-yes:as 這回復了一個相關的帖子 debian-devel 顧名思義, --force-yes 可能會導致系統無法使用。 (我不是在低估,因為答案實際上解決了OP所說的問題,但無論如何我都會在答案中添加一個大紅色警告。) - kostix
APT :: Get :: Assume-Yes“true”; 幫助我避免在docker容器中安裝中斷。 - Mehdi Sadeghi


請注意,如果您還希望在出現交互式提示時自動使用默認答案,則可以使用 DEBIAN_FRONTEND=noninteractive

單安裝:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install [packagename]

例如。:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install postfix

所有更新:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y update 

你可以設置 更精細的選擇 同 -o Dpkg::Options::="--force-confdef" 和 -o Dpkg::Options::="--force-confold"

例子:

apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold"

要么

apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade

交互式提示示例:

enter image description here

有趣的讀物: 執行無人參與的Debian軟件包安裝


42
2017-07-12 18:36





APT::Get::Assume-Yes "true";

APT::Get::force-yes "true";

這至少應該在 /etc/apt/apt.conf 並評論出來。我擔心Ubuntu正在接受微軟的批評,總是要求獲得許可。

“你確定嗎?”,當然我肯定,我不是一個訓練有素的猴子,只需鍵入鍵盤,點擊快樂。

接下來門會問:“你確定要出去嗎?”
烤箱會問:“你確定要做飯嗎?”
汽車會問:“你確定要剎車嗎?”
滅火器會問,“你確定要滅火嗎?”
對不起,戴夫,我不能讓你這樣做。
HAL9000可以使用收縮,但數據不能或不能。


15
2018-06-07 01:00



這是最好的答案 - Robin Winslow
與HAL9000和dpkg要求許可的區別在於HAL表示“不,期間”,而“是的,按我說的做”只會出現,如果您要完全徹底破壞您的系統。如果這就是你想要的,當然,請繼續。但在這種情況下發出警告似乎是合理的。 - Wouter Verhelst


來自 apt-get HOWTO

使用 -y 開關: apt-get -y install packagename


9
2017-07-16 20:37





apt-get -y update
apt-get -y install [package]

7
2017-07-16 20:37



+1,但為什麼 update 需要許可嗎? - amyassin
@amyassin apt-get update 命令需要root權限,因為它更新本地程序包列表(索引),這些列表是root擁有的系統文件。 - jjmontes


一般來說,手冊中的選項應該運作良好

apt-get -y --force-yes install package

如果沒有成功,你可以嘗試使用 yes 命令。

yes | apt-get -y --force-yes install package

確實在我的vagrant shell配置腳本中使用了它

PS: 如果你想要非交互式,但通常說不,那麼你可以試試這個:

yes no | apt-get install package

2
2017-11-17 16:51





我一直在尋找一種在腳本中選擇非默認的方法,特別是在安裝wireshark時,最後使用tmux與shell進行交互,如下所示:

# Start a detached root session
sudo tmux new-session -d
# Send the command
sudo tmux send-keys "DEBIAN_FRONTEND=readline apt-get -qq install wireshark-common; exit" enter
# Wait for the tmux session to get to the interactive stage
sleep 5
# Answer the question
sudo tmux send-keys "yes" enter
# Now attach to the session so we wait for command completion
sudo tmux attach

1
2017-09-10 13:29





新的 (apt 別名需要 -y (--yes)切換:

sudo apt -y upgrade

0
2018-02-02 12:49