AUR Metadata (日本語) - ArchWiki

# AUR Metadata (日本語)

関連記事

- Arch User Repository
- PKGBUILD
- makepkg
- pacman

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` ファイルを生成し、作成されたソースパッケージにそれを挿入するスクリプトです。

Tip: `mkaurball` は `makepkg --source` のラッパーです。AUR に投稿するソースパッケージを作成する際は、`makepkg --source` を直接実行する代わりに `mkaurball` を使って下さい。

公式リポジトリから 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.

Category:

- Package development (日本語)