3

昨日UbuntuIntrepidIbexにアップグレードしましたが、突然、(Hardy Heronに)インストールしたPerlモジュールの一部がすべて失われました。

通常の「@INCでモジュールが見つかりません」というエラーが発生します。CPANリポジトリのいずれかが変更されたか、Intrepid用のものがありますか?Googleはまったく役に立ちません。

前もって感謝します。

4

4 に答える 4

6

標準的な解決策は、Perl をアップグレードする前にCPAN.pm で「自動バンドル」を生成することです。autobundleを検索すると、Perl モジュール管理について議論しているいくつかの既存の SO の質問へのリンクと、より多くの情報を提供する必要があるように見えるいくつかの質問へのリンクが表示されます。CPAN.pm のマニュアルはautobundle に触れていますが、詳細はあまり含まれていません。

すでに Perl をアップグレードしているため、モジュールをインストールするための 1 つの解決策は、autobundle ファイルを生成し、生成されたファイルのエントリをガイドとして使用して、モジュールのエントリを含むカスタム autobundle ファイルを作成することです (のみ)。autobundle ファイル形式はPODだけなので、これは簡単に実行できるはずです。

将来的には、Perl をアップグレードする前に自動バンドルを生成することを習慣化する必要があります。これは完全な解決策ではありません。自動バンドルには、実際にビルドする前に削除する必要があるコア モジュールのエントリが含まれますが、少なくとも、Perl のインストールを修正できるように、インストールされている Perl モジュールのスナップショットが得られます。アップグレード後。

于 2008-12-29T17:09:02.843 に答える
5

Perlのインストールがバージョン5.8から5.10に変更されました。必要なモジュールの多くはperlバージョン固有のディレクトリにあるため、CPANツール(cpanコマンドなど)を使用して再インストールすることをお勧めします。

ただし、Ubuntuを使用しているため、多くのCPANライブラリもUbuntuパッケージマネージャーを介して配布され、CPANパッケージはUbuntuがインストールする場所とは異なる場所にインストールされることに注意してください(どちらもユーザーには透過的です。@INCパスで)。

中央のパッケージサーバーで新しいパッケージがリリースされたときにパッケージマネージャー(APT)によって更新されるため、Ubuntuパッケージが利用可能になったときに使用することをお勧めします。名前の形式は少し異なります。異なるソースから同じパッケージをインストールする2つの方法は次のとおりです。

$ cpan List::MoreUtils # installs latest from CPAN

$ sudo apt-get install liblist-moreutils-perl # installs latest from Ubuntu universe

後者の利点は、によって更新されることsudo apt-get updateです。

于 2008-12-29T17:23:08.743 に答える
4

Perl は Intrepid で変更されました。

アップグレード前は Perl 5.8 でしたが、現在は 5.10 です。

于 2008-12-29T15:03:44.140 に答える
1

Perl のバージョンが変更されたため、/usr/lib/perl5/5.8.8 の代わりにおそらく /usr/lib/perl5/5.10.* が使用されます。

于 2008-12-29T15:17:38.217 に答える