全力で怠けたい

怠けるために全力を尽くしたいブログ。

Arch Linux のパッケージのダウングレードは downgrade コマンドを使うとすごく楽。

はじめに

Arch Linux のパッケージは pacman で管理するけどダウングレードは downgrade コマンドを使うとすごく楽なのでメモしておく。

downgrade コマンドを使わなくても自分で古いパッケージを Arch Linux Archive から検索とダウンロードしてダウングレードすることもできるけど、個人的には downgrade コマンドを使うのがずっと楽だと感じてる。

downgrade のインストール方法

AUR のパッケージは base-devel グループがインストールされているのを前提としているので先にインストールしておく。

$ sudo pacman -S --needed base-devel

downgrade のリポジトリをクローンして makepkg -si コマンドを実行すると、makepkg コマンドが自動でソースコードをダウンロード、pacman で依存関係を解決、コンパイルしてパッケージ化してパッケージをインストールする。

$ git clone https://aur.archlinux.org/downgrade.git
$ cd downgrade
$ makepkg -si

downgrade の使い方

パッケージのダウングレードは downgrade <パッケージ> コマンドでやることができる。

downgrade コマンドを試すために pacman で Go の最新版をインストールしておいて、このあと downgrade していく。 go version コマンドを実行すると Go のバージョンが 1.16.6 であることが表示する。

$ go version
go version go1.16.6 linux/amd64

sudo downgrade go を実行するとダウングレード先のバージョンが表示してどのバージョンにダウングレードするかのプロンプトが表示する。

$ sudo downgrade go
Available packages (core):

    1)  go  2  1.11.5  1  remote
    2)  go  2  1.11.5  2  remote
    3)  go  2  1.11.5  3  remote

# 省略

   44)  go  2  1.16.3  1  remote
   45)  go  2  1.16.4  1  remote
   46)  go  2  1.16.5  1  remote
+  47)  go  2  1.16.6  1  remote
+  48)  go  2  1.16.6  1  /var/cache/pacman/pkg

select a package by number: 

今回は Go の 1.16.6 の一つ前のバージョンの 1.16.5 にダウングレードしていく。

1.16.5 のところの左側に表示している 46 を入力して enter キーを押すとパッケージの取得が始まるって処理を継続してよいかのプロンプトが表示する。 処理を継続してよいなら Y を入力していく。

   46)  go  2  1.16.5  1  remote
+  47)  go  2  1.16.6  1  remote
+  48)  go  2  1.16.6  1  /var/cache/pacman/pkg

select a package by number: 46
:: Retrieving packages...
 go-2:1.16.5-1-x86_64                         14.1 MiB  2.88 MiB/s 00:41 [####------------------------------------]  10%
loading packages...
warning: downgrading package go (2:1.16.6-1 => 2:1.16.5-1)
resolving dependencies...
looking for conflicting packages...

ダウングレードが終わると Go のパッケージを IgnorePkg に追加するかのプロンプトが表示する。 IgnorePkg に追加するなら y を入力して IgnorePkg に追加しないなら N を入力する。

(1/1) checking keys in keyring                                           [########################################] 100%
(1/1) checking package integrity                                         [########################################] 100%
(1/1) loading package files                                              [########################################] 100%
(1/1) checking for file conflicts                                        [########################################] 100%
:: Processing package changes...
(1/1) downgrading go                                                     [########################################] 100%
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...
add go to IgnorePkg? [y/N] N

ダウングレードが終わってから go version コマンドを実行すると Go のバージョンが 1.16.5 であることが表示する。 downgrade コマンドを使うとこんな感じにパッケージをダウングレードできるので、自分で古いパッケージを Arch Linux Archive から検索とダウンロードして……とやるよりもずっと楽にダウングレードができる。

$ go version
go version go1.16.5 linux/amd64

参考サイト