🐥

NetBSD pkgsrc-wip を使う

2021/05/24に公開約2,900字

pkgsrc-wip とはなんぞや

The pkgsrc-wip project

What is pkgsrc-wip?
pkgsrc-wip (work in progress) is a project to get more people actively involved with creating packages for pkgsrc, a portable packaging system coming from NetBSD.

パッケージが pkgsrc ( NetBSD 標準のパッケージマネージャ )に取り込まれる前の作業リポジトリです。

本家 pkgsrc と違い、 wip なので誰でも軽率にアクセス権を貰えてパッケージを追加できます。

また、本家 pkgsrc に取り込まれる前に pkgsrc-wip でパッケージを洗練させ( lint のエラーや警告を無くしたり ) その後 本家 pkgsrc に send-pr する、という作業手順が推奨されているようです( 要出典 )

ユーザーとして使う

pkgsrc-wip とはいえ中身は pkgsrc と同じなので、 pkgsrc のパッケージと同じように管理します。

慣習として wip は /usr/pkgsrc/wip に設置します。パッケージは wip/<パッケージ> という PATH にあります。 本家 pkgsrc のパッケージは /usr/pkgsrc/<カテゴリ>/<パッケージ> という PATH にありますが、 pkgsrc-wip は wip/ の 直下にパッケージがあります。

では実際に使ってみます。

git clone で取得します。

% cd /usr/pkgsrc/
% git clone git://wip.pkgsrc.org/pkgsrc-wip.git wip

あとは普通に make します。これだけです。

% cd wip/<パッケージ>
% make install 

開発者として使う

パッケージを pkgsrc-wip に追加したくなったら pkgsrc-wip へのコミット権を申請します。

コミット権を申請する

pkgsrc-wip は git で管理されているので、リポジトリにアクセスできるようにコミット権を貰います。 手順は The pkgsrc-wip project -- committer access にあるとおりです。 鍵を生成し、 公開鍵を Thomas Klausner へ送付れば OK です。

「○○というパッケージを pkgsrc-wip に追加したいんだけど」等と書いてメールを送ると Thomas から「いいよ!バシバシやってくれよ!」といった返事とともに、割りと気軽にコミット権をくれます。

作業

git の操作については上記ページに書いてあるとおりにやります。

開発者ユーザーを wip/.git/config に書いておきます。

[remote "origin"]
        url = <username>@wip.pkgsrc.org:/pkgsrc-wip.git

ここではホームディレクトリに pkgsrc-wip を clone して git の作業し、 make は /usr/pkgsrc/wip でおこなう、ということとします。( たんに /usr/pkgsrc/wip で git 作業する手段を見つけてないだけです。こうしないといけないわけではありません )

上記のような場合は union mount しておくと便利です。

% cd ~/
% git clone <username>@wip.pkgsrc.org:/pkgsrc-wip.git wip
% sudo mkdir /usr/pkgsrc/wip
% sudo mount_union /home/rin/wip /usr/pkgsrc/wip

ビルドするときはいつも通りにこうします。

% cd /usr/pkgsrc/wip/<パッケージ>
% make install

パッケージを git 操作するときは ~/wip で作業します。 git の master ブランチで作業するのでガンガン push しましょう。

% cd ~/wip
% git add <パッケージ>/Makefile
% git commit
% git push

git pull したら差異があった場合

hint: You have divergent branches and need to specify how to reconcile them.
hint: You can do so by running one of the following commands sometime before
hint: your next pull:
hint:
hint:   git config pull.rebase false  # merge
hint:   git config pull.rebase true   # rebase
hint:   git config pull.ff only       # fast-forward only
hint:
hint: You can replace "git config" with "git config --global" to set a default
hint: preference for all repositories. You can also pass --rebase, --no-rebase,
hint: or --ff-only on the command line to override the configured default per
hint: invocation.

The pkgsrc-wip project -- committer access

If you find out that there were changes in between your last pull and the push, please rebase your changes.

ということで rebase を設定しておきます。

git config pull.rebase true

Discussion

ログインするとコメントできます