すべてのPerlモジュールの誤ったインストールを元に戻すにはどうすればよいですか?


8

CPANを介してPerlモジュールをアップグレードしようとしましたが、アップグレードする正規表現/モジュール名を指定しませんでしたperl -MCPAN -e 'upgrade'。私は最悪(の出力でサポートされているようですperldoc perllocal)、つまりCPANのすべてのPerlモジュールがインストールされていると想定できます。

この混乱を元に戻すにはどうすればよいですか?を削除できると思います/usr/local/share/perlが、その意味は何ですか?

編集:私のハードドライブにはまだ95%の空き領域があるので、大きな問題ではありません。不要な混乱をたくさんしたくありません。rmそのディレクトリの作成、およびCPANインストールプロセスの実行dpkg --purge perlとやり直しを検討していapt-getます。しかし、それは本当に必要なの/usr/local/share/perlでしょうか、それとも不要なモジュールを単に削除できますか?


システムファイル(およびフォルダー)を直接削除することは実際に良い考えではないと感じる人もいます。apt-getシステムが完全に削除を行い、必要なデータベースを更新できるように、またはSynaptic などを使用することをお勧めします。

4
CPANの下にインストールされた@ vasa1 Perlモジュールは、そのように追跡されません。モジュールが存在するディレクトリは、おそらく削除する必要があります。または、CPANを使用して手動で削除する必要があり、それらがアンインストールディレクティブまたはmake uninstallコマンドさえ従う場合はcr * pshootです。残念ながら、完全に異なるパッケージ管理システムです。stackoverflow.com/questions/2626449/…–
ケビンボーウェン

@maggotbrain、ありがとう!知らなかった。(私がささいなことに使用する唯一のPerlはOSに付属しています。)

回答:


5

これをもう少し詳しく見てみると、システム上のディレクトリやファイルを削除する必要がある、または削除する必要があるとは思いません。

perl -MCPAN -e 'upgrade'コマンドラインからコマンドを実行しても、システムに追加のモジュールインストールされません

それはされますのみ CPANのパッケージ管理システムを通じて、インストール済みのモジュールをアップグレードしようとしていないシナプスを通じて

これは、「r」コマンドを実行してからcpan[1]>プロンプトでupgradeコマンドを実行するのと同じです。こちらをご覧 ください

CPANとSynapticは、2つの別個の異なるパッケージ管理システムです。

これ、CPANからすべての可能なPerlモジュールをインストールするわけではありません。また、既存のシステムパッケージdBを変更することもありません。したがって、これを間違いなく安全にロールバックできます。

ただし、アプリケーションまたはシステムがPerlモジュールの特定のバージョンに依存している場合、これは依然として潜在的に危険です。

アップグレードプロセスを中断した場合は、システムへの悪影響を回避している可能性があります。

回復オプション:

コマンドラインからを起動しcpan、コマンドrを実行して、インストールされているモジュールと利用可能なアップグレードのリストを表示します。たとえば、これは私のcpanからの省略された出力です:

cpan[7]> r

Package namespace         installed    latest  in CPAN file
App::Cpan                    1.5701      1.61  BDFOY/App-Cpan-1.61.tar.gz
DBD::mysql                    4.020     4.022  CAPTTOFU/DBD-mysql-4.022.tar.gz
DBI                           1.616     1.623  TIMB/DBI-1.623.tar.gz
DB_File                       1.821     1.827  PMQS/DB_File-1.827.tar.gz
Error                       0.17010   0.17019  SHLOMIF/Error-0.17019.tar.gz
Eval::Closure                  0.06      0.08  DOY/Eval-Closure-0.08.tar.gz
....

Eval::Closureこの例では、モジュールを取ります。perl -MCPAN -e 'upgrade'コマンドを完了させ、バージョン0.08がインストールされたとします。

この場合、Synapticを見ると、リポジトリの最新バージョンが0.06(特に、私のインスタンスでは0.06-1)であることがわかります。

次のコマンドを実行すると、システムバージョンにロールバックできます。

sudo apt-get install --reinstall libeval-closure-perl

Perlモジュールを手動でインストールし、それらを以前のバージョンにロールバックする場合は、それらを再度(source.cpan.orgまたは他の場所から)ダウンロードして、手動で再インストールする必要があります。

要約すると:CPAN内でPerlモジュールをアップグレードしても、システムリポジトリに影響はありません。

幸運を祈ります。慌てる必要はありません。


素晴らしく完全な答え!「慌てないで」がキーワード。たくさんの出力を見て、モジュールを指定するために引数を使用することについて読んだので、結論に素早くジャンプしました。私がされた(おそらく依存関係の)私はほとんどすべてのHDのスペースを使用することを見つけるために驚いたが、私はまだ、私は認識していなかったいくつかのモジュールを見ました。これが私にとって何の作業も必要としないことを知っておくと良いです!
ポールレクグラー2013年

0

私は次のことをお勧めします:(apt-get remove <installed-packages> && apt-get autoremove依存関係を削除するため)&& apt-get purge <installed-packages>(構成ファイルの残りを削除するため)不要なフォルダーを削除できますが、既に行われているはずです:)


2
OPはCPANを通じてこれを行いました。これらのモジュールはパッケージ管理されていないので、パージは役に立ちません。
Kevin Bowen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.