はじめに
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