archでpackageをdowngradeする

archでpackageをdowngradeするには、いろいろな方法があります。

一つはdowngraderをinstallして実行する方法です。

$ yay -S downgrader
$ downgrader wine-mono

しかし、パッケージによっては、古いバージョンが見つからないことがあります。

そのような場合は、git.archlinux.orgからPKGBUILDを持ってきて対応したりします。

# https://git.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/wine-mono
$ vim PKGBUILD
pkgname=wine-mono
pkgver=4.7.x
pkgrel=1
pkgdesc="Wine's built-in replacement for Microsoft's .NET Framework"
arch=('any')
url="https://wiki.winehq.org/Mono"
license=('GPL' 'LGPL2.1' 'MPL')
depends=('wine')
source=("https://dl.winehq.org/wine/$pkgname/$pkgver/$pkgname-$pkgver.msi")
sha512sums=('xxxxx')
package() {
  install -Dm644 $pkgname-$pkgver.msi "$pkgdir"/usr/share/wine/mono/$pkgname-$pkgver.msi
}

こんな感じのPKGBUILDを用意して、内容を書き換えます。この場合は、pkgverとsha512sumですね。内容を見て判断してください。

# http://dl.winehq.org/wine/wine-mono/
$ curl -sLO http://dl.winehq.org/wine/wine-mono/4.7.2/wine-mono-4.7.2.msi
$ sha512sums wine-mono-4.7.2.msi
1234 wine-mono-4.7.2.msi

あとは、makgepkgを実行してpkg.tar.xzを作り、それをpacmanでインスールします。

$ cat PKGBUILD
pkgver=4.7.2
sha512sums=('1234')

$ makepkg

$ sudo pacman -U wine-mono-4.7.2-1-any.pkg.tar.xz

archはこういうことがサクッとできるのでいいですね。

注意

本来、checksumは、ファイルをダウンロードする前に確認するんですけど、ファイルの整合性(安全性)?をチェックするために、ただ、今回は、面倒だったので、ダウンロードしたファイルのものを入れてます。つまり、実質的にチェックしてない。気になる方はちゃんとしたほうがいいですね。