
FreeBSD パッケージでは通常、マニフェスト内で依存関係を次のように指定します。
deps:
# python39, version 3.9 or higher
python39: {origin: lang/python39, version: 3.9}
# bind-tools, any version
bind-tools: {origin: dns/bind-tools}
これにより、パッケージ マネージャーは、必要なバージョンの両方の依存関係が存在するかどうかを確認し、依存関係がない場合は依存関係を追加するか、依存関係を無視するように指示されない限りエラーで中止します。
一方、Linux 上の Debian スタイルのパッケージ (.deb) は、次のような機能を提供します。
- 推奨事項: これらは、ソフトウェアの特定の機能のみが推奨としてリストされているパッケージに依存していることをパッケージ マネージャーに示します (依存関係が欠落している場合、パッケージはほとんど役に立ちません)。パッケージ マネージャーの構成に応じて、推奨事項を依存関係として扱うことも、推奨事項なしでパッケージをインストールすることもできます。
- 代替案: たとえば、パッケージは に依存する場合があります
curl | wget
。この場合、どちらかのパッケージのみが存在することで、その特定の依存関係が満たされます。これは、ソフトウェアが実行時に 2 つのうちどちらがインストールされているかを検出し、利用可能なパッケージで動作するためです。
.pkg はこれらの機能も提供しますか? これらはマニフェストでどのように指定されますか?
答え1
FreeBSDパッケージはバイナリパッケージです(パッケージ(7)理論的にはボトムアップバイナリパッケージを作成することもできますが、それは非常に珍しいことです。ポート(7)ソースベースの「ポート」を作成し、これをパッケージの元として使用します。バイナリ ソースしかない場合でも同様です。
これは、FreeBSD ポーターのハンドブック。
必要に応じて、独自のローカルパッケージを作成することもできます。バニラFreeBSDシステムをお持ちの場合は、バイナリパッケージはデフォルトのFreeBSDリポジトリからインストールされます。これらのパッケージはすべて、デフォルト設定オプション。
コマンドラインツールを使用することもできますが、簡単なショートカットはブラウズすることです。フレッシュポート見てみるとバインドツール次のデフォルトが表示されます。
===> The following configuration options are available for bind-tools-9.18.24:
FIXED_RRSET=off: Enable fixed rrset ordering
IDN=on: International Domain Names support
JSON=on: JSON file/format/parser support
LARGE_FILE=off: 64-bit file support
====> GSSAPI Security API support: you have to select exactly one of them
GSSAPI_BASE=off: Using Heimdal in base (nsupdate is broken)
GSSAPI_HEIMDAL=off: Using security/heimdal (nsupdate is broken)
GSSAPI_MIT=off: Using security/krb5
GSSAPI_NONE=on: Disable
===> Use 'make config' to modify these settings
したがって、ポートをローカルでビルドする場合は、 を使用してこれらの設定を変更できますmake config
。ローカルでのみ使用したい場合は、 を実行できますmake install
。ただし、このバリアントのバイナリ パッケージが必要な場合は、 を実行するだけですmake package
。
最初から移植/パッケージ化を行う場合は、設定方法を確認してください。メイクファイルオプションこれらはラジオボタンの選択肢としてグループ化することもできることに注意してください (上記の GSSAPI の場合と同様)。
歴史的にあなたはスレーブポート不変条件を扱うために。しかし、より現代的なアプローチでは、フレーバーこれは特に、パイソンしかし、バージョン選択できるだけ。
アーキテクチャは Debian とは異なります。いわゆる「推奨事項」はありません。最小限の実行可能なパッケージを作成し、オプションを使用してポートで任意の依存関係を選択できるようにします。「代替」は、ポートでオプションを使用して再び処理されます。例では、ラジオ グループを使用して、 または のいずれかを許可しますcurl
。wget
これをバイナリ パッケージに反映するには、フレーバーを作成します。
独自のリポジトリを作成したい場合、またはCIパイプラインの一部としてこれを実行する場合は、以下を参照してください。プーディエールこれは公式リポジトリで使用されるものと同じビルド ツールです。