CPAN学习

简介:
[背景]
         在给同事安装otrs时候,做perl模块安装时,遇到很多问题,这次把有关cpan的资料整理出来,供学习......
[内容]
          什么是CPAN? 
CPAN是“perl档案智能网络”的意思,其中包括了大量的perl模块,软件和文档。你可以从以下几个地方找到CPAN: [url]http://www.cpan.org[/url][url]http://www.perl.com/CPAN/[/url]或其他的列在 [url]http://www.cpan.org/SITES.html[/url][url]http://mirror.cpan.org[/url]中的镜像站点 
同时请注意,CPAN还是一个PERL的模块名,CPAN.pm是一个用来自动下载和安装perl模块的工具,本文档只有少量的关于CPAN.pm的介绍,如果你想要更多的资料请到这里来 [url]http://theoryx5.uwinnipeg.ca/CPAN/perl/CPAN.html[/url]
我要如何安装PERL模块 
最简单的方法是perl -MCPAN -e ’install Chocolate::Belgian’,CPAN.pm文档有详细的如何使用该方法的介绍。如果你不想要让系统过多的控制你的安装或者它根本就不能使用的话,那么你就要看看这篇文章了perlmodinstall,他涵盖了UNIX,WINDOWS和Macintosh这几种主流系统。 
如果你是使用的ActivePerl(WINDOWS平台),那么PPM(Perl Package Manager)也可以起到相当于CPAN.pm模块的作用。 
手工安装一般是 
进入模块目录 
make Makefile.PL 
make;make test 
make install(这一步需要管理员权限,或者你将模块安装到你的个人目录下面)
我要如何移除已经安装了的模块? 
使用ExtUtils::Installed和ExtUtils::Packlist这两个模块来实现。下面是一个例子,在ExtUtils::Packlist中有更详细的例子,可以参考一下。 
#!/usr/local/bin/perl -w
use ExtUtils::Packlist; 
use ExtUtils::Installed;
$ARGV[0] or die "Usage: $0 Module::Name\n";
my $mod = $ARGV[0]; 
my $inst = ExtUtils::Installed->new();
foreach my $item (sort($inst->files($mod))) { 
print "removing $item\n"; 
unlink $item; 
}
my $packfile = $inst->packlist($mod)->packlist_file(); 
print "removing $packfile\n"; 
unlink $packfile;
我怎样才能知道安装了哪些模块在我的机子上呢? 
perldoc perllocal  
每当你安装了一个模块,它就会在一个叫perllocal.pod的文件中添加如下所示的信息。而该文件所在地依赖于你所定义的PATH路径,PATH路径可以使用perl -V显示出来。 
下面是添加在perllocal.pod中的文件 
=head2 Wed May 12 13:42:53 1999: C<Module> L<Data::Dumper>
=over 4
=item *
C<installed into: /usr/local/lib/perl5/5.00503>
=item *
C<LINKTYPE: dynamic>
=item *
C<VERSION: 2.101>
=item *
C<EXE_FILES: >
=back
每个条目包括模块名字,安装日期和时间,安装到哪儿,链接形式(动态还是静态),版本号以及是否可执行,以及其他相关的一些信息! 
使用ExtUtils::Installed模块
ExtUtils::Installed提供了一个用来寻找已安装模块的标准方法。他从.packlist,一个安装模块时创建的文件中得到所需的信息,另外它还提供将安装文件分类的能力和从".packlist"文件中读取目录信息的能力。  
例子如下: 
#!/usr/local/bin/perl
use ExtUtils::Installed; 
my $instmod = ExtUtils::Installed->new(); 
foreach my $module ($instmod->modules()) {
my $version = $instmod->version($module) || "version unknow!";
print "$module -- $version\n"; 
}
运行后输出内容如下: 
Apache::DBI -- 0.87 
Apache::DBILogConfig -- 0.01 
Apache::DBILogger -- 0.93 
AppConfig -- 1.52 
Archive::Tar -- 0.22 
BerkeleyDB -- 0.06 
CGI -- 2.74 
CPAN -- 1.59 
CPAN::WAIT -- 0.27 
Catalog -- 1.00 
Compress::Zlib -- 1.11 
Config::IniFiles -- 2.14 
Convert::BER -- 1.26 
Coy -- ??? 
Crypt::Rot13 -- 0.04 
Crypt::SSLeay -- 0.16 
DBI -- 1.14 
[.....]
ActivePerl使用PPM工具包,方法如下;  
C:\>ppm query 
Archive-Tar [0.072 ] module for manipulation of tar archives. 
Compress-Zlib [1.03 ] Interface to zlib compression library 
DBI [1.13 ] Database independent interface for Perl 
GD [1.25 ] Interface to Gd Graphics Library 
HTML-Parser [2.23 ] SGML parser class 
MIME-Base64 [2.11 ] Encoding and decoding of base64 strings 
PPM [1.1.4 ] Perl Package Manager: locate, install, upgrade software
pmtools工具包是由Tom Christiansen写了用来浏览和管理模块的工具,可以从这儿的到它 [url]http://language.perl.com/misc/pmtools-1.00.tar.gz[/url] ,它的一部分帮助文档:  
pmtools --一套用来帮助管理模块的小程序。里面的每一个程序都只做一件事情,其中包括一下小程序 
pmpath - 显示模块的绝对路径 
pmvers - 显示模块版本号 
pmdesc - 得到关于模块的概述 
pmall  - 显示所有已安装模块的pmdesc描述 
pmdirs - 分行显示perl模块的路径 
plxload - 显示程序运行时加载了什么文件 
pmload - 显示模个模块编译时加载了什么文件  
pmexp - 显示模块的接口 
pminst - 查找安装了哪些模块 
pmeth - 列出一个类的所有方法 
pmls - 详细列出模块路径 
pmcat - 显示模块源码 
pman - 显示模块的pod文档 
pmfunc - 显示一个模块中函数的源码 
podgrep - 在pod文档中查找  
pfcat - show pods from perlfunc  
podtoc - list table of contents of a podpage  
podpath - 显示pod文件的绝对路径 
pods - 列出所有标准pod以及模块pod 
sitepods - list only pods in site_perl directories  
basepods - list only normal "man-page" style pods  
faqpods - list only faq pods  
modpods - all module pods, including site_perl ones  
stdpods - list standard pods, not site_perl ones 
CPAN下的帮助
cpan> ?
Display Information(查看信息)
 command  argument          description
 a,b,d,m  WORD or /REGEXP/  about authors, bundles, distributions, modules(用与查看作者,bundles,分布,模块)
 i        WORD or /REGEXP/  about anything of above(查看相关信息)
 r        NONE              reinstall recommendations(建议需要重新安装的模块)
 ls       AUTHOR            about files in the author's directory(列出在此作者目录下的文件)
Download, Test, Make, Install...
 get                        download
 make                       make (implies get)
 test      MODULES,         make test (implies make)
 install   DISTS, BUNDLES   make install (implies test)
 clean                      make clean  (以上是动作,对模块的下载编译安装清除)
 look                       open subshell in these dists' directories  
 readme                     display these dists' README files  
#############################################################################################
get downloads a distribution file without further action. readme displays the README file of the associated distribution. Look gets and untars (if not yet done) the distribution file, changes to the appropriate directory and opens a subshell process in that directory. 
##############################################################################################
Other
 h,?           display this menu       ! perl-code   eval a perl command
 o conf [opt]  set and query options   q             quit the cpan shell
 reload cpan   load CPAN.pm again      reload index  load newer indices
 autobundle    Snapshot                force cmd     unconditionally do cmd
一些辅助命令,如帮助,重新加载,退出,执行脚本,重新加载索引,强行执行......


本文转自hahazhu0634 51CTO博客,原文链接:http://blog.51cto.com/5ydycm/113196,如需转载请自行联系原作者
相关文章
|
1月前
|
人工智能 自然语言处理 搜索推荐
AI写作工具应用效能与治理策略研究报告
本报告聚焦AI写作工具在学术、商业、政务、创意四大场景的应用现状与适配逻辑,结合实测数据构建效率、质量、合规三维评估体系,剖析版权模糊、同质化等核心问题,提出法律、技术、行业协同治理路径,并预测认知智能、多模态创作等未来趋势,为产业健康发展提供参考。
|
存储 运维 关系型数据库
Cloudreve 自建云盘实践,我说了没人能限得了我的容量和速度!
一、前言 二、Cloudreve 介绍 🔉 功能 ✨ 特性 📌 资料 三、环境准备 四、宝塔配置 1. 获取用户名和密码 2. 8888 端口授权 3. 登录宝塔后台 五、服务安装 1. 在宝塔终端查看服务内核 2. 下载和安装 3. 开放端口 5212 4. 登录服务 六、进程守护 1. Supervisor 配置 2. Supervisor 启动 七、配置域名 1. 解析域名 2. 反向代理 八、数据库切换 九、总结 十、系列推荐
3004 0
Cloudreve 自建云盘实践,我说了没人能限得了我的容量和速度!
|
9月前
|
人工智能 编解码 算法
VideoFusion:开源视频处理神器!一键去黑边水印,AI提升画质+批量剪辑全搞定
VideoFusion 是一款开源的AI视频剪辑工具,支持自动去除视频黑边、水印和字幕,提供批量处理、画质提升等功能,适合视频创作者和自媒体运营者使用。
1286 3
|
数据安全/隐私保护
锐捷交换机Console密码忘了,怎么破?
锐捷交换机Console密码忘了,怎么破?
1908 0
锐捷交换机Console密码忘了,怎么破?
|
9月前
|
运维 监控 安全
Linux 面板推荐:Websoft9
Websoft9 是一款高效 Linux 服务器管理面板,支持一键部署 200+ 开源应用,提供全生命周期安全防护与轻量化资源占用,适配主流系统,适合开发者及企业快速搭建业务环境
307 2
|
边缘计算 网络协议 5G
|
12月前
|
SQL 程序员 Linux
推荐几个不错的数据库设计工具
推荐几个不错的数据库设计工具
1133 11
|
Java 测试技术 Maven
maven跳过单元测试-maven.test.skip和skipTests的区别
maven跳过单元测试-maven.test.skip和skipTests的区别
383 0
|
BI Linux API
掌握 SkiaSharp 轻松实现 .NET 跨平台绘图
.NET 框架的发展,我们越来越多地寻求能够在多个平台上无缝运行的应用解决方案。
2153 2
|
机器学习/深度学习 人工智能 自动驾驶
构建未来:AI技术在智能交通系统中的应用
【5月更文挑战第20天】 随着人工智能技术的飞速进步,其在现代交通系统中的应用日益广泛,从智能导航到自动车辆调度,AI正逐步改变我们的出行方式和交通管理。本文深入探讨了AI技术在智能交通系统中的多种应用,分析了其提升交通效率、增强安全性及减少环境影响的潜在能力。同时,讨论了实施这些技术所面临的挑战和未来的发展方向,为读者提供了一个关于AI如何塑造未来交通网络的全面视角。

热门文章

最新文章