GentooのOverlay入門
情報が散ってて若干戸惑ったのでメモ.(自分の検索能力が低いだけ)
リンク
以下のリンクの内容を読めば,この記事の残りの部分を読む必要は無い.
- 基本
- https://wiki.gentoo.org/wiki/Eselect/Repository : (Wiki)
eselect-repository
について - https://wiki.gentoo.org/wiki/Pkgdev : (Wiki)
pkgdev
について - https://wiki.gentoo.org/wiki/Ebuild_repository : (Wiki) リポジトリについて
- https://wiki.gentoo.org/wiki/Creating_an_ebuild_repository : (Wiki) リポジトリの作成
- https://devmanual.gentoo.org/ebuild-writing/misc-files/metadata/ :
metadata.xml
について
- https://wiki.gentoo.org/wiki/Eselect/Repository : (Wiki)
- Ebuild / EAPI
- https://devmanual.gentoo.org/quickstart/ : Ebuildクイックスタート
- https://wiki.gentoo.org/wiki/Basic_guide_to_write_Gentoo_Ebuilds : (Wiki) Ebuild執筆の基本
- https://devmanual.gentoo.org/general-concepts/dependencies/ : パッケージの依存関係について
- https://devmanual.gentoo.org/ebuild-writing/eapi/ : EAPIについて
- https://devmanual.gentoo.org/ebuild-writing/variables/ : 使える変数
- https://wiki.gentoo.org/wiki/Eclass : (Wiki) Eclassについて
- https://devmanual.gentoo.org/eclass-reference/ : 各Eclassの詳細
- おまけ
- https://wiki.gentoo.org/wiki/Repository_format/metadata/layout.conf : (Wiki)
layout.conf
について - https://devmanual.gentoo.org/general-concepts/manifest/ :
Manifest
について - https://devmanual.gentoo.org/general-concepts/slotting/ : Slottingについて
- https://devmanual.gentoo.org/general-concepts/sandbox/ : Sandboxについて
- https://wiki.gentoo.org/wiki/Repository_format/metadata/layout.conf : (Wiki)
作ってみる
今回はapp-eselect/eselect-repository
を前提に話を進める. Laymanを使った方法もあるが,時代はeselect-repository(らしい).
まず,目的のディレクトリにmetadata
とprofiles
というディレクトリを掘る. そしてprofiles/repo_name
にリポジトリ名を,meta/layout.conf
にmasters = 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)に置いて運用している.