GentooのOverlay入門

情報が散ってて若干戸惑ったのでメモ.(自分の検索能力が低いだけ)

リンク

以下のリンクの内容を読めば,この記事の残りの部分を読む必要は無い.

作ってみる

今回はapp-eselect/eselect-repositoryを前提に話を進める. Laymanを使った方法もあるが,時代はeselect-repository(らしい).

まず,目的のディレクトリにmetadataprofilesというディレクトリを掘る. そしてprofiles/repo_nameにリポジトリ名を,meta/layout.confmasters = gentooを書けばGentooオーバーレイの完成. ちなみにこの2つのファイルは両方必須なので,忘れずに作成する.

以下に,コマンドの一例を示す.

% mkdir /path/to/repo && cd /path/to/repo
% mkdir metadata profiles
% echo "hoge" > profiles/repo_name
% echo "masters = gentoo" > metadata/layout.conf

Wikiを参照に,metadata/layout.conf等を適当に編集する. 編集しなくても良い.

次に,ebuildを書く.
このとき,(Wikiを参考に)metadata.xmlを作成する. これはパッケージ毎に必須なので,忘れずに作成する.

% mkdir -p hoge-category/fuga
% vim hoge-category/fuga/fuga-1.2.3.ebuild
% vim hoge-category/fuga/metadata.xml

最後に,Manifestというファイルを作成する. 内容を見て察せられる通り,これはリポジトリを編集する度に更新する必要がある.
ここで,いちいちebuild hogehoge manifestを呼び出すのは面倒なので,dev-util/pkgdevを使う. 前まではrepomanというツールも使えていたのだが,現在では廃止されているようだ.

% pkgdev manifest

このコマンドは,オプションに何も指定しなければ$DISTDIR(デフォルトでは/var/cache/distdir)にダウンロードキャッシュを置こうとする. 一般ユーザー権限しか使えない環境にある人は,-d hoge(または--distdir hoge)オプションでキャッシュの保存先を変更することができる.

これで完成. 後は煮るなり焼くなりVCSで管理するなりWebに公開するなりすれば良い.

使い方

とりあえずGitHubで公開・使用する方法を紹介する. あくまでも一例なので参考程度に.

公開する

先程までの説明を基に,ebuildリポジトリを作成する. 作成したらpushする.

% pkgcheck scan

とすればリポジトリ内のまずいところを教えてくれる.

使用する

# eselect repository add hoge git https://github.com/hoge/fuga.git
# emerge --sync hoge

これだけ.
emerge --sync hogeの部分でemaint sync -r hogeとする記事もあるが,どうせやる事は一緒なので覚えやすい方を使うと良い.

プライベートリポジトリで使用する

調べましたが,わかりませんでした!いかがでしたか?

一応,Wikiにヒントが載ってそうではある. また,2022年8月現在ではここらへん(/usr/lib/python3.10/site-packages/portage/sync/modules/git/git.py)のファイルにそれっぽい内容が確認できる.

蛇足

用語の知識さえあれば簡単に作れることがわかった. Gentooはそのエコシステムに魅力があるので,ローカルでmake installなんかしてないで是非ツールを活用して欲しい.

自分は個人用のものをGitHub(yamader/overlay)に置いて運用している.