web-dev-qa-db-ja.com

サイレントまたは無人リリースアップグレードを行うことはできますか?

プロンプトに反応することなく、新しいUbuntuバージョンにアップグレードするにはどうすればよいですか?

私は今12.04にいますが、12.10をインストールしたいと思います。更新を開始すると、通常はものをダウンロードしてから質問をし、少しインストールして、質問をします。プロセスを開始して、数時間後に立ち去って終了させたいと思います。/etcなどの構成ファイルを自動的に更新することに問題はありません。それでは、無人アップグレードを開始する方法は?

31
jdm

次のコマンドは、プロンプトなしで新しい安定版リリースにアップグレードします。

do-release-upgrade -f DistUpgradeViewNonInteractive

次のコマンドは、プロンプトなしで現在の開発リリースにアップグレードします。

do-release-upgrade -d -f DistUpgradeViewNonInteractive

私はそれをテストしていませんが、質問が発生したときにデフォルトのアクションを実行するだけのようです。また、スクリプトが長すぎるとハングします。

特定のパッケージの構成に不満がある場合は、dpkg-reconfigureを後で使用する必要がありますが、ほとんどの場合は問題ありません。

ソース: http://awaseroot.wordpress.com/2012/04/29/ubuntu-release-upgrade-fully-automatic-non-interactive-upgrade/ リンクには、これを行う他の方法もあります。

39
jdm

以前の回答を拡張するために、sshを介したパスワードなしのアップグレードを使用して、ボックスを最新バージョンにアップグレードし、受け入れられた回答と同じようにリモートで行う方法を次に示します。 自分のブログエントリ からコピーされます。

これらの手順はすべて、パッケージリポジトリが機能していることを前提としています。つまり、apt-get updateを実行すると、バージョンが古いために多くの404が表示されません。最初にそれを修正する必要があります。そのため この回答を参照 です。

0.既存のすべてのパッケージを更新する

Sudo apt-get update
Sudo apt-get upgrade
Sudo apt-get dist-upgrade

1.パスワードなしの実行を設定する

パスワードを入力せずにSudoを使用してdo-release-upgradeを実行できるユーザーのリストに自分を追加するには、次を実行します。

Sudo visudo -f /etc/sudoers.d/do-release-upgrade.

そして、次の行を追加し、もちろん自分のユーザー名をmy-usernameに置き換えます。

my-username ALL=NOPASSWD: /usr/bin/do-release-upgrade

2.増分アップグレードを開始します

ログアウトして、コンピューターから次のコマンドを実行します。入力を求めるプロンプトを表示せずにアップグレードを実行し(デフォルトのすべての回答を受け入れます)、コンピューターが再起動するのを待ってから、再度アップグレードを試みます。最新バージョンにアップグレードされるまで実行されます。

while true; do 
    ssh my-user@my-server Sudo do-release-upgrade -f DistUpgradeViewNonInteractive;
    sleep 120; 
done

3.構成ファイルを以前の状態に修正する

その後、アップグレードプロセスによってデフォルトの構成が配置されるため、バックアップされた構成ファイルを以前の場所に移動する必要があります。

デフォルトの回答に満足していませんか?

この人は回答を事前に準備する方法を持っています 各プロンプトに対して、しかし欠点は、プロンプトがいくつあるかを知る必要があることです…

6
oligofren

Thomas Wardが答えで述べていることを確認し、受け入れられた答えと矛盾する場合、do-release-upgrade -d -f DistUpgradeViewNonInteractiveは機能しません。

実際、最初のプロンプトで、16.04から18.04のテストパーティションが破損し、クローンを再作成する必要がありました。これは、スクリプトがフリーズする場所です。

Setting up mount (2.31.1-0.4ubuntu3) ...
Setting up systemd (237-3ubuntu10) ...
Installing new version of config file /etc/pam.d/systemd-user ...
Installing new version of config file /etc/systemd/journald.conf ...

Configuration file '/etc/systemd/logind.conf'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a Shell to examine the situation
 The default action is to keep your current version.
*** logind.conf (Y/I/N/O/D/Z) [default=N] ? y

Y
CRASHED... NOTHING HAPPENS NOW... WILL KILL AND RESTART WITHOUT -f OPTION...

Input Inhibitorにより、スクリプトを強制終了した後、再起動もシャットダウンも機能しません。コールドシャットダウンを行う必要があります(電源ボタンを10秒ほど押し続けます)。

ありがたいことに、これは16.04クローンアップグレードであり、実際の16.04パーティションではありませんでした。


人生をさらに面白くするために、新しい898 MBパーティションがNVMe SSDに追加され、通常のパーティションがシフトされました。

$ lsdrv
NAME        FSTYPE  LABEL                  MOUNTPOINT          SIZE MODEL

nvme0n1                                                        477G Samsung SSD 960 PRO 512G
├─nvme0n1p5 ntfs                                               858M 
├─nvme0n1p3                                                     16M 
├─nvme0n1p1 ntfs                                               450M 
├─nvme0n1p8 ntfs    Shared_WSL+Linux       /mnt/e                9G 
├─nvme0n1p6 ext4    Ubuntu18.04                               23.7G 
├─nvme0n1p4 ntfs    NVMe_Win10             /mnt/c            390.4G 
├─nvme0n1p2 vfat                           /boot/efi            99M 
├─nvme0n1p9 swap    Linux Swap             [SWAP]              7.9G 
└─nvme0n1p7 ext4    NVMe_Ubuntu_16.0       /                  44.6G 
  • nvme0n1p5はUbuntu 16.04パーティションがあった場所でしたが、現在はnvme0n1p7にあります
  • nvme0n1p8は、18.04テストパーティションが存在していた場所でしたが、現在はnvme0n1p8にあります

注:また、Windows 10をビルド1709からビルド1803にアップグレードしたため、ntfs形式の新しい898 MB nvme0n1p5パーティションが作成された可能性があります。

5

Sudo apt-get -y upgradeを使用して、ターミナル経由でこれを行うことができます。これは、すべてのプロンプトに「はい」と答えます。ただし、自動的には実行されないため、実行する必要があります。それはshould動作するはずです。知る限りでは、GUIアップデートマネージャを使用してソフトウェアの無人アップグレードを行う方法はありません(これはリリースアップグレードとは異なります!

別のUbuntuバージョン(別名リリースアップグレード、通常はUbuntuのバージョンに関連するリリースの次のリリース)にアップグレードしようとしている場合は、それをアクティブにする必要があります手動でSudo do-release-upgradeは機能する可能性があります。ただし、過去のプロンプトをスキップする方法はありません。これが、そのようなプロンプトを表示するときにアップグレードを開始する理由です-プロンプトが表示されます。

2
Thomas Ward