web-dev-qa-db-ja.com

aptitudeとCPAN / Gems / PyPIのどちらでパッケージを使用するのですか?

公式からパッケージをインストールするときの一般的なルールは何ですか.debリポジトリと、言語のパッケージマネージャを使用してインストールする場合の違い上流のリポジトリにあるものは、少なくともわずかに古くなっていることが多いですが、パッケージを「公式」のものと衝突させたくないので、aptitudeが公式のインストールを強制するようですとにかく多くの場合のもの。

5

これは一般的に答えるのが難しい質問です。

公式の.debパッケージは、Ubuntuコミュニティによる安定性と完全なサポートを提供します。最新バージョンが必要ない場合は、このソリューションの方がよいでしょう。また、更新、削除などのパッケージマネージャーサポートもあります。

アップストリームからのサポートが必要な場合、または最新の機能が必要な場合は、CPAN、gem、pearなどのディストリビューションシステムから取得することをお勧めします。

6
txwikinger

私の(確かに非ヴァスト)エクスペリエンスでは、言語固有のパッケージマネージャーは、完全にoutside言語の境界である依存関係を追跡することにおいて、.debのものほどうまく機能しません。 (特に、Python、Perl、Rubyなどで使用するためにパッケージがラップするCコードライブラリへの依存関係を考えています)。

(たとえば)Pypi Pythonパッケージ'barfoo'は、_bf.so Python拡張機能をビルドするためにライブラリlibfoobarを必要としますlibfoobarを使用しており、少なくともリリース5.2である必要があります。どの.deblibfoobarの適切なリリースを提供しているかを追跡するのはあなた次第です(Pypiパッケージがクローズを追跡している場合は、リリースが見つからない可能性がありますアップストリームの最新かつ最高のものへ)-そして、barfooを後でアンインストールする場合に備えて、どういうわけかそれを追跡します(そのため、libfoobarサプライヤーは、「孤立」し、削除される可能性があります/削除する必要があります)。

Pypi/CPAN/etcを他のパッケージ配布システムと統合する問題は、まだ「解決済み」の問題と見なすことはできないと思います。最小限の管理上の問題で、公式の.debを使用して問題を解決できる場合(最新かつ最大の料金は必要ありません&c)、それがお勧めです。もちろん、もう一方の極端な例では、パッケージについてdoスーパーアップデートを希望します(たとえば、あなたはパッケージの上流の作者/メンテナの1人です;-)、維持するオプションがあります。パッケージが使用するバージョン管理システム(svn、hg、git、Bazaarなど)の新しいリポジトリと、ソースからビルドした状態を維持します。 Pypi/CPAN /&cは「中間」にあります。確かに、この中間の方法も時々お勧めです。

また、考えられる1つのオプションは、独自の.debパッケージを(Pypi/CPAN /&cパッケージ、または上流ソースに基づいて)ビルドし、そのようなパッケージのリポジトリを維持することです(これらのパッケージの場合)公式の.debリポジトリが不十分であるか、逆方向であることがわかります)。それ以外の方法(言語外の依存関係を手動で追跡)でインストールするよりも問題は多くなく、「孤立したパッケージ」などを特定するのに役立ちます(さらに、パッケージを公開すると、他の人を助けることもできます;-)。

5
Alex Martelli

Aptitudeを使用して別のパッケージマネージャーからパッケージを管理することに本当に反対しています。 CPAN、Gems、Pecl、Pearなどは、それぞれの言語のパッケージマネージャーです。それらは、あなたがデフォルトにすべきものです-私の意見では-それが彼らのために設計されたものだからです。言うまでもなく、それらのほとんどすべてがアップグレードと更新を処理します(gem update、gem upgradeなど)。これは、yumを使用してUbuntuマシンにApacheをインストールするようなものです。

とは言っても、Aptitudeバージョンが最高の時代を支配している場合がいくつかあります。その1つは、言語パッケージマネージャーからのモジュールのインストールが失敗した場合です(これは通常、さまざまな構成の問題が原因です)。この問題に遭遇することはめったにありません。

私の意見では優先順位言語パッケージマネージャー> Aptitude。

1
Marco Ceppi