切腹のイラスト

<!-- 註: このサイトはまだ工事中です -->

GentooのOverlay入門

{
  date: "",
  update: "",
}

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

リンク

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

作ってみる

初期化

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

(更新) 以下の手順は次のコマンドで置き換えられる。 すっかり紹介した気になっていたのだが,よく見るとしてなかった。

# eselect repository create hoge

詳細: https://wiki.gentoo.org/wiki/Creating_an_ebuild_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等を適当に編集する。 編集しなくても良い。
自前のプロファイルを生やす予定のある人は,以下のようにprofile-formatsの行を設定すると良い。 thin-manifestsを設定しておくと,Manifestファイルにebuildのハッシュが載らなくなる。

masters = gentoo
profile-formats = portage-2

thin-manifests = true

詳細: https://wiki.gentoo.org/wiki/Profile_(Portage)

ebuildを書く

書く。

また,必要に応じてWikiを参考にmetadata.xmlを作成する。 GitHubからソースのアーカイブを落としてくるなら<upstream><remote-id type="github">を, ebuildでUSEフラグを利用するなら<use><flag>をを記述しておいた方がいい。 していないと,pkgcheckしたときに怒られる。

% 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 -f

このコマンドは,オプションに何も指定しなければ$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)に置いて運用している。