Arch Linux はその最先端のソフトウェアとローリングリリースモデルでしばしば賞賛されます。 これらの特徴については、Arch Linux と Manjaro の比較記事で詳しく説明しています。 この称賛に加えて、Arch Linux は不安定であるという評判もあります。 この評判は、時として予測不可能なブリーディングエッジソフトウェアの性質に由来します。 上流の開発者からの最新のソフトウェアは、最初のテストでは明らかでなかったバグを含んでいるかもしれません。 そのため、パッケージ マネージャー pacman を使用して更新すると、予期しない結果になるというリスクが常に存在します。
GNU/Linux システムを定期的にバックアップすることは、この問題が引き起こす頭痛の種を軽減するための最良の保護手段です。 Linux 用のバックアップ ソリューションには事欠きません。バックアップ オプションには、dd、BackupPC、rsync、Fsarchiver、rsnapshot などがあります。 定期的なバックアップソリューションがあれば、pacmanのアップデートで問題が発生したときに、バックアップから復元できることを知って安心できますが、その必要がなければ理想的です。 この記事では、Arch Linux で pacmanpacman cacheArch Linux Archive を使う方法です。 両方の方法について説明します。
このチュートリアルでは、以下のことを学びます。
- pacman のキャッシュを使って Arch Linux のアップデートをロールバックする方法
- Arch Linux Archive を使って Arch Linux のアップデートをロールバックする方法
ソフトウェアの要件と使用する規約
| カテゴリー | 要件。 |
|---|---|
| システム | Arch Linux |
| ソフトウェア | pacman |
| その他 | rootまたはsudoコマンドでLinuxシステムに特権的なアクセスが可能です。 |
| 注意事項 | # – 与えられたlinuxのコマンドは、直接rootユーザーとして、またはsudoコマンドを使用して、root権限で実行する必要があります$ – 与えられたlinuxのコマンドは、通常の非 |
How to rollback Arch Linux updates using the pacman cache
パッケージをインストールしたりアップデートするたびに pacman/var/cache/pacman/pkg/pacman-U フラグを使ってパッケージを手動でアップグレードすることもできます。
単一のパッケージをダウングレードする
たとえば、$ sudo pacman -Syufirefoxfirefox は pacman cache を使ってインストールした以前のバージョンに簡単にダウングレードすることができます。
まず、/var/cache/pacman/pkg/
$ ls /var/cache/pacman/pkg/firefox*
あなたがアップデートした最新のバージョンと、あなたがインストールした以前のバージョンが表示されるはずです。
/var/cache/pacman/pkg/firefox-81.0.1-1-x86_64.pkg.tar.zst/var/cache/pacman/pkg/firefox-83.0-2-x86_64.pkg.tar.zst
バージョン 81.0.1-183.0-2 にアップグレードしたことがわかり、それが問題を引き起こしたのではないかと考えています。 この説を検証するには、pacman のキャッシュを使って以下のコマンドでバージョン 81.0.1-1 にロールバックするだけです。
$ sudo pacman -U /var/cache/pacman/pkg/firefox-81.0.1-1-x86_64.pkg.tar.zst
UAF Geophysical Instituteでは、研究用サイバーインフラストラクチャのアナリストとエンジニアのチームに参加する、経験豊富なLinuxシステムアナリストを募集しています。 LOCATION: Fairbanks, Alaska, USA
APPLY NOW
以下のような出力が表示されます。
loading packages...warning: downgrading package firefox (83.0-2 => 81.0.1-1)resolving dependencies...looking for conflicting packages...Packages (1) firefox-81.0.1-1Total Installed Size: 206.76 MiBNet Upgrade Size: -0.13 MiB:: Proceed with installation?
続けて yfirefox がインストールされ、それを開いて問題が解決されたかどうかを確認できます。
複数のパッケージをダウングレードする
pacman のキャッシュを使って、複数のパッケージを pacman -U に別の引数として与えることでダウングレードすることができます。 例えば
$ sudo pacman -U /var/cache/pacman/pkg/firefox-81.0.1-1-x86_64.pkg.tar.zst /var/cache/pacman/pkg/alsa-lib-1.2.3.2-1-x86_64.pkg.tar.zst /var/cache/pacman/pkg/adwaita-icon-theme-3.38.0-1-any.pkg.tar.zst
複数のパッケージをダウングレードするときは /var/cache/pacman/pkg ディレクトリに移動すると、ダウングレードしたい各パッケージのフルパスを入力する必要がないので有益です。
$ cd /var/cache/pacman/pkg$ sudo pacman -U firefox-81.0.1-1-x86_64.pkg.tar.zst alsa-lib-1.2.3.2-1-x86_64.pkg.tar.zst adwaita-icon-theme-3.38.0-1-any.pkg.tar.zst
おそらく、この方法で大量のパッケージをダウングレードするのは、控えめに言っても面倒だと思い始めているのではないかと思います。 20種類ものパッケージが問題を起こしている可能性があったり、どのパッケージが問題を起こしているのかわからないのに、すべてのパッケージをダウングレードしたいという状況に陥るかもしれません。 これらのシナリオには Arch Linux Archivepacman cache を使用するためのソリューションをハックできる状況の例を見てみましょう。
類似した名前のスキームを持つ複数の関連パッケージをダウングレードする
数週間使用していなかったマシンの電源を入れたとします。 $ sudo pacman -Syuコマンドを使用してシステムをアップデートしたところ、qtベースのアプリケーションはすべて正しく機能しませんでしたが、他のアプリケーションはすべて機能しました。 多くの基本的なqtパッケージおよびライブラリのファイル名にqtが含まれており、qt以外のパッケージのファイル名にqtが含まれている可能性は非常に低いため、最後のシステム アップグレードからqtの更新のみをロールバックすることができます。
pacman/var/log/pacman.logに保存されます。 以下に行の例を示します。
upgraded qt5-xmlpatterns (5.15.1-1 -> 5.15.2-1)
このログを利用して、pacman.log内の以下の行を探し、qtパッケージのみを系統的にダウングレードすることができます。 ファイル名に今日アップグレードされたqtを含むパッケージを示している行を探し、その行に対して何らかのテキスト操作を行い、それらをforループ内のpacman -Uの引数として提供します。 以下の例では、現在の日付が2020年11月30日であることを想定しています。
$ grep -a qt /var/log/pacman.log | grep 2020-11-30 > /tmp/qtupdates.txt$ awk '{print $4}' /tmp/qtupdates.txt > /tmp/lines1;awk '{print $5}' /tmp/qtupdates.txt | sed 's/(/-/g' > /tmp/lines2$ paste /tmp/lines1 /tmp/lines2 > /tmp/lines$ tr -d "" < /tmp/lines > /tmp/packages$ cd /var/cache/pacman/pkg/$ for i in $(cat /tmp/packages); do sudo pacman --noconfirm -U "$i"*; done
アップグレードされたすべてのパッケージをダウングレードする
数週間使用していなかったマシンの電源を入れたとしましょう。 $ sudo pacman -Syuコマンドでシステムをアップデートしようとしたところ、システム全体が異常に遅くなったことに気付きました。 どのパッケージのアップデートが原因なのか見当がつかず、512個のパッケージをすべてインストールした前のバージョンに一時的にロールバックしたいと考えています。
この作業は、先ほどの例と比べて何の手間もかかりません。 pacman.logpacman の大きな取り消しボタンとして機能します。 以下の例では、現在の日付が2020年11月30日であると仮定しています。
$ grep -a upgraded /var/log/pacman.log| grep 2020-11-30 > /tmp/lastupdates.txt $ awk '{print $4}' /tmp/lastupdates.txt > /tmp/lines1;awk '{print $5}' /tmp/lastupdates.txt | sed 's/(/-/g' > /tmp/lines2$ paste /tmp/lines1 /tmp/lines2 > /tmp/lines$ tr -d "" < /tmp/lines > /tmp/packages$ cd /var/cache/pacman/pkg/$ for i in $(cat /tmp/packages); do sudo pacman --noconfirm -U "$i"*; done
How to rollback Arch Linux updates using the Arch Linux Archive
Arch Linux Archive は公式のアーカイブで、以前のバージョンのパッケージのスナップショットを含んでいます。 これらはサイトの packages ディレクトリに保存されています。 Arch Linux Archivepacman cachepacman cacheは、ローカルストレージのスペースを取ります。 そのため、定期的にキャッシュをクリアすることを選ぶ人もいるでしょう。
単一のパッケージをダウングレードする
パッケージを以前のバージョンにダウングレードするには、まずアーカイブで見つけ、次に pacmanFirefox83.0-281.0.1-1 へのダウングレードに限定されません。 firefoxのアーカイブを見ればわかるように、以下の中間バージョンにダウングレードするオプションもあります。 81.0.2-1, 82.0-1, 82.0.2-1, 82.0.3-1, 83.0-1.
Firefox83.0-1Arch Linux Archive にダウングレードするには、次のコマンドを入力します。
$ sudo pacman -U https://archive.archlinux.org/packages/f/firefox/firefox-83.0-1-x86_64.pkg.tar.zst
すべてのパッケージを以前のバージョンにダウングレードする
Arch Linux Archiveを使用する際に利用できるもう1つのオプションは、システム上のすべてのパッケージを、特定の時点でリポジトリに存在していた「現在の」バージョンに復元することです。 これは、現在の Arch システムで問題が発生しているが、数週間前にはそのような問題はなかったことを覚えている場合に役立つでしょう。 以下の例では、すべてのパッケージを2020年11月10日にダウングレードします。 パッケージをダウングレードするには、/etc/pacman.d/mirrorlist を編集して pacman にアーカイブレポを使いたいことを知らせなければなりません。 ファイルに変更を加える前に、現在の mirrorlist ファイルに戻したいときに簡単に戻せるように、バックアップをとることをおすすめします。
$ sudo cp /etc/pacman.d/mirrorlist{,.bak}
次に、お好みのエディターを使って /etc/pacman.d/mirrorlist ファイルを編集します:
$ sudo vim /etc/pacman.d/mirrorlist
そして、コンテンツを次のように変更します。
### Arch Linux repository mirrorlist### Created to downgrade to Nov 10th 2020Server=https://archive.archlinux.org/repos/2020/10/11/$repo/os/$arch
さて、最終的にパッケージをダウングレードするために、次のコマンドを入力します。
$ sudo pacman -Syyuu
結論
この記事では Arch Linux でパッケージをロールバックまたはダウングレードする 2 つの方法、pacman cacheArch Linux Archive を調べました。 どちらも強力な方法で、それぞれに利点があります。
pacman cachepacman cacheには、以前にシステムにインストールしたことのあるパッケージのバージョンが含まれているため、それらがどの程度機能していたかを把握できる可能性が高いことです。
Arch Linux Archive を使用する主な利点は、以前にインストールしたかどうかにかかわらず、任意のバージョンのパッケージにダウングレードできることです。 もう一つの利点は、ローカルストレージを占有しないことです。ストレージが不足していて pacman キャッシュをクリアしたい場合、ダウングレードのための他の実行可能なオプションがあることを知っています。 3つ目の利点は、1つの設定ファイルを編集するだけで、システム上のすべてのパッケージを簡単にダウングレードできることです
。