情報が散ってて若干戸惑ったのでメモ。(自分の検索能力が低いだけ)
リンク
以下のリンクの内容を読めば,この記事の残りの部分を読む必要は無い。
- 基本
- 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(らしい)。
(更新) 以下の手順は次のコマンドで置き換えられる。 すっかり紹介した気になっていたのだが,よく見るとしてなかった。
# eselect repository create hoge
詳細: https://wiki.gentoo.org/wiki/Creating_an_ebuild_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
等を適当に編集する。
編集しなくても良い。
自前のプロファイルを生やす予定のある人は,以下のように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)に置いて運用している。