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


8

我试图通过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


有人认为直接删除系统文件(和文件夹)确实不是一个好主意。最好使用诸如apt-getSynaptic之类的东西,以便系统彻底删除并更新必需的数据库。

4
不会以这种方式跟踪在CPAN下安装的@ vasa1 Perl模块。模块所在的目录可能需要删除。或者必须通过CPAN手动删除它们,如果它们遵循卸载指令甚至make uninstall命令,那将是一个cr * pshoot 。不幸的是,它是一个完全不同的包管理系统。stackoverflow.com/questions/2626449/…–
凯文·鲍文

@maggotbrain,谢谢!我不知道 (我用来

Answers:


5

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

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

它将尝试通过CPAN软件包管理系统而不是Synaptic升级已安装的模块。

这类似于运行“ r”命令,然后在cpan[1]>提示符下运行upgrade命令。看 这里

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

祝你好运。不要惊慌


优秀而详尽的答案!“不要惊慌”是这里的关键词。我看到了很多输出,并阅读了有关使用参数指定模块的信息,所以我太快地得出结论了。我惊讶地发现,我几乎没有使用任何的硬盘空间,但我还是看到了一些模块,我不认识(因为依赖的可能)。很高兴知道这对我来说不需要任何工作!
paulrehkugler

0

我建议您这样做:(apt-get remove <installed-packages> && apt-get autoremove删除依赖项)&& apt-get purge <installed-packages>(删除剩余的配置文件),然后您可以删除不需要的文件夹,但是应该已经为您完成了:)


2
OP通过CPAN做到了这一点。由于这些模块不在软件包管理下,因此清除无济于事。
凯文·鲍文
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.