FreeBSD .pkgの推奨および代替依存関係

FreeBSD .pkgの推奨および代替依存関係

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パイプラインの一部として実行したりするには、次の点を見てください。フーディエこれは公式リポジトリで使用するのと同じビルドツールです。

関連情報