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と同様に、ラジオオプションにグループ化することもできます。
一般的な共有依存関係は通常、次のように処理されます。マクロの使用例えばPython。
歴史的にあなたはそうしましたスレーブポート不変性を処理します。しかし、より近代的なアプローチは味。これは、特に以下で一般的です。Pythonしかし、覚えておいてください。バージョンを選択できるだけたくさん。
アーキテクチャはDebianとは異なります。そのような「アドバイス」はありません。少なくとも実行可能パッケージを作成し、オプションを使用してポートでオプションの依存関係を選択することをお勧めします。 「代替」は、再びポートのオプションによって処理される。その後、あなたの例ではラジオグループを使用してcurl
またはを許可しますwget
。これがバイナリパッケージに反映されるには、フレーバーを作成する必要があります。
独自のリポジトリを作成したり、CIパイプラインの一部として実行したりするには、次の点を見てください。フーディエこれは公式リポジトリで使用するのと同じビルドツールです。