oracle卸数的perl脚本,卸载cpan安装的所有perl模块

这篇博客讨论了在使用cpan和cpanm管理Perl模块时遇到的依赖和卸载问题。作者尝试卸载已安装的模块,发现CPAN本身没有提供卸载功能,建议使用App::pmuninstall或考虑重新安装Perl。还提到了perlbrew作为测试不同Perl版本的工具,以及cpanminus(cpanm)作为更方便的替代品。
摘要由CSDN通过智能技术生成

昨天我想测试一些软件,并在其中说的文档中进行安装,我只需要输入以下内容即可

cpan -i Software

我从未使用过cpan,我只知道它是perl软件包管理器。 (是.. ??)但是,事实证明,我需要大量的依赖项,而且由于我很愚蠢,所以我只安装了所有这些依赖项。 (首先,我必须设置cpan,问了很多问题)长话短说,我只想再次删除所有内容。 我用谷歌搜索了一下,似乎cpan没有卸载例程,尤其是一次安装所有软件包。

我可以只删除一些目录,还是会遇到麻烦?

cpan命令实际上不是像apt-get这样的软件包管理器。它是从CPAN(站点或其镜像之一)下载并安装的工具。完成此任务后,它不会记得很多以前做过的事情,至少还不足以除去先前安装的模块,至少不能可靠,干净或依赖安全。 (更新:查看App::pmuninstall之后,它可以用于处理依赖关系,但是它可以通过连接到外部(阅读:Web)源来进行处理,这些源是分开计算的,这很好,但是我支持前面的声明: CPAN.pm不这样做。)

我曾经担心删除模块,但是现在我意识到大多数Perl模块占用的空间很小,所以我不必担心会安装一些您永远不会使用的额外模块。因此,除非您使用的是装有很小光盘的计算机,否则我会顺其自然。

在Windows上,或者如果您在Linux / Mac上使用非系统Perl,则只需删除Perl并重新安装它即可。如果您在Linux / Mac上使用系统安装的Perl,则不建议这样做,因为这样做可能会破坏操作系统(如果您小心一点,可能会没事,但节省几个Mb并不值得!)。

将来,您可以使用perlbrew轻松地安装Perl的本地版本,如果文档不够(应该如此),则网上遍布教程。这还具有使您可以使用最新和最好的Perl版本的好处,而您的系统可能还没有附带该版本。然后,如果您安装了一大堆垃圾,甚至将其破坏成疯狂的行为,请删除该版本,然后重新安装/安装其他版本。

另一个不错的工具是cpanminus(简称cpanm),它是一种更新的,更用户友好的cpan工具。所有很酷的孩子都在使用它。

谢谢您的解释。我对lib目录进行了更深入的研究,并决定按照您的建议保留所有这些文件。

@xenoterracide是否取决于使用过cpanm来安装?粗略地看一下文档似乎暗示了这一点。无论哪种方式,我都没有看到需要卸载CPAN上的几乎所有模块,至少从数据存储角度而言。知道存在某些东西仍然很高兴

不,cpanm afaik不会做任何事情来写出cpan和cpanp所做的事情。

酷+1!我注意到它确实依赖于网络,但是鉴于CPAN.pm所提供的限制,我很高兴他们发现了一些问题而不是忽略了它们!

我只是看着这个,然后想,卸载模块的一个原因是,当您开发模块时,您在开发版本中删除了其中一个模块,但仍在安装中,因此位于您的lib中。删除它是更好的主意。

@xenoterracide,刚刚看到了这个。我要说的是,您应该使用perlbrew并获得完全干净的Perl进行测试。这将帮助您检查未声明的依赖项等。

您可以使用cpanplus(Perl附带)卸载单个模块,如下所示:

cpanp uninstall SQL::Abstract

您可以这样查看使用cpan脚本安装的所有模块:

perldoc perllocal

将两者放在一起:

for module in $(perldoc -u perllocal | grep -F 'C L$/\1/') ; do

cpanp uninstall"$module"

done

我猜脚本的第二行应该是cpanm --uninstall"$module"

我不确定要删除"全部"。但是要删除单个模块,可以使用App::pmuninstall及其唯一脚本pm-uninstall来卸载模块。然后,您也许可以编写某种脚本来递归删除dep。

如果由于路径中存在不兼容的模块而无法再使用cpan,则可以手动删除所有已安装的模块。例如,我从Fedora 22升级到Fedora 23,Perl版本更改了。以前通过cpanm安装到/usr/local/lib64/perl5中的所有模块均无法正常工作,并阻止了我使用cpanm。

$ cpanm --uninstall Apache::DBI

Attempt to reload Scalar/Util.pm aborted.

Compilation failed in require at /usr/share/perl5/vendor_perl/File/Temp.pm line 18.

...

我可以通过移动该目录来解决此问题:

$ mv /usr/local/lib64/perl5 /root/usr-local-lib64-perl5

该目录的名称在您的系统上可能会有所不同。

小心:如果某个模块在该目录之外安装了文件,例如系统库文件,则这些文件将保留在那里。

我将更改Flimm的答案以使用cpanm,并可以选择在脚本末尾卸载cpanm本身:

#!/usr/bin/env bash

for module in $(perldoc -u perllocal | grep -F 'C L$/\1/' | sort | uniq) ; do

if [["$module" =~"App::cpanminus" ]]; then

continue

fi

echo"Uninstalling $module..."

yes | cpanm --uninstall"$module"

done

cpanm --uninstall App::cpanminus

我认为最好的选择是卸载Perl并重新安装。

此建议的唯一问题是您不应该这样做,因为您正在Linux / Mac上使用系统范围的安装。如果您使用Windows,那么实际上可能是首选。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值