apt-get 的靜默安裝

apt-get 的靜默安裝

為了工作我必須準備很多電腦。我必須將一堆sudo apt-get install命令推入終端機 - 這非常乏味。我可能可以將它們全部放入 sh 腳本中(也許),但某些命令需要sudo add-apt-repository透過命令添加新儲存庫 ( ) 或新增金鑰 (??) gpg- 並且它們要求使用者按 ENTER 鍵。

有什麼辦法可以對所有人或某事說「是」嗎?這可能需要向 apt-get 和 gpg 命令添加一些選項?

答案1

您可以附加--assume-yes--force-yes標誌以自動對所有人說“是”。

sudo apt-get --assume-yes --force-yes install <packagename(s)>

若要使這些變更永久生效,請編輯/etc/apt/apt.conf並新增下列行

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

這是手冊頁的內容apt-get說 -

   -y, --yes, --assume-yes
       Automatic yes to prompts; assume "yes" as answer to all prompts and
       run non-interactively. If an undesirable situation, such as
       changing a held package, trying to install a unauthenticated
       package or removing an essential package occurs then apt-get will
       abort. Configuration Item: APT::Get::Assume-Yes.

   --force-yes
       Force yes; this is a dangerous option that will cause apt to
       continue without prompting if it is doing something potentially
       harmful. It should not be used except in very special situations.
       Using force-yes can potentially destroy your system! Configuration
       Item: APT::Get::force-yes.

答案2

除非對預先配置系統進行自訂安裝,否則我可能會在每個系統上執行安裝腳本。

需要按回車的命令有哪些?add-apt-repository的幫助宣傳它的-y選項:

$ sudo add-apt-repository --help
Usage: add-apt-repository [options] repository

Options:
  -h, --help  show this help message and exit
  -y, --yes   force yes on all confirmation questions

下面的幫助連結顯示,新增 PPA 時「如果需要公鑰且可用,則會自動下載並註冊」。還有一些包,例如、ubuntu-keyring等,其中包含各種儲存庫的金鑰。並且應該告訴您如何讓它自動安裝金鑰(如果您無法使用它)。ubuntu-extras-keyringlinuxmint-keyringman gpg

和/或您可以sources.list直接使用sed/編輯文件awk,或者如果系統相同,則只需複製“完成的”文件。
這個 Ubuntu 幫助頁面有更多信息如何從命令列管理軟體儲存庫。

如果您正在準備很多系統,我是否可以假設您只下載一次 .deb 軟體包,並將它們全部安裝到每台電腦上,而不是為每個系統更新然後下載它們?如果您將所有 .deb 檔案都放在一個資料夾中,則此命令將安裝所有這些檔案:

  • sudo dpkg -iR [deb-directory]

僅供參考,我曾經看到一個奇怪的軟體包enter在完成安裝之前會等待,顯然它位於它自己的配置腳本之一中,甚至apt-get's 也--force-yes無法使用它。你沒有那種類型的,對嗎?


或者,如果您只想強制輸入一堆擊鍵進入 telnet(也應該適用於其他方法)終端,您可以使用如下所示的 bash 腳本:

{
echo "open 192.168.55.55"
sleep 0.5
echo "$login"
sleep 0.5
echo "$password"
sleep 0.5
echo "command1"
sleep 2
echo " "
sleep 5
echo "exit"
} | telnet

使用不同的睡眠時間來延遲「打字」之間的延遲,回顯空格" "甚至只是回顯應該發送換行符「返回」。

相關內容