Arch Linux には AUR と呼ばれるリポジトリに管理されるパッケージ群があります。 今回少し自分でパッケージを作るということに興味があったので、リポジトリ、特に AUR について整理しました。

  1. 公式リポジトリ
  2. AUR
  3. PKGBUILD ファイル
  4. yaourt を使用したインストール

1. 公式リポジトリ

Arch Linux には 公式リポジトリ と呼ばれる種類のリポジトリがあります。 これらのリポジトリに含まれるパッケージは Arch Linux の開発者や Tructed User と呼ばれる人達によって管理されているという意味で公式なものとされています。

主要な公式リポジトリとして以下のようなものがあります。

  • core
    • 文字通り Arch Linux のコアとなるようなパッケージが集まる
      • linux, make, openssh, etc.
    • かなり厳しい品質要求のもとに管理されている
  • extra
    • core にあてはまらない全てのパッケージが集まる
    • Xorg, python, etc.
    • Arch Linux としての最低限は core で済むけど、実用上必要になるようなものはこちら、という住み分け?
  • community
    • AUR から Trusted User によって十分な投票が得られたパッケージが集まる

2. AUR

AUR (Arch User Repository) は Arch Linux ユーザが主体となって管理しているリポジトリです。 Arch Linux では PKGBUILD と呼ばれるスクリプトがパッケージを作成するときに使用されますが、AUR にはユーザが作成した様々なソフトウェアのための PKGBUILD が管理されています。

公式のリポジトリではないため、AUR のパッケージをインストールするときにはその内容を知った上でインストールするべきです。

3. PKGBUILD ファイル

PKGBUILD ファイルは自分で一から書くこともできますが、ここでは既にリポジトリに存在する ttf-mona というパッケージを PKGBUILD から自分でインストールしてみたいと思います。 ttf-mona は aur レポジトリで管理されているフォントファイルです。

$ yaourt -Ss ttf-mona
aur/ttf-mona 2.90-1 (37) (0.12)
    A Japanese proportional font which allows you to view Japanese text arts correctly

PKGBUILD から新しくパッケージをインストールする手順は以下のようになります。

  • PKGBUILD の作成 or 入手
  • makepkg によるパッケージング
  • pacman によるインストール

リポジトリで管理されているパッケージの PKGBUILD は以下のコマンドで入手できます。

$ yaourt -G ttf-mona

ttf-mona の PKGBUILD の中身は以下のようになっています (2017-07-08 現在)。

# Contributor: Olivier Duclos <olivier.duclos gmail.com>
# Contributor: Matthew Longley <[email protected]>

pkgname=ttf-mona
pkgver=2.90
pkgrel=1
pkgdesc="A Japanese proportional font which allows you to view Japanese text arts correctly."
arch=('i686' 'x86_64')
license=('custom')
url="http://monafont.sourceforge.net/"
depends=('fontconfig' 'xorg-fonts-encodings' 'xorg-font-utils')
makedepends=('unzip')
install=ttf.install
source=(http://downloads.sourceforge.net/monafont/monafont-ttf-${pkgver}.zip license.txt)
md5sums=('fa952f01f0187664aaca5d3e259197d3'
         'b98e405f9b27aba83c32ff42a2fdf3e4')

package() {
  cd $srcdir
  mkdir -p $pkgdir/usr/share/fonts/TTF
  install -m644 mona.ttf $pkgdir/usr/share/fonts/TTF/
  mkdir -p $pkgdir/usr/share/licenses/custom/${pkgname}
  install -m644 license.txt $pkgdir/usr/share/licenses/custom/${pkgname}/license.txt
}

詳細は読み方は PKGBUILD を参考ですが、使用する上で特に目を通したいのは以下の項目かなと思います。

  • pkgname
    • パッケージ名
  • pkgver
    • パッケージのバージョン
  • depends
    • このパッケージが依存しているパッケージのリスト
  • makedepends
    • ビルドするために必要だが、インストール後には不要なパッケージのリスト
  • install
    • パッケージに含まれるスクリプト名
    • パッケージの install, update, remove 時の処理を書くことができる
  • source
    • パッケージをビルドするのに必要なファイルのリスト
  • build()
    • パッケージのビルド処理
    • make するとか
  • package()
    • パッケージのインストール処理
    • mkdir したり install したり

PKGBUILD に問題が無ければ、makepkg でビルドします。

$ makepkg -s

ビルドしたパッケージを pacman でインストールします。

$ pacman -U ttf-mona-2.90-1-x86_64.pkg.tar.xz

このように公式リポジトリ以外からインストールしたパッケージは pacman -Qm により確認できます。

$ pacman -Qm | grep ttf-mona
ttf-mona 2.90-1

4. yaourt を使用したインストール

上の手順では PKGBUILD を入手してそこから pacman によるインストールを手動で行いましたが、yaourt を使用すれば AUR に存在するパッケージに関しても自動でインストールが行えるようになります。

yaourt では以下のコマンドを実行することでパッケージのインストールが行えます。 コマンドでは PKGBUILD や install で指定されたシェルスクリプトの確認、編集もインタラクティブに行うことができます。

$ yaourt -S ttf-mona

普段使いでは yaourt を使用するのが便利です。

参考