Ubuntu

使用 Chef Solo 執行 apt-get upgrade

  • October 17, 2013

我正在使用 Chef Solo 為 Ubuntu 12.04 提供基於 Opscode 的“Bento”框的 Vagrant VM。當它完成配置並且我第一次通過 SSH 登錄時,MOTD 告訴我有軟體包和安全更新。然後我sudo apt-get upgrade手動執行,這會刪除後續登錄時的消息。有沒有辦法使用 Chef 自動執行此步驟?“apt”食譜似乎沒有處理這個問題。我所有的Google搜尋都只找到關於apt-get update而不是apt-get upgrade。我可以在我的 Chef 配方中執行 apt-get 命令,但在升級過程中,粉紅色螢幕上有一個偽 GUI,我必須選擇要安裝的驅動器(我認為這稱為 GRUB,我是新手到 Ubuntu),我不確定這部分如何用 Chef 自動化。

我剛剛在 chef+vagrant 上遇到了這個確切的問題,發現以下內容對我有用:

sudo dpkg-reconfigure -plow grub-pc

這允許您重新配置 grub-pc 並選擇要安裝 grub 的設備(如果有)。在此處將設備設置為預設值應該允許包含 grub 的升級不提示選擇設備。此時,您可以創建一個新的 vagrant box 並將其用作預設值。

或者

要在沒有提示的情況下執行 apt-get upgrade/dist-upgrade,您可以使用:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade
  • DEBIAN_FRONTEND=noninteractive對任何提示使用預設答案。
  • Dpkg::Options::="--force-confdef"確保 dpkg 僅覆蓋您未修改的配置文件
  • Dpkg::Options::="--force-confold"確保目前配置文件不會被覆蓋。使用 .dpkg-dist 後綴創建新的配置文件。

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