![CPAN vs. APT: バージョンの競合?](https://rvso.com/image/1035891/CPAN%20vs.%20APT%3A%20%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%AE%E7%AB%B6%E5%90%88%3F.png)
これに対する答えがどこにも見つかりません: APT 経由でインストールされたモジュールは、CPAN 経由でインストールされたモジュールと競合しますか?
その質問に加えて、次の質問もあります。インストールされた CPAN モジュールはどこに保存されますか? グローバルにアクセス可能か、それともインストールしたユーザーだけがアクセス可能か? どれがどれかはどうやってわかるのですか? 何がインストールされていて、どれが優先されるかはどうやってわかるのですか?
APT 経由でモジュールをインストールする場合でも CPAN を使用する必要がありますか?
答え1
Debian および Ubuntu では、CPAN (/usr/bin/cpan
ユーティリティ) は/usr/local/lib/
デフォルトでモジュールを にインストールします。また、Debian パッケージはファイルを/usr/share/perl5/
および に保存します/usr/lib/perl5/
。そのため、 経由でインストールされたファイルは、/usr/bin/cpan
apt 経由でインストールされたファイルを上書きしません。
システム 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
...のように。