私たちの開発環境はFreeBSD 10.3です。 FreeBSDは、基本パッケージが依存するすべてのパッケージの最新バージョンを常に見つける方法でパッケージの依存関係を管理していると聞きました。これは本当のようです。だから私の質問は次のとおりです。
- これは本当ですか?これを証明できる公式文書はありますか?
- この問題を克服する最良の方法は何ですか?
答え1
FreeBSDがパッケージをビルドする方法
配布用にのみパッケージを構築するために使用されるFreeBSDプロジェクトで、時にはSTABLEブランチ用に使用されます。以前のパッケージビルダーはPortbuildという分散システムを使用していました。パッケージを構築するには、より小さな2GB-4GBシステムを使用します。これはエラーが発生しやすく、遅くなります。主に古いシステムが原因です。完全なビルドにはまだ1週間かかることがあります。今日の包装は、Poudriereを使用する単一の大型機械を使用して製造されています。 (からブライアンドリューアーリーのウェブページ)。
また見なさい:FreeBSDでパッケージとポートの組み合わせを更新する方法
SolarisやWindowsと同様に、FreeBSDには進化するABI(およびAPI)がありますが、Linuxには安定した(停滞した)ABI(およびAPI)があるため、Linuxでは古いバイナリは最新のOSバージョンで実行され続けますが、そうではありません。 Linux以外のオペレーティングシステム用。必ずしもそうではありません(時々そうです)。
使ってもpkg lock
大丈夫です頭痛を引き起こす、それでもロックする(警告の提供)これを使用してアップグレードしようとすると、pkg upgrade
まだ親バージョンが適用されると推定されます。より良いもの(理想的)そしてそれはあなたがやりたいことです - それであなたが許可する権限を要求しますが、他のものが壊れないという保証はありません。上記のURLまたは次の議論をご覧ください。 」FreeBSDがpkg経由で配布されているオペレーティングシステムのバージョンのバイナリパッケージのバージョンをロックしたいですか?」。
パッケージがロックされている場合時々ロック解除およびアップグレード権限を付与する必要があります。働くパッケージ(およびすべての依存関係)の場合、他のものが新しいライブラリと互換性がないという保証はありません(したがってアップグレードも必要です)。もし現在1つのみ利用可能です。)
Brian Druryのブログ: "FreeBSDジャーナル:Poudriere「考える:
「サーバーでportmaster、portupgrade、およびポートを無効にしてパッケージに切り替えます。
Poudriereを使用して独自のパッケージビルドを設定するには数分しかかからず、今後の時間を節約できます。
...
複数のFreeBSDシステムを維持し、まだパッケージを使用していない場合は、そうする必要があります。私は20台のサーバーしか保守していませんが、各システムにポートを構築するのに時間がかかり、生産システムのリソースが無駄になります。複数のサーバーにポートを構築すると、オプションやバージョンが同期されなくなります。 1つのシステムでパッケージを一度構築することで、システムの負荷を軽減し、必要な作業量を削減し、すべてのシステムの一貫性を維持します。すべてのシステムで同じエラーを処理する必要はなく、ビルドシステムでのみ処理できます。
しかし、...
なぜ公式パッケージから抜け出すのですか?ポートフレームワークは、ビルド時間構成を変更するためのポートのオプションサポートを提供します。すべてのアプリケーションがランタイム構成をサポートしているわけではありません。一部のアプリケーションは、有効になっている機能によって異なるようにコンパイルする必要があります。他の人は単にデフォルトポートの機能と依存関係の数を減らすことを選択するかもしれません。サーバー管理者は、特定の基本パッケージが要件を満たしていないことをすばやく見つけることができます。
だから...
カスタムパッケージを入手する方法はいくつかあります。 Pkgは複数のストレージの使用をサポートしています。公式のFreeBSDリポジトリをプライマリリポジトリとして使用し、カスタムリポジトリをセカンダリリポジトリとして有効にすることができます。 Pkgは追跡できるリポジトリの数に制限はなく、優先順位に従って並べ替えることができます。複数のリポジトリの問題は、現在のメンテナンスが難しいことです。 Pkgがインストールされているパッケージに追跡されているリポジトリとは異なるオプションまたは依存関係があることを検出すると、そのパッケージは可能なすべてのリモートバージョンから再インストールされます。 pkg lock PKGNAMEとpkg Unlock PKGNAMEを使用してアップグレード中にパッケージをロックするか、pkg annotate -A PKGNAMEリポジトリREPONAMEを使用して特定のリポジトリにバインドできます。 FreeBSDパッケージと同期されたカスタムストアのポートツリーを維持する方法に関する微妙な問題もあります。パッケージはポートツリーの毎週のスナップショットに基づいて構築されるため、カスタムリポジトリが一致しないと競合が発生する可能性があります。必要なオプションと必要なオプションを含む完全なパッケージセットを構築する方がはるかに簡単です。
解決策:
Poudriere(おおむねpoo-dree-yearと発音し、フランス語で「powder keg」を意味する)は、Tinderboxへのより迅速で簡単な代替手段として書かれています。 Pkgの著者であるBaptiste Daroussinによって書かれており、現在は私とBaptisteと他の貢献者によって主に管理されています。これはすぐに事実上のFreeBSDポートテストとパッケージ構築ツールになりました。クラスター構築のための公式ツールです。テスト用FreeBSDポートプロジェクトいわゆる「exp-runs」でパッチをクリーンアップします。 POSIXシェルで書かれ、ゆっくりとCコンポーネントに移動しています。 Tinderboxとは異なり依存関係なし、データベース不要。高度に最適化されており、すべてのタスクが高度に並列化されています。刑務所を使用して、非常に厳しい条件のサンドボックス環境でポートを構築します。簡単な命令だけで刑務所を一度作ってみてください。ビルドプロセス中に使用された各CPUに対して、刑務所が自動的に複製され、ポートにクリーンなビルドスペースを提供します。 」
独自のストレージ設定フードリーポートの柔軟性と簡単なパッケージ管理を提供します。