質問: ### 前提・実現したいこと Ubuntu 14を Ubuntu 16にアップグレードしています。 複数のサーバーがあるため、一発でアップグレードしようと思い fabric(ansibleでもできることですが今回はfabricで ) で実装しました。 アップグレード手順は以下の通りです。 ### アップグレード手順 ``` sudo apt-get update sudo apt-get upgrade sudo apt-get distupgrade sudo apt-get auto-remove sudo do-release-upgrade ``` ### 困っていること 上記のコマンドと叩くといくつかの質問が聞かれながらアップグレードが行っているのは皆ご存知だと思います。 目的は複数のサーバーに対して自動でアップグレードを行いたいわけですね。 apt-get update からapt-get auto-removeまではdpkg オプションを使えば自動ですべての質問を yesとやってくれるんですが、 do-release-upgrade の場合はそんな簡単にはできません。 いろんなオプションを付けてもアップグレード中聞かれた質問の答えをずっと待ってしまいました。 ### 試したdo-release-upgradeコマンド ``` sudo do-release-upgrade -f DistUpgradeViewNonInteractive sudo do-release-upgrade -d -f DistUpgradeViewNonInteractive ```
回答: 対話型のコマンドを自動化したいということですかね。 `expect`というコマンドで自動化できると思います。 Linuxの対話がめんどくさい?そんな時こそ自動化だ!-expect編-などを参考にしてみてください。 `do-release-upgrade`のオプションなどで対話型の操作を必要としなくさせるというのは、質問に書かれているような`sudo do-release-upgrade -f DistUpgradeViewNonInteractive`などしか私はしりませんので、`expect`で自動化するのがよいと思います。