Gentooをお使いの方なら、誰もが一度は使ったことがあるoverlayですが、個人的にこんなとき困ったりします。

  1. 他人様のoverlayに欲しいebuildを見つけたが、自分の環境では修正する必要があったので修正したebuildを使いたい
  2. 他人様のoverlayに欲しいebuildを見つけたが、それ以外は邪魔(おい
  3. Gentoo Bugzillaによく投稿されているbuild出来ない系エラーのworkaroundを適用したebuildを使いたい
  4. 自分でebuild書きたい

まぁどれもebuild自分で管理する必要が出てきますよねって話で、せっかくだからoverlay作っちゃおう。そしてlaymanで管理しちゃえば毎回ebuild何処置いたっけなとかlocal overlay毎回設定しなくてもlaymanでいいなとか、そんなことを思ってやってみたメモ。間違ってるぞのツッコミは常時受付中ですw

大まかな手順はこんな感じでしょうか。

  1. オレオレoverlayを作成する
  2. laymanで管理できるようにする
  3. 使ってみる

大まか過ぎるだろw

ではやってみます(ぉ

1. オレオレoverlayを作成する

とりあえず、overlayやlaymanの使い方はちゃんと読んでね。

Gentoo Overlays: Users' Guide

https://www.gentoo.org/proj/en/overlays/userguide.xml

まずはローカルでportageのディレクトリ構造を作ります。/usr/portageの下を覗けばわかりますが、portageはソフトウェアごとにいろいろなジャンルにカテゴライズされてますので、新しいカテゴリをローカルで定義する必要はないとは思います。

ここでは進化著しいQtベースの日本語インプットメソッドqimsysのebuildを登録するつもりで進めていきます。他の日本語インプットメソッドの例に倣って"app-i18n"にカテゴライズすることにしました。あと、portageツリー上いろいろな制御ファイルとか置くことになるprofilesディレクトリも作成しておきます。必須ではなさそうですが。

mkdir -p ~/kenya888s-overlay/app-i18n/qimsys
mkdir -p ~/kenya888s-overlay/profiles

この設定は多分要らない(ローカルでlaymanを使用しないときにあるとよい)のだとは思いますが、このoverlayの名前をprofiles/repo_nameに記載しておきます。

echo "kenya888s-overlay" >> ~/kenya888s-overlay/profiles/repo_name

ebuildファイルをqimsysディレクトリに置きます。

cp qimsys-9999.ebuild ~/kenya888s-overlay/app-i18n/qimsys/

次にebuildに対するmetadata.xmlを作成します。なくても一応動くようですが、Gentoo Handbookには絶対いるんじゃボケと書いてあるので書くことにします。詳しくは以下参照。

4. Gentoo Metadata -Gentoo Handbook

https://www.gentoo.org/proj/en/devrel/handbook/handbook.xml?part=2&chap=4

スケルトンは/usr/portage/skel.metadata.xmlにあるので、こいつをベースに作るか、もしくは似たようなカテゴリのソフトウェアのmetadata.xmlを拝借して編集するのがよいと思います。自分はibusのmetadata.xmlを参考にしました。ありがとうございます某m先生。

というわけで、metadata.xmlをqimsysディレクトリに置いたら、ebuild コマンドでdigestサブコマンドを実行し、Manifestファイルを作ります。もしqimsysディレクトリに他のファイル(files/パッチ)などをおく必要がある場合は、それらを全部配置してから実行します。

ebuild qimsys-9999.ebuild digest

そうすると同じディレクトリにManifestファイルが作成されます。

あとおまけで、qimsysパッケージはversion 9999ということで、慣例的にgitなどから最新コードを追いかけるためのバージョンとしているため、念のためmaskをかけておくことにします。profilesディレクトリにpackage.maskを書きます。

echo "=app-i18n/qimsys-9999" >> ~/kenya888s-overlay/profiles/package.mask

これでとりあえずオレオレローカルportage treeはできました。PORTDIR_OVERLAYに追加するなどして、ちゃんと動くかテストしてみるのがよいでしょう。

2. laymanで管理できるようにする

次はlaymanで管理できるようにするための作業です。

laymanで管理するためには、overlayの情報をoverlays.xmlファイル(名前は何でもよいと思いますが)に記述して、ファイルの場所を/etc/layman/layman.cfgに記載するか、laymanのオプションでoverlays.xmlファイルを指定する必要があります。overlays.xmlの書き方は以下のlaymanのサイトが参考になります。あと私の書いたoverlays.xmlは下のほうにリンクがありますので見たい人はどうぞ。

layman

https://layman.sourceforge.net/#layman-global

すべてローカルで済ましてもよいのですが、今回は毎回Gentooをセットアップするときに簡単に使えるようにしようねという理由ですので、overlayのツリー全部と、overlay.xmlはリモートに置くことにします。

リモートに作成したoverlayのツリーを置く場合、それを何からの方法で変更差分も含め取得できるようにしなければなりません。git, subversion, Mercurial, rsyncなどが使われているようです。自分はGitoriousにリポジトリを作成し、そこにpushしました。これで、

git://gitorious.org/kenya888s-overlay/kenya888s-overlay.git

というURIを使ってgitでソースを取得できるようになります。もちろんgithubを使ったりsf.jpを使ったり、自宅のLAN内にrsyncサーバーを立てたりしてもよいでしょう。

overlay.xmlもこれもリモートから取得できるようにします。先ほどのtreeの実体と同じ場所にある必要はありませんが、まぁ同じでもいいでしょう。自分は同じところに置いておきました。Gitoriousの同じリポジトリに置いた場合、URLとしてはこんな感じになります。 (06/11/2011 fixed) https://gitorious.org/kenya888s-overlay/kenya888s-overlay/blobs/raw/master/overlays.xml

あとはこのURLを/etc/layman/layman.cfgに追加します。overlaysというエントリにはgentooオフィシャルのxmlが書いてあると思いますが、そこに追記します。

overlays:   https://www.gentoo.org/proj/en/overlays/repositories.xml
https://gitorious.org/kenya888s-overlay/kenya888s-overlay/blobs/raw/master/overlays.xml

あとはlaymanでリポジトリが追加されたか確認して、そのリポジトリを追加しましょう。eix-syncなんかを使ってメタデータ情報を更新しておくのが吉ですね。

layman -L | grep kenya888
layman -a kenya888s-overlay
emerge --metadata
eix-sync

3. 使ってみる

ふつーにeixやemergeコマンドでパッケージが引いてこれればOKです。簡単ですね。

eix qimsys
emerge -pv qimsys

というわけでメモ終わり。私のoverlayはGitoriousで公開されていますので、qimsysをGentooで使いたいかたはお試しください。責任は取りませんがw