CPAN vs. APT: バージョンの競合?

CPAN vs. APT: バージョンの競合?

これに対する答えがどこにも見つかりません: APT 経由でインストールされたモジュールは、CPAN 経由でインストールされたモジュールと競合しますか?

その質問に加えて、次の質問もあります。インストールされた CPAN モジュールはどこに保存されますか? グローバルにアクセス可能か、それともインストールしたユーザーだけがアクセス可能か? どれがどれかはどうやってわかるのですか? 何がインストールされていて、どれが優先されるかはどうやってわかるのですか?

APT 経由でモジュールをインストールする場合でも CPAN を使用する必要がありますか?

答え1

Debian および Ubuntu では、CPAN (/usr/bin/cpanユーティリティ) は/usr/local/lib/デフォルトでモジュールを にインストールします。また、Debian パッケージはファイルを/usr/share/perl5/および に保存します/usr/lib/perl5/。そのため、 経由でインストールされたファイルは、/usr/bin/cpanapt 経由でインストールされたファイルを上書きしません。

システム perl を使用することには何の問題もありません。apt と cpan のコードを混在させても通常は動作します。

apt リポジトリで利用できない cpan ディストリビューションを手動でパッケージ化することもできます。dh-make-perl ツールを使えば簡単です:

dh-make-perl --cpan Some::Module && cd Some-Module* && sudo debi

答え2

私が使うパールブルーローカルバージョンの Perl と cpan をインストールします。すべての処理はホーム ディレクトリで実行されます。インストールと使用は簡単で、最新バージョンの Perl をインストールできます。

答え3

CPANから直接インストールする場合は、local::libを使用してプライベートディレクトリに保存することをお勧めします。boostrappingテクニックを参照してください。https://metacpan.org/module/local::lib

こうすることで、CPAN でインストールされたモジュールはユーザーのみが使用し、APT を使用してインストールされたモジュールとは非常に明確に分離されます。

また、問題が発生した場合や Ubuntu をアップグレードするときに、CPAN でインストールされたモジュールを簡単に削除できるようになります。

これが私がUbuntuで使用している方法です。

答え4

両方使用できますが、競合が発生します。これらは同じ場所に書き込まれるため、apt から何かをインストールしてから cpan から新しいバージョンをインストールすると、問題が発生する可能性があります。

私は Perl をあまり使いませんが、Python では、あなたがおっしゃっている apt と PyPI のジレンマに陥っています。私は個人的に、できる限り apt を選びます。つまり、個々の Python パッケージをメンテナンスする必要なく、アップデートを入手できるということです。それだけでなく、すべてのシステムがそれらのパッケージの同じバージョンで実行される必要があるということです。

いつもうまくいくとは限りません。リポジトリに新しいものが十分になかったり、必要なものがパッケージ化されていないこともあります。どちらの方法も完璧ではありませんが、うまくいく可能性が高いと思います。もっと完璧です。自分が何をしているのかを意識するだけで大​​丈夫でしょう。


編集- 忘れるところでしたが、システムが独自の環境を持つように、そして開発中のものがすべて独自の環境 (CPAN で完全に管理) で動作できるように、物事をセクションに分けるより良い方法があります。Python のvirtualenv...のように。

https://stackoverflow.com/questions/1423879/how-can-i-install-specialized-environments-for-different-perl-applications

関連情報