AUR のパッケージ更新を日次で勝手にやるようにして楽をしている話
半年くらい放置しているので意図しないものが出るようになっている。出さなくさせる為に書く。
いろんなところで散々言及しているがわたしは AUR でいくらかの PKGBUILD を公開している: AUR (en) - Search Criteria: nosada
PKGBUILD を公開といってもやることは開発元のコードを落としてきて pacman
が解釈できるパッケージに落とすというだけなので大した内容ではない。
ただ開発元が新しいバージョンをリリースする度に PKGBUILD 側でもバージョンを更新してメタデータも書き換えて AUR に反映させてとそれなりに作業が発生するので、手間がかかる作業ではある。
去年末から今年の始めにかけて https://github.com/x-motemen/ghq が、そしてほぼ恒常的に https://github.com/digitalocean/doctl が、それぞれ結構な頻度で新しいバージョンをリリースしており、その度に PKGBUILD を更新して……という作業をするのが面倒になってきた。無論新しいバージョンがリリースされること自体はとても喜ばしいのだが、普通に作業量が多くてしんどくなってしまったのは事実である。
どうにかしたいな、バージョンが更新されたらそいつを PKGBUILD に落として AUR への反映までやってくれるようなやつ欲しいな、としばらく考えていた。 で、作った。今確認したら最後に更新したの1月下旬だった:
やることは単純で、
- AUR ユーザがもってる PKGBUILD を総浚いする
- 総浚いした中で GitHub 上で開発されているものの最新バージョンをチェックする
2.
で確認した最新バージョンが PKGBUILD 上のそれと異なる場合に新バージョンと見做して更新- PKGBUILD 更新
- .SRCINFO(パッケージのメタデータ)更新
makepkg -sfmL --noconfirm
してちゃんと新バージョンでパッケージが作れるか確認
3.
できちんとパッケージが作れることが確認できたら AUR 更新分を反映
ということを https://hub.docker.com/r/archlinux/base/ を基にした Docker コンテナ内でやる。 この Docker コンテナを systemd-timer を使って一日一回起動してくるようにし、開発元で更新があればこのタイミングで PKGBUILD の更新が発生するようにしてある。
既にこいつを使用しはじめて2ヶ月程度経つが、わたしが管理している AUR の PKGBUILD で目立った問題は発生していない。はず。
README.md に拙く書いた通りビルドの進捗や更新の成否を通知する都合上 Slack に依存していたり、作業内容の性格上既に AUR にユーザアカウントが存在している必要があったりと制約が多い内容ではあるが、AUR で公開している PKGBUILD を更新し続けるのが面倒になってきた人にとっては便利なものになっていると思っている。
現時点では GitHub 上で開発されているものしかバージョン更新の検知に対応していないので、他の環境上で開発されているものもきちんと更新を検知できるようにしていきたい。