免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5655 | 回复: 8
打印 上一主题 下一主题

请问如何安装一个自己编写perl package? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-14 14:11 |只看该作者 |倒序浏览
现象:
我在安装一个SNMP的perl模块时,运行出错,错误如下:
[dxy@test SNMP]$ perl Makefile.PL -NET-SNMP-PATH=/home/dxy/snmp/snmp-4.2.4
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = "zh_cn",
        LC_ALL = "zh_cn",
        LANG = "zh_cn"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
WARNING: MAN3PODS takes a hash reference not a string/number.
         Please inform the author.
WARNING: LDFLAGS is not a known parameter.
Checking if your kit is complete...
Looks good
Can't use string ("SNMP") as a HASH ref while "strict refs" in use at /usr/lib/perl5/5.8.0/ExtUtils/MM_Unix.pm line 541.
问题:
  1.我看到当前目录有一个SNMP.pm, 该错误如何解决?这个错误提示是不是找不到SNMP.pm包?
  2.因为不懂perl,我当时假定那是因为没有安装SNMP.pm包,然后,按照网上的说明运行以下命令,但是出现“死机”现象(主机长时间没反应):
   [dxy@test SNMP]$ perl -MCPAN -e shell
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = "zh_cn",
        LC_ALL = "zh_cn",
        LANG = "zh_cn"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

cpan shell -- CPAN exploration and modules installation (v1.61)
ReadLine support available (try 'install Bundle::CPAN')

cpan> install SNMP;
CPAN: Storable loaded ok
CPAN: LWP::UserAgent loaded ok
Fetching with LWP:
  ftp://ftp.ucr.ac.cr/pub/Unix/CPAN/authors/01mailrc.txt.gz
请问这个问题有如何解决?

[ 本帖最后由 lwj_dxy 于 2005-11-14 14:13 编辑 ]

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2005-11-14 16:23 |只看该作者
1.把你的路径unshift进@INC中...
2.在程序开头用use lib '/path/to/pm';
3.把你写的PM丢到perl -V最下面出现的路径中...
4.看精华帖..有解释...

论坛徽章:
0
3 [报告]
发表于 2005-11-14 19:19 |只看该作者
原帖由 lwj_dxy 于 2005-11-14 14:11 发表
现象:
我在安装一个SNMP的perl模块时,运行出错,错误如下:
[dxy@test SNMP]$ perl Makefile.PL -NET-SNMP-PATH=/home/dxy/snmp/snmp-4.2.4
perl: warning: Setting locale failed.
perl: warning: Please ...


把这个module下载来,然后perl Makefile.pl;make;make test;make install即可。

论坛徽章:
0
4 [报告]
发表于 2005-11-19 10:04 |只看该作者

回复 3楼 兰花仙子 的帖子

就是perl Makefile.pl出错了啊,第一步就出错了,后面的没法执行!

论坛徽章:
0
5 [报告]
发表于 2005-11-19 10:24 |只看该作者
原帖由 apile 于 2005-11-14 16:23 发表
1.把你的路径unshift进@INC中...
2.在程序开头用use lib '/path/to/pm';
3.把你写的PM丢到perl -V最下面出现的路径中...
4.看精华帖..有解释...

---------------
[dxy@localhost SNMP]$ perl -V
Characteristics of this binary (from libperl):
  Compile-time options: DEBUGGING MULTIPLICITY USE_ITHREADS USE_LARGE_FILES PERL_IMPLICIT_CONTEXT
  Locally applied patches:
        MAINT18379
  Built under linux
  Compiled at Feb 18 2003 22:19:53
  @INC:
    /usr/lib/perl5/5.8.0/i386-linux-thread-multi
    /usr/lib/perl5/5.8.0
    /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi
    /usr/lib/perl5/site_perl/5.8.0
    /usr/lib/perl5/site_perl
    /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi
    /usr/lib/perl5/vendor_perl/5.8.0
    /usr/lib/perl5/vendor_perl
    /usr/lib/perl5/5.8.0/i386-linux-thread-multi
    /usr/lib/perl5/5.8.0

[dxy@localhost SNMP]$ pwd
/home/dxy/snmp/ucd-snmp-4.2.4/perl/SNMP
[dxy@localhost SNMP]$

已经将SNMP.pm拷贝到  /usr/lib/perl5/5.8.0下;
但是:
1.把你的路径unshift进@INC中...
2.在程序开头用use lib '/path/to/pm';
具体怎么弄呢?

论坛徽章:
0
6 [报告]
发表于 2005-11-19 10:40 |只看该作者
原帖由 lwj_dxy 于 2005-11-19 10:24 发表

---------------
[dxy@localhost SNMP]$ perl -V
Characteristics of this binary (from libperl):
  Compile-time options: DEBUGGING MULTIPLICITY USE_ITHREADS USE_LARGE_FILES PERL_IMPLICIT_CONTEXT
...


如果makefile失败的话,生成的.pm文件不一定有用的,你最好看看安装包附带的README文件,里面有介绍标准安装步骤的。

至于如何引用这个包,就很简单了。如果包的路径在@INC里面(就是你用perl -V)看到的那个,那么在script里直接use PACKAGE_NAME;就可以了。如果包的路径不在@INC里,例如在/var/sth目录下,那么可有2个办法引用它:

use lib qw(/var/sth);
use PACKAGE_NAME;

OR:

unshift @INC,'/var/sth';
use PACKAGE_NAME;

论坛徽章:
0
7 [报告]
发表于 2005-11-19 11:51 |只看该作者

回复 6楼 兰花仙子 的帖子

谢谢指点,我试一下

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2005-11-19 14:05 |只看该作者
原帖由 兰花仙子 于 2005-11-19 10:40 发表

如果包的路径不在@INC里,例如在/var/sth目录下,那么可有2个办法引用它:

use lib qw(/var/sth);
use PACKAGE_NAME;

OR:

unshift @INC,'/var/sth';
use PACKAGE_NAME;

仙子说错了哦~
unshift 这种用法必须得放到 BEGIN 里面才管用呢!

论坛徽章:
0
9 [报告]
发表于 2005-11-19 14:33 |只看该作者
原帖由 flw 于 2005-11-19 14:05 发表

仙子说错了哦~
unshift 这种用法必须得放到 BEGIN 里面才管用呢!


噢...是的哦,偶一般都use lib的,不怎么unshift @INC,忘记了哈,flw说的对
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP