位置: 编程技术 - 正文

perl 模块打包加入外部依赖程序(perl package)

编辑:rootadmin

Perl 社区并不是所有的东西都发布在 CPAN 上。甚至专门有一个 Module::ThirdParty 模块记录这些非 CPAN 的 perl 项目列表。其中最有名的应该就属写博客的 Movable Type 和做监控的 SmokePing 了。

但是如果个人图方便又想把 smokeping 打包方便部署使用的时候,就会发现一点小问题:打包成rpm,很多 perl 的依赖模块不一定在系统 repo 里存在;打包成 perl 的模块,smokeping 最常用的几个 probe 比如 fping、curl 什么的,又是非 perl 程序,cpanm 没法解决这个 requires_external_bin ,最多只能报错退出。

其实这里可以采取一些别的办法,虽然笨一些,但是解决问题。

首先还是让我们创建一个示例模块:

然后就会在本目录下创建一个 Alien-FPing 目录,自带好了 Build.PL 等模块文件。这里使用了 Alien:: 的名字空间,是一个潜规则,有些项目依赖 C 源码的库和头文件,就用 perl 包一层来安装,都放在这个空间下,比如 Alien::V8, Alien::Gearmand, Alien::IE7 等等。

现在让我们下载 fping 的源码放到模块里:

接下来应该就是编写 Build.PL 了。不过为了尽量让 Build.PL 看起来简洁而且一眼看出目的。我们最好把编译操作单独定义一个模块来使用:几乎就是调用 shell 而已,唯一需要讲一下的就是这个 ACTION_build。这是 Module::Build 定义好的提供给 subclass 用的方法,事实上 ./Build help 看得到的所有 action 都有类似的方法可以用。

然后稍微修改一下 Build.PL 如下:

把 Module::Build 替换成 Alien::FPing::Build 而已,其他都不用动。

然后试一下吧:

看到编译输出,并且成功安装有 /usr/sbin/fping 了吧。现在可以打包了。注意默认生成的 ignore.txt 里,是排除掉了 inc 目录的,需要去除掉,然后修改 MANIFEST 文件加入 inc 和 src 里的文件,然后再打包出来的 perl 模块就可以直接用了。

推荐整理分享perl 模块打包加入外部依赖程序(perl package),希望有所帮助,仅作参考,欢迎阅读内容。

perl 模块打包加入外部依赖程序(perl package)

文章相关热门搜索词:perl怎么安装包,perl怎么安装包,perl怎么安装包,perl模块安装,perl模块安装,perl打包exe,perl package,perl打包exe,内容如对您有帮助,希望把文章链接给更多的朋友!

一个perl扩展正则表达式代码分析 my$ip="..0.1|..0.2|..0.1";if($ip=~/^(?:((?:d{1,3}.){3}d{1,3})(?=(?:|(?!1)(?1))*z)|)*(?1)$/x){print"matchn";}根据perlre文档的说明,一点一点解释。首先是/x,

perl实现blog备份的脚本代码 之前总不重视自己的博客,上回一丢才心疼,现在重视起来,决定定期备份sql。写个小脚本如下:#!/usr/bin/perlusewarnings;usestrict;useMySQL::Backup;useMail::Sender;o

perl中子程序中参数的两种引用(传递)方式介绍 下面是一个例子:usestrict;#这里是两个数组my@i=('1','2','3');my@j=('a','b','c');#在进行处理之前,我们把他们先打印出来,看一看他们的样子print"Inmainprogrambefor

标签: perl package

本文链接地址:https://www.jiuchutong.com/biancheng/372536.html 转载请保留说明!

上一篇:perl的POD权限问题处理(perl do)

下一篇:一个perl扩展正则表达式代码分析(perl keys)

  • 非货币资产交换和债务重组的区别
  • 公司净资产减少
  • 收取不合规发票怎么处理
  • 车辆购置税完税证明二维码用什么扫
  • 集团公司及子公司员工安排工作
  • 施工单位奖金分配方案
  • 进项税额转出补交税金会计分录
  • 收到电子承兑汇票的账务处理
  • 抵缴以前年度所得税怎么做?
  • 补缴的公积金可以抵扣个税吗
  • 小规模纳税人的税率是多少
  • 申报水利基金减免性质在哪里找?
  • 白酒的消费税怎样计算
  • 公司给另外一家公司投资
  • 企业长期股权投资
  • 集体福利的增值税怎么算
  • 酒店住宿收入确认原则的条件
  • 小规模保安公司收取服务费时如何开票
  • 怎么让自己的电脑有网吧认证
  • 网件R6400路由器怎么样?网件R6400上网与传输评测的教程
  • 原材料和加工费能分着开票么
  • 公司回购股份有什么好处
  • 怎么安装win7系统步骤
  • 为什么说人与人的悲欢不相通
  • 初学者如何
  • 广告公司收到广告费发票如何入账
  • 原材料当做废品怎么做
  • PHP:pg_field_prtlen()的用法_PostgreSQL函数
  • pavsrv50.exe - pavsrv50进程管理信息
  • 创建自定义对象主要哪几种方法,并写出基本语法结构?
  • 周转材料摊销是什么科目
  • 前端 input
  • php获取给定日期函数
  • 泛微oa二次开发难吗
  • win10自带的重装能彻底清除上网记录和u盘记录吗
  • sed多个命令匹配条件格式
  • 行政事业单位支出劳务费规定
  • 建账在1月份如何录入期初
  • mongodb简单使用
  • 公司车辆保险费要交印花税吗
  • 预付款已经开了发票未到货要怎么做账
  • 购买房屋缴纳的契税可以退税政策
  • 预付房租计入长期待摊费用吗
  • 应付账款不用付情况说明
  • 购入房产会计记账凭证怎么做
  • 研发部门的房租可以资本化
  • 冲去年管理费用
  • 融资租赁租金会计科目
  • 交通运输业安全经费提取的会计处理
  • 没有入账的固定资产怎样做账
  • 建筑企业结转收入成本
  • sql server查询
  • sql中的存储过程
  • mysql总是安装失败
  • win7总是更新怎么办
  • win8系统怎么关闭自动更新系统
  • 电脑连接宽带时出错怎么办
  • 32位与64位操作系统怎么区分从32位和64位的概念上进行讲述
  • win10访问局域网电脑需要用户名和密码
  • 如何设置windows启动密码
  • ubuntu 18.04防火墙
  • Win10 Mobile RS2预览版14904升级截图曝光
  • 在centos7中,一般用( )命令来查看网络接口的状态
  • mcdlc.exe - mcdlc是什么进程文件 有何作用
  • ExtJS 2.0 GridPanel基本表格简明教程
  • perl ne
  • javascript弹窗函数
  • node. js教程
  • linux启动过程流程图
  • android binary xml
  • python中的字符串必须写在一对双引号中
  • recyclerview和scrollview
  • jquery-easyui-1.3.3
  • python设计作品
  • jquery fullpage
  • 安卓中的菜单
  • jquery自定义方法
  • 山东潍坊昌邑房产网
  • 新能源车异地购车
  • 拟录用是正式录用吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设