yay v13 が出た
yay は Go 製の AUR ヘルパー。内部的に pacman をラップしていて、公式リポジトリと AUR の両方を扱える。
v13 のリリースノート を読んだのでまとめる。
PKGBUILD 最終更新時刻の表示
パッケージ検索・アップグレードメニューに、PKGBUILD が最後に更新されてからの経過時間が表示されるようになった。
aur/brave-nightly-bin 1.93.67-1 (+42 1.10) [6h17m]
[6h17m] の部分が新表示。最近更新されたからといって危険とは限らないが、「より注意して PKGBUILD を読め」というシグナルになる。
Lua による設定・フック
~/.config/yay/init.lua に設定やフックを書けるようになった。ファイルが存在しなければ Lua は一切実行されない。config.json は引き続き読み込まれるが init.lua で上書き可能で、CLI フラグが最優先。
フックの種類は以下の3つ。
| フック | タイミング |
|---|---|
UpgradeSelect |
-Syu でアップグレード候補確定後、除外メニュー前 |
AURPreInstall |
PKGBUILD フェッチ直後、ビルド前 |
AURPostDownload |
makepkg --verifysource 後、ソースファイルにアクセス可能な状態 |
たとえば「最近3日以内に更新された AUR パッケージはアップグレードをスキップ」を自動化できる。
yay.create_autocmd("UpgradeSelect", {
desc = "skip recently modified AUR upgrades",
callback = function(event)
local exclude = {}
local recent_cutoff = os.time() - (3 * 24 * 60 * 60)
for _, pkg in ipairs(event.data.upgrades) do
if pkg.repository == "aur" and pkg.last_modified >= recent_cutoff then
table.insert(exclude, pkg.name)
end
end
return { exclude = exclude, skip_menu = false }
end,
})
AURpocalypse とは
今回の v13 リリースの背景にあるのが、AUR でのマルウェア混入インシデント(通称 AURpocalypse)。
npm のパッケージ汚染と同じ文脈で、AUR パッケージに悪意あるコードが仕込まれた。これを受けてコミュニティから「npm install のスキャンをしろ」「更新時刻を出せ」「メンテナ変更を追え」といった issue が大量に寄せられた。
作者の立場は明確で、「セキュリティシアター(見せかけのセキュリティ)は避けたい。自動チェックは PKGBUILD レビューの補助であり代替ではない」というもの。
そのうえで出した答えが「フック口だけ用意するから、やりたい人は Lua で書いてくれ」という拡張性の提供だった。本体はシンプルに保ちつつ、カスタマイズ可能にする設計。
なぜ Lua かというと、最初は gRPC プラグイン方式(Vault、Terraform、Grafana で使われるパターン)を検討していたが、セットアップが面倒でバイナリサイズも増大した。インシデント後にコミュニティが Bash スクリプトを大量に書いているのを見て、Lua で十分と判断したとのこと。NeoVim のエコシステムで Lua への親しみが広まっていることも理由の一つ。
Lua API ドキュメントは https://jguer.github.io/yay/lua.html で管理される。
paru の現状
自分は paru を使っている。yay からフォークした Rust 製の AUR ヘルパーで、yay の共同開発者だった Morganamilo が作ったもの。
GitHub を見に行ったところ、最新リリースは v2.1.0(2025年7月8日)で止まっている。約1年リリースがない状態。
issue が 146、PR が 51 積み上がっているが、メンテナは Arch Team での別の責任もあり手が回っていないようだ。
yay が AURpocalypse 対応で v13 を出してきたタイミングで、paru からは何もない。
今すぐ壊れるわけではないけど、セキュリティ周りの新機能が欲しいなら今は yay のほうが手厚い状況ではある。
yay に戻すか、このまま paru を使い続けるか、少し考えようと思う。