it-swarm-ja.com

FreeBSDポートツリーへのローカルパッチを管理する方法は?

FreeBSDポートツリーでローカルパッチを管理するための好ましい方法は何ですか。例として、textproc/urlviewを見てください。このポートは、url_handler.shスクリプトをインストールします。このスクリプトは、さまざまなURLタイプに使用されるアプリケーションを定義します。デフォルトのアプリケーションが私のシステムと一致しません。

じゃあ何をすればいいの?私は過去に2つのかなり不満足な方法を使用しました:

  1. Vanillaポートをビルドしてインストールし、 `/ usr/local/bin/url_handler.sh`を直接編集します。これは、チェックサムが変更されたため、インストールされたポートの削除を台無しにします。これは、 `/ var/db/pkg`内のファイルを直接いじることで回避できますが、それは可能な限りハックです。
  2. `/ usr/ports/textproc/urlview/files`にパッチファイルを作成し、それに応じて` patch`フェーズでスクリプトにパッチを適用します。ただし、 `portsnap`を使用している場合、ポートツリーを更新する前にディレクトリが完全に消去されるため、これは失敗します。

こういうことはどうやってやってるの?

5
tatt

オプション2と言いますが、スクリプトを使用してパッチをコピーします。スクリプトは、手順を文書化するのに役立ちます。これは、1年前に戻って、何をしたかを理解しようとするときに非常に役立ちます。

ディレクトリ構造をportsツリーに「オーバーレイ」するような凝ったものを書くこともできますが、単純な方が良いと思います。

#/bin/sh
PORTSTREE="/usr/ports"
MYPATCHDIR="/wherever/you/put/these"

# my textproc/urlview patch
cp ${MYPATCHDIR}/myurlview.patch ${PORTSTREE}/textproc/urlview/files

これで、すべての変更を1つのファイルにリストし、すべてのパッチを1つのディレクトリに置くことができます。新しいportsツリーをportsnapまたは(現在)svnした後、スクリプトを実行します。

2
Dave Hayes

オプション2。特定のポートへのパッチがいくつかあります。新しいバージョンがある場合は、ポートツリーを更新してから、変更したパッチをコピーし、手動で「make patch」を実行して、パッチが正常に適用されるかどうかを確認します。次に、「make」を実行してビルドするかどうかを確認します。

2
jyap

Gitリポジトリ( https://github.com/freebsd/freebsd-ports.git )を使い始めてから、必要な変更を加えたローカルブランチを作成しました。また、ポートツリーで使用できない独自のポートを作成するときにもこれを使用します。

2
Peter