如何撤销所有 Perl 模块的意外安装?

pau*_*ler 8 perl cpan

我试图通过CPAN来升级我的Perl模块,但我并没有提供一个正则表达式/模块名称升级:perl -MCPAN -e 'upgrade'; 我只能假设最坏的情况(似乎由 的输出支持perldoc perllocal),即 CPAN 的所有 Perl 模块都在安装。

我怎样才能解开这个烂摊子?我想我可以删除/usr/local/share/perl,但这有什么影响?

编辑:我的硬盘驱动器上仍有 95% 的可用空间,所以这不是一个大问题。我只是不想要很多不必要的混乱。我正在考虑创建rm那个目录,执行dpkg --purge perl和重做apt-getCPAN 安装过程。但这真的有必要/usr/local/share/perl吗,或者我可以从 中删除不必要的模块吗?

Kev*_*wen 5

仔细观察一下,我认为您不需要或应该删除系统上的任何目录或文件。

运行命令perl -MCPAN -e 'upgrade'在命令行中不会安装附加模块到系统中。

只会尝试通过 CPAN 包管理系统而不是通过 Synaptic升级已安装的模块。

这类似于运行“r”命令,然后在cpan[1]>提示符处运行升级命令。见 这里

CPAN 和 Synaptic 是两个独立且不同的包管理系统。

不会从 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
....
Run Code Online (Sandbox Code Playgroud)

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 模块不应影响您的系统存储库。

祝你好运。不要惊慌。