我试图通过 CPAN 升级我的 Perl 模块,但我没有提供要升级的正则表达式/模块名称:perl -MCPAN -e 'upgrade'
;我只能假设最坏的情况(似乎由的输出支持perldoc perllocal
),即来自 CPAN 的所有 Perl 模块都在安装。
我该如何解决这一问题?我想我可以删除/usr/local/share/perl
,但那会有什么后果呢?
编辑:我的硬盘上仍有 95% 的可用空间,所以这不是什么大问题。我只是不想有太多不必要的混乱。我正在考虑rm
删除该目录,并dpkg --purge perl
重新执行apt-get
CPAN 安装过程。但这真的有必要吗,或者我可以从中删除不必要的模块/usr/local/share/perl
吗?
答案1
仔细看看,我认为你不需要或者应该删除系统上的所有目录或文件。
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
....
以模块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 模块不应该影响您的系统存储库。
祝你好运。不要惊慌。
答案2
我建议这样做:(apt-get remove <installed-packages> && apt-get autoremove
删除依赖项)&& apt-get purge <installed-packages>
(删除剩余的配置文件)然后您可以删除不需要的文件夹,但它应该已经为您完成了:)