AUR Metadata (日本語)
AUR ウェブインターフェイスに情報を表示するために、AUR のバックエンドのコードでは PKGBUILD ファイルを分析して、パッケージの名前・バージョンなどの情報をサルベージしています。PKGBUILD
は Bash スクリプトなので、実行することなく Bash スクリプトを正確に分析するのは難題です、そのために makepkg は Bash スクリプトで出来ています: makepkg は source
ディレクティブでビルドするパッケージの PKGBUILD を読み込みます。AUR メタデータファイルはそのようなハックを取り除くために作られました。ウェブインターフェイスで間違った分析が行われないように AUR パッケージのメンテナによって使用されます。FS#25210, FS#15043, FS#16394 を参照してください。
動作の仕組み
".AURINFO" という名前のメタデータファイルをソース tarball に追加することで特定の PKGBUILD フィールドを上書きします。このファイルのフォーマットは AUR 2.1.0 のリリースアナウンスで説明されています。.AURINFO
ファイルは一行毎にパースされます。それぞれの行は key = value
という形式をとり、key
は以下のフィールド名のどれかになります:
- pkgbase: AUR 3 から必要、これがないと悪名高い “only lowercase letters are allowed” エラーが出ます (Pacman は pkgbase がないときは最初の pkgname を使います)。
- pkgname
- pkgver: [epoch:]pkgver-pkgrel という形式の完全なパッケージバージョン
- pkgdesc
- url
- license
- depend (将来の AUR リリースでは depends に名前が変更されます)
他の名前のフィールドは無視されます。depend
行は多数の依存パッケージを追加するために複数指定することができます。このフォーマットは pacman/libalpm のバイナリパッケージで使われている .PKGINFO
フォーマットとほぼ一致します。フィールド名のプリフィックスや分割パッケージをサポートするためのセクションで拡張でされる予定です。
makepkg --source で使う
makepkg --source
を使っても作成した src tarball に .AURINFO ファイルは自動では含まれません。これを修正するには PKGBUILD
の source
行に .AURINFO
を追加してください。
source=(.AURINFO ...) md5sums=(SKIP ...)
動作しないもの
- マルチアーキテクチャ (
x86_64
dependencies tend to be more numerous, so just put them)
pkgbuild-introspection と mkaurball
pkgbuild-introspection が .AURINFO
ファイルを生成するためのツールのセットになります。入ってるツールの一つである mkaurball
は、makepkg --source
を実行して .AURINFO
ファイルを生成し、作成されたソースパッケージにそれを挿入するスクリプトです。
公式リポジトリから pkgbuild-introspection パッケージをインストールしてください。
参照
- https://mailman.archlinux.org/pipermail/aur-general/2014-January/026720.html
- https://projects.archlinux.org/aur.git/tree/web/html/pkgsubmit.php, the code that reads the “.AURINFO” file.