okayurisotto.net

私が好きでやったことが他の人のためにもなったらお得かも!

AURのパッケージが気に食わないので自分でPKGBUILDを書く

  1. 📝
  2. 🔄

はじめに

タイトル通り、Arch User Repositoryにあるパッケージが少々気に食わなかったので、自分でPKGBUILDファイルを作り、それを使ってソフトウェアをインストールすることにしました。

Arch Linuxにおけるパッケージ管理

Arch Linuxではpacmanというパッケージマネージャーを使ってパッケージを管理します。リポジトリとしては普通coreextracommunityの3種類が使われます。それらのリポジトリでは厳正な審査が行われています。

さて。Arch Linuxを使っていると、欲しいソフトウェアが公式リポジトリにはないという場面に遭遇することがあります。そういった場面で役に立つかもしれないのが、Arch User Repository、「AUR」です。AURでは、PKGBUILDというパッケージの作成のためのファイルが管理されています。ユーザーはAURにあるそのPKGBUILDファイルをダウンロードし、それを元にmakepkgコマンドを使ってパッケージ(*.pkg.tar.xz)を作成し、pacman -Uコマンドでインストールすることで、他のパッケージと同じ様に管理できます。AURヘルパーというものがありますがそれは、PKGBUILDのダウンロードとパッケージの作成と、依存を考慮したインストールと、その後のアップデートなどをうまく行ってくれるもののことです。

PKGBUILDについて

PKGBUILDファイルは、シェルスクリプトによってパッケージのインストール方法が書かれただけのシンプルなファイルです。変数にパッケージの情報を、関数にパッケージのインストールコマンドを書くと、それだけでもうパッケージが作成できるようになります。試しに適当なパッケージのPKGBUILDを見てみることをお勧めします。非常にシンプルで、事前知識なしでもある程度読めると思います。

例えば、noto-fonts-cjkのPKGBUILDは、変数を定義したりpackage関数を定義しただけのシェルスクリプトで、package関数でも特に難しいことはしていません。ただinstallコマンドやlnコマンドを使ってファイルを配置しているだけです。

AURの問題点

AURのPKGBUILDは、公式リポジトリのパッケージほど厳正に審査されているわけではありません。それゆえ、少しお行儀の悪いインストールをするパッケージというものが存在します。ここにその例を挙げるような真似はしませんが……まぁまぁな無法地帯です、とだけ言っておきましょう。

PKGBUILDを手書きする

気に食わないのであれば、自作してしまえばよいでしょう。PKGBUILDはシンプルですから、不可能ではありません。

(書いたPKGBUILDをここに載せようかと思いましたが、そうしてしまうとAUR版パッケージのメンテナの悪口を言うような形になってしまいそうなのでやめておくことにします。)

自作パッケージが同名のAURパッケージに上書きされないようにする

自作パッケージと同名のパッケージがAURにあり、そちらの方がバージョンが新しい場合、AURヘルパーは自作パッケージをAURパッケージで更新してしまいます。これを防ぐためには、ArchWikiにある通り、自作パッケージを自作グループに所属させ、そのグループにあるパッケージのアップデートは無視するようにpacmanを設定する必要があります。

おわりに

特に難しいことはないため解説は以上です。詳しくはArchWikiを読んでください。

参考