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


31

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

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

回答:


42

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

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/。リンクには、これを行う他の方法もあります。


リンクからコンテンツを参照することは避けてください。サイトにアクセスできない場合に情報が失われないように、関連情報も含めてください。
k0pernikus

私はこれを行い、すべてが機能しているように見えましたが、再起動後はgrubエラーしか発生しなかったため、この無人アップグレード後にgrub設定をさらに追加する必要があります。たぶんsudo apt-get install grub-emu
rubo77

6
これは、Trusty => Xenialでは機能しません。変更された/ etcファイルについての質問を引き続き受け取ります。
ウィレム

これはsudoで実行すべきではありませんか?
セリン

変更された/ etcファイルに関する質問については、ここで解決策があります:awaseroot.wordpress.com/2012/04/29/…。'echo "y \ n \ ny \ ny \ ny \ n"でコマンドを実行します| 'do-release-upgradeの前。質問への回答をシードします。/ etcに修正されたファイルがたくさんある場合に備えて、たくさんの回答を追加してください。
nmgeek

6

以前の回答を拡張するために、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 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.構成ファイルを以前の状態に修正します

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

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

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


5

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に今日の午後にアップグレードしたため、新しい898 MBのnvme0n1p5パーティションがntfsフォーマットで作成された可能性があります。


しかし、それは大きいので、Launchpadで報告する必要があります。以前のいくつかのディストリビューションのアップグレードで非対話型の方法を使用しました
oligofren

同じ日に同じボックスでubuntuとwindowsの両方をアップグレードしましたか?あなたは痛みを楽しむ必要があります
JDS

@JDS Windowsが機能しなくなりました。1700のアップグレードが欠落しており、Python 2とPython 3のすべての種類の依存関係が壊れています。Ubuntu16.04を消去して、Windowsストアの溜息から再インストールする必要があります。
WinEunuuchs2Unix

2

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

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


1
「しかし、過去のプロンプトをスキップする方法はありません」。DistUpgradeViewNonInteractiveフラグはどうですか?それはプロンプトをスキップします。
オリゴフレン

1
@oligofren Thomasが正しいのは、-f DistUpgradeViewNonInteractiveフラグにより​​スクリプトが最初の(Y/I/N/O/D/Z)プロンプトでロックされるためです。投稿した回答をご覧ください。
WinEunuuchs2Unix

-4

-yオプションを追加してみてください。apt-getただし、yすべてのクエリに応答することがわかっています。


1
私はapt-getではなく、グラフィカルなアップデートマネージャを使用しています。コンソールで更新を行うことはできましたが、「リリース間でアップグレードするために」「apt-get dist-upgrade」が機能しなかったため、コマンドは「apt-get」にはなりません。
jdm

@jdm apt-get dist-upgradeは正常に動作するはずです。ここで何が機能しなくなったのですか?
セス

3
@Seth apt-get dist-upgradeは、どのオペレーティングシステムでも、単独でリリースアップグレードを実行したことはありません。をご覧くださいman apt-getupgradeパッケージを新しくインストールまたはアンインストールせずにアップグレードできるパッケージのみをアップグレードします。dist-upgradeパッケージが削除または追加されることを意味する場合でも、パッケージをアップグレードします。これは、通常の更新を実行するのに主に役立ちupgradeます。たとえば、カーネルをアップグレードしません。
エリアケイガン

2
変更sources.list次のリリースのアーカイブを指すようにし、その後、実行中のapt-get dist-upgrade意志を、それが成功した場合、リリースのアップグレードを実行します。これはDebianでサポートされていますがaptitude dist-upgrade、より高度な依存関係解決のため、代わりに使用することをお勧めします。Ubuntuでは、成功するかもしれませんが、このようなものはまったくサポートされていません。代わりに、コマンドラインで新しいリリースにアップグレードするためにdo-release-upgrade使用されます。このユーティリティは-yフラグを使用しないため、この回答は新しいリリースにアップグレードする状況には適用されません
エリアケイガン

面白いね。私は当時Debianについて読んでいたに違いありません。
セス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.