apt-get upgrade
結果が気に入らない場合、Ubuntuで最後のアップグレードをロールバックまたは元に戻す方法はありますか?
apt-get upgrade
結果が気に入らない場合、Ubuntuで最後のアップグレードをロールバックまたは元に戻す方法はありますか?
回答:
aptitude
Debianパッケージ管理に従って利用可能な場合、パッケージのすべてのバージョンにアクセスできます。
HartmanのBlogstaticブログ:Ubuntu Lucidでアップデートを元に戻す方法に出会いました
問題のある更新を取り消す最初のステップは、それがどの更新であったかを正確に調べることでした。いくつかのフォーラムを検索した後、更新履歴を確認する方法に出くわしました:synapticパッケージマネージャーを開きます(ターミナルの「sudo synaptic」)。メニューバーから[ファイル]-> [履歴]をクリックすると、すべての更新が日付順にソートされて表示されます。
残念ながら、私は今日約20個のアップデートをインストールしましたが、どのアップデートが問題を引き起こしたのかわかりませんでした。履歴リストで指定された各パッケージを検索することで、問題が解決し、問題のある更新が特定されるまで、一度にいくつかのダウングレードを行うことができました。これをする:
検索バーを使用して、ダウングレードするパッケージを見つけます。探しているものが見つかったら、パッケージをクリックして選択します。メニューバーから[パッケージ]-> [バージョンの強制]をクリックし、ドロップダウンメニューからパッケージの以前のバージョンを選択します。[適用]ボタンをクリックして、ダウングレードを適用します。
Debianシステムで今日これをしなければなりませんでした。まず、問題のあるアップグレードが発生した時間範囲を特定し、アップグレードされたパッケージの古いバージョン番号と新しいバージョン番号を示すログエントリを取得しました。
$ awk '$1=="2016-03-20" && $3=="upgrade"' /var/log/dpkg.log
2016-03-20 16:58:22 upgrade libwebkitgtk-3.0-0:amd64 2.4.9-3 2.4.10-1
2016-03-20 16:58:24 upgrade libjavascriptcoregtk-3.0-0:amd64 2.4.9-3 2.4.10-1
2016-03-20 16:58:26 upgrade traceroute:amd64 1:2.0.22-1 1:2.1.0-1
2016-03-20 16:58:33 upgrade ethtool:amd64 1:4.2-1 1:4.5-1
2016-03-20 16:58:34 upgrade libsdl1.2debian:amd64 1.2.15+dfsg1-3 1.2.15+dfsg1-4
2016-03-20 16:58:34 upgrade subversion:amd64 1.9.3-2+b1 1.9.3-3
2016-03-20 16:58:36 upgrade libsvn1:amd64 1.9.3-2+b1 1.9.3-3
2016-03-20 16:58:56 upgrade linux-image-amd64:amd64 4.3+70 4.4+71
2016-03-20 16:58:56 upgrade linux-libc-dev:amd64 4.3.5-1 4.4.6-1
2016-03-20 16:59:03 upgrade amd64-microcode:amd64 2.20141028.1 2.20160316.1
次に、まだキャッシュされているパッケージファイルをディスク上で見つけようとしました(幸運なことに、私はautocleanを実行していませんでした)。
$ awk '$1=="2016-03-20" && $3=="upgrade" {gsub(/:/, "%3a", $5); split($4, f, ":"); print "/var/cache/apt/archives/" f[1] "_" $5 "_" f[2] ".deb"}' /var/log/dpkg.log | xargs -r ls -ld
ls: cannot access '/var/cache/apt/archives/ethtool_1%3a4.2-1_amd64.deb': No such file or directory
-rw-r--r-- 1 root root 28820 Dec 18 2014 /var/cache/apt/archives/amd64-microcode_2.20141028.1_amd64.deb
-rw-r--r-- 1 root root 1978874 Dec 10 18:22 /var/cache/apt/archives/libjavascriptcoregtk-3.0-0_2.4.9-3_amd64.deb
-rw-r--r-- 1 root root 185006 Mar 12 00:41 /var/cache/apt/archives/libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb
-rw-r--r-- 1 root root 1317644 Mar 3 11:30 /var/cache/apt/archives/libsvn1_1.9.3-2+b1_amd64.deb
-rw-r--r-- 1 root root 7679400 Dec 10 18:22 /var/cache/apt/archives/libwebkitgtk-3.0-0_2.4.9-3_amd64.deb
-rw-r--r-- 1 root root 6108 Dec 14 06:59 /var/cache/apt/archives/linux-image-amd64_4.3+70_amd64.deb
-rw-r--r-- 1 root root 1075506 Feb 7 21:36 /var/cache/apt/archives/linux-libc-dev_4.3.5-1_amd64.deb
-rw-r--r-- 1 root root 983174 Mar 3 11:30 /var/cache/apt/archives/subversion_1.9.3-2+b1_amd64.deb
-rw-r--r-- 1 root root 53376 Feb 28 18:35 /var/cache/apt/archives/traceroute_1%3a2.0.22-1_amd64.deb
何らかの理由で古いethtoolパッケージを持っていないようです。それでも、古いパッケージファイルを強制インストールして続行します。
$ sudo dpkg -i /var/cache/apt/archives/amd64-microcode_2.20141028.1_amd64.deb /var/cache/apt/archives/libjavascriptcoregtk-3.0-0_2.4.9-3_amd64.deb /var/cache/apt/archives/libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb /var/cache/apt/archives/libsvn1_1.9.3-2+b1_amd64.deb /var/cache/apt/archives/libwebkitgtk-3.0-0_2.4.9-3_amd64.deb /var/cache/apt/archives/linux-image-amd64_4.3+70_amd64.deb /var/cache/apt/archives/linux-libc-dev_4.3.5-1_amd64.deb /var/cache/apt/archives/subversion_1.9.3-2+b1_amd64.deb /var/cache/apt/archives/traceroute_1%3a2.0.22-1_amd64.deb
dpkg: warning: downgrading amd64-microcode from 2.20160316.1 to 2.20141028.1
(Reading database ... 139632 files and directories currently installed.)
Preparing to unpack .../amd64-microcode_2.20141028.1_amd64.deb ...
Unpacking amd64-microcode (2.20141028.1) over (2.20160316.1) ...
dpkg: warning: downgrading libjavascriptcoregtk-3.0-0:amd64 from 2.4.10-1 to 2.4.9-3
Preparing to unpack .../libjavascriptcoregtk-3.0-0_2.4.9-3_amd64.deb ...
Unpacking libjavascriptcoregtk-3.0-0:amd64 (2.4.9-3) over (2.4.10-1) ...
dpkg: warning: downgrading libsdl1.2debian:amd64 from 1.2.15+dfsg1-4 to 1.2.15+dfsg1-3
Preparing to unpack .../libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb ...
Unpacking libsdl1.2debian:amd64 (1.2.15+dfsg1-3) over (1.2.15+dfsg1-4) ...
dpkg: warning: downgrading libsvn1:amd64 from 1.9.3-3 to 1.9.3-2+b1
Preparing to unpack .../libsvn1_1.9.3-2+b1_amd64.deb ...
Unpacking libsvn1:amd64 (1.9.3-2+b1) over (1.9.3-3) ...
Preparing to unpack .../libwebkitgtk-3.0-0_2.4.9-3_amd64.deb ...
Unpacking libwebkitgtk-3.0-0:amd64 (2.4.9-3) over (2.4.9-3) ...
dpkg: warning: downgrading linux-image-amd64 from 4.4+71 to 4.3+70
Preparing to unpack .../linux-image-amd64_4.3+70_amd64.deb ...
Unpacking linux-image-amd64 (4.3+70) over (4.4+71) ...
dpkg: warning: downgrading linux-libc-dev:amd64 from 4.4.6-1 to 4.3.5-1
Preparing to unpack .../linux-libc-dev_4.3.5-1_amd64.deb ...
Unpacking linux-libc-dev:amd64 (4.3.5-1) over (4.4.6-1) ...
dpkg: warning: downgrading subversion from 1.9.3-3 to 1.9.3-2+b1
Preparing to unpack .../subversion_1.9.3-2+b1_amd64.deb ...
Unpacking subversion (1.9.3-2+b1) over (1.9.3-3) ...
dpkg: warning: downgrading traceroute from 1:2.1.0-1 to 1:2.0.22-1
Preparing to unpack .../traceroute_1%3a2.0.22-1_amd64.deb ...
Unpacking traceroute (1:2.0.22-1) over (1:2.1.0-1) ...
Setting up amd64-microcode (2.20141028.1) ...
update-initramfs: deferring update (trigger activated)
amd64-microcode: microcode will be updated at next boot
Setting up libjavascriptcoregtk-3.0-0:amd64 (2.4.9-3) ...
Setting up libsdl1.2debian:amd64 (1.2.15+dfsg1-3) ...
Setting up libsvn1:amd64 (1.9.3-2+b1) ...
dpkg: dependency problems prevent configuration of libwebkitgtk-3.0-0:amd64:
libwebkitgtk-3.0-0:amd64 depends on libwebkitgtk-3.0-common (>= 2.4.9); however:
Package libwebkitgtk-3.0-common is not installed.
dpkg: error processing package libwebkitgtk-3.0-0:amd64 (--install):
dependency problems - leaving unconfigured
Setting up linux-image-amd64 (4.3+70) ...
Setting up linux-libc-dev:amd64 (4.3.5-1) ...
Setting up subversion (1.9.3-2+b1) ...
Setting up traceroute (1:2.0.22-1) ...
update-alternatives: using /usr/bin/traceroute.db to provide /usr/bin/traceroute (traceroute) in auto mode
update-alternatives: using /usr/bin/lft.db to provide /usr/bin/lft (lft) in auto mode
update-alternatives: using /usr/bin/traceproto.db to provide /usr/bin/traceproto (traceproto) in auto mode
update-alternatives: using /usr/sbin/tcptraceroute.db to provide /usr/sbin/tcptraceroute (tcptraceroute) in auto mode
Processing triggers for libc-bin (2.22-3) ...
Processing triggers for man-db (2.7.5-1) ...
Processing triggers for initramfs-tools (0.123) ...
update-initramfs: Generating /boot/initrd.img-4.4.0-1-amd64
Errors were encountered while processing:
libwebkitgtk-3.0-0:amd64
エラーメッセージが言ったように、私のパッケージの1つはアップグレードの直前に-commonパッケージに依存していましたが、アップグレードはそれを削除しました(そしてapt-getはそれをもう見つけることができません)。幸いなことに、そのパッケージファイルはまだ/ var / cache / aptにあるため、リストに追加して再試行するだけです。
$ ls -ld /var/cache/apt/archives/libwebkitgtk-3.0-common*
-rw-r--r-- 1 root root 452278 Dec 10 18:22 /var/cache/apt/archives/libwebkitgtk-3.0-common_2.4.9-3_all.deb
$ sudo dpkg -i /var/cache/apt/archives/amd64-microcode_2.20141028.1_amd64.deb /var/cache/apt/archives/libjavascriptcoregtk-3.0-0_2.4.9-3_amd64.deb /var/cache/apt/archives/libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb /var/cache/apt/archives/libsvn1_1.9.3-2+b1_amd64.deb /var/cache/apt/archives/libwebkitgtk-3.0-0_2.4.9-3_amd64.deb /var/cache/apt/archives/linux-image-amd64_4.3+70_amd64.deb /var/cache/apt/archives/linux-libc-dev_4.3.5-1_amd64.deb /var/cache/apt/archives/subversion_1.9.3-2+b1_amd64.deb /var/cache/apt/archives/traceroute_1%3a2.0.22-1_amd64.deb /var/cache/apt/archives/libwebkitgtk-3.0-common_2.4.9-3_all.deb
(Reading database ... 139632 files and directories currently installed.)
Preparing to unpack .../amd64-microcode_2.20141028.1_amd64.deb ...
Unpacking amd64-microcode (2.20141028.1) over (2.20141028.1) ...
Preparing to unpack .../libjavascriptcoregtk-3.0-0_2.4.9-3_amd64.deb ...
Unpacking libjavascriptcoregtk-3.0-0:amd64 (2.4.9-3) over (2.4.9-3) ...
Preparing to unpack .../libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb ...
Unpacking libsdl1.2debian:amd64 (1.2.15+dfsg1-3) over (1.2.15+dfsg1-3) ...
Preparing to unpack .../libsvn1_1.9.3-2+b1_amd64.deb ...
Unpacking libsvn1:amd64 (1.9.3-2+b1) over (1.9.3-2+b1) ...
Preparing to unpack .../libwebkitgtk-3.0-0_2.4.9-3_amd64.deb ...
Unpacking libwebkitgtk-3.0-0:amd64 (2.4.9-3) over (2.4.9-3) ...
Preparing to unpack .../linux-image-amd64_4.3+70_amd64.deb ...
Unpacking linux-image-amd64 (4.3+70) over (4.3+70) ...
Preparing to unpack .../linux-libc-dev_4.3.5-1_amd64.deb ...
Unpacking linux-libc-dev:amd64 (4.3.5-1) over (4.3.5-1) ...
Preparing to unpack .../subversion_1.9.3-2+b1_amd64.deb ...
Unpacking subversion (1.9.3-2+b1) over (1.9.3-2+b1) ...
Preparing to unpack .../traceroute_1%3a2.0.22-1_amd64.deb ...
Unpacking traceroute (1:2.0.22-1) over (1:2.0.22-1) ...
Selecting previously unselected package libwebkitgtk-3.0-common.
Preparing to unpack .../libwebkitgtk-3.0-common_2.4.9-3_all.deb ...
Unpacking libwebkitgtk-3.0-common (2.4.9-3) ...
Setting up amd64-microcode (2.20141028.1) ...
update-initramfs: deferring update (trigger activated)
amd64-microcode: microcode will be updated at next boot
Setting up libjavascriptcoregtk-3.0-0:amd64 (2.4.9-3) ...
Setting up libsdl1.2debian:amd64 (1.2.15+dfsg1-3) ...
Setting up libsvn1:amd64 (1.9.3-2+b1) ...
Setting up linux-image-amd64 (4.3+70) ...
Setting up linux-libc-dev:amd64 (4.3.5-1) ...
Setting up subversion (1.9.3-2+b1) ...
Setting up traceroute (1:2.0.22-1) ...
update-alternatives: using /usr/bin/traceroute.db to provide /usr/bin/traceroute (traceroute) in auto mode
update-alternatives: using /usr/bin/lft.db to provide /usr/bin/lft (lft) in auto mode
update-alternatives: using /usr/bin/traceproto.db to provide /usr/bin/traceproto (traceproto) in auto mode
update-alternatives: using /usr/sbin/tcptraceroute.db to provide /usr/sbin/tcptraceroute (tcptraceroute) in auto mode
Setting up libwebkitgtk-3.0-common (2.4.9-3) ...
Setting up libwebkitgtk-3.0-0:amd64 (2.4.9-3) ...
Processing triggers for libc-bin (2.22-3) ...
Processing triggers for man-db (2.7.5-1) ...
Processing triggers for initramfs-tools (0.123) ...
update-initramfs: Generating /boot/initrd.img-4.4.0-1-amd64
成功!実際、これは私の問題を解決しませんでした。しかし、パッケージのダウングレードは成功しました、QED。
また、今日、いくつかのDebianサーバーでパッケージのアップグレードを取り消す必要がありました。aptituteを使用してパッケージを最後のバージョンに正常に戻しましたが、次のawkコマンドは非常に役立ちました。
(以下のコマンドで、日付文字列をアップグレードを元に戻す日付に置き換えます)
awk 'BEGIN{ start="0" } { if($0 ~ /Log started: 2017-06-20/) { start="1"} if ( start == "1" && $0 ~ /Unpacking.*over/) {gsub(/[\s\t)( ]+/,"",$5); printf("%s=%s ", $2 , $5)}}' /var/log/apt/term.log
出力を確認して、これらが元に戻すパッケージとバージョンであることを確認します。次に、aptituteを使用して、リストされたパッケージのダウングレードを実行します。
aptitute install [paste output here]
これが他の人にとっても便利な時間節約になることを願っています。
私は、関連するファイルシステムのフルバックアップを取ってからはさておき、信じない(これらの含まれていること/
、/bin
、/lib
、/sbin
、/usr
、/var
、/etc
および/boot
(すべてのファイルシステム上にあってよい)とあなたのブートレコード)あなたが戻って、その後、マシンをロールバックすることができますので。
/var
と、関連する構成ファイルが保存されていることを確認できます。次に、dpkg
これらのバージョンをインストールするように明示的に指示することにより、強制的にロールバックを試みることができます。後で通常のアップグレードを実行したいときに、やらなければならない作業があるかもしれないので、それは私が推奨するものではありません。
あなたはcheckinstallを試すことができます
./configureの後; プログラムを作成すると、CheckInstallはmake install(または実行するように指示したもの)を実行し、優れたinstallwatchを使用して、このインストールによって変更されたすべてのファイルを追跡します...
したがって、aptitudeの安全なアップグレードを実行するように指示でき、アップグレードによって行われたすべての変更を追跡できます。
OpenSolarisカーネルとUbuntuユーザースペースを組み合わせたNexentaというプロジェクトがあります。SolarisのZFSとDebianのaptを統合してアップグレード用の[元に戻す]ボタンを提供するツールを提供します。こちらをご覧ください:http : //www.nexenta.org/os/TransactionalZFSUpgrades
より一般的には、バージョン管理ファイルシステムが必要です。Linux用のBtrfsは開発中です。
Apt-Undoの使用は可能なオプションですが、パッケージのインストールとアンインストールに使用している場合にのみ機能します。通常の方法でソフトウェアを既にアンインストールしている場合は役に立ちません。
http://www.ubuntugeek.com/apt-undo-a-simple-way-of-undoing-apt-actions.html http://lkubuntu.wordpress.com/2011/07/27/apt-undo-a -simple-way-of-undoing-apt-actions /
何度か成功しましたが、お勧めしません。これは私がやったことです(正しく覚えている場合):
1)デフォルトのubuntuリポジトリに含まれていない非公式のソフトウェアを削除します(必須ではないかもしれませんが、邪魔になるかもしれないのでお勧めします)。
2)/etc/apt/sources.list(およびsources.list.d / *)を以前のバージョンに変更します(すべての非公式リポジトリをコメントします)。
3)apt-get update / aptitude update
4)aptitudeを使用して、コアパッケージ(X11、ライブラリなど)をダウングレードします。多数の壊れたパッケージの起動が開始されます...各ケースを解決する必要があります(aptitudeでそれを行う方法を知る必要があります)。ダウングレードするには、説明パネルに移動して、下部にあるバージョンをインストールします(+を押します)。
5)すべてのソフトウェアがターゲットバージョンに属するまで#4を繰り返します(aptitudeのバージョン列を確認します)。
これらが、この方法を推奨しない理由です。
クリーンインストールを実行し、構成を少しずつ移動することを強くお勧めします。時間もかかりますが、最終的には安定したバージョンになります。
私がやった理由は、主に実験と絶望の結果でした。
オペレーティングシステムをZFSファイルシステム(Linux上のZFSなど)にインストールした場合、何かをインストールまたはアップグレードapt-get
するzfs snapshot
前に実行するように構成できます。これにより、ファイルシステムが瞬時にバックアップされます。ZFSスナップショット以外のバックアップメカニズムでも動作する場合がありますが、そのテストは他の人に任せます。
のようなファイルを作成する
/etc/apt/apt.conf.d/71backup
コンテンツ付き
// Tell `apt-get' to take a ZFS snapshot before installing or upgrading a
// set of packages:
DPkg::Pre-Install-Pkgs {"/sbin/zfs snapshot rpool/ROOT/debian@apt-get_$(date '+%Y-%m-%d-%H%M')";};
where rpool/ROOT/debian
は、オペレーティングシステムがマウントされているZFSファイルシステムの名前に置き換える必要があります。OSを最初にインストールしたときにその名前を付けましNAME
た。コマンドで属性の下にあります
# zfs list -t filesystem
NAME ...
...
rpool/ROOT/debian ...
...
ランダムなインターネット関係者の構成アドバイスに従う前に、スナップショットを撮る方が良いでしょう:
# zfs snapshot rpool/ROOT/debian@$(date '+%Y-%m-%d-%H%M%S')_test
# zfs list -t snapshot | grep rpool
...
rpool/ROOT/debian@2018-08-01-230001_test
そこにそれがある。必要がありますerror: fn_borked
すぐに発生し、あなたがその至福の現在の状態にシステムを戻すこと
# zfs rollback rpool/ROOT/debian@2018-08-01-230001_test
リポジトリで使用可能な2つの小さなゲームをインストールして、試してみてください。
# apt-get install tanglet sudoku
...
# zfs list -t snapshot | grep apt\-get
rpool/ROOT/debian@apt-get_2018-08-02-033614
そのスナップショットには、2つのゲームがインストールされる前のファイルシステムが含まれています。
# exit
$ sudoku
おばあちゃんにとって楽しい時間ですが、あなたは数独が嫌いです。
$ sudo -i
# zfs rollback rpool/ROOT/debian@apt-get_2018-08-02-033614
# exit
$ sudoku
-bash: /usr/games/sudoku: No such file or directory
$ tanglet
-bash: tanglet: command not found
複数のスナップショットを取得した後、-r
フラグを追加することにより、以前のスナップショットにロールバックできます。私たちの場合、例えば、試してください
# zfs -r rollback rpool/ROOT/debian@2018-08-01-230001_test
ただし、これによりファイルシステムrpool/ROOT/debian@2018-08-01-230001_test
が取得されたときの状態に戻るだけでなく、それ以降のすべてのスナップショットも完全に削除されることに注意してください。この投稿に沿ってフォローすると、スナップショットrpool/ROOT/debian@apt-get_2018-08-02-033614
は消えてしまいます。
apt-get upgrade
Debian GNU / Linuxでテストしました
# apt-get -t=oldstable install tanglet sudoku
...
# apt-get upgrade
...
# zfs list -t snapshot | grep apt\-get
できます。install
コマンド用に1つのスナップショットが作成され、コマンド用に別のスナップショットが作成されましたupgrade
。
警告:今日、これを初めてテストしましたが、aptの内部動作についてはほとんど知りません。これがあなたのために何かを壊したり、私の新しい心が考慮しなかったリスクを伴う場合は、以下にコメントしてください。