设为首页 收藏本站
查看: 586|回复: 0

[经验分享] 用RPM发布Perl应用

[复制链接]

尚未签到

发表于 2017-5-17 11:01:17 | 显示全部楼层 |阅读模式
  如果你开发开源的Perl模块或应用可以用CPAN来进行发布。但是,如果你的应用不能开源,那么在RedHat系的发行版上用什么方法发布比较方便?有很多方案比如:


  • 冷冻方案,把Perl的解释器和应用依赖的所有模块都打包在一起,具体的方案有, cava packager, ActiveState PDK,PAR等,该方案不利于复用,不适合于打包可复用的模块
  • 用zip或tar打包,然后安装到单一根目录下,模块和入口程序按固定的相对路径组织,然后在入口程序中用FindBin模块和use lib把模块加入到@INC。此方法比较简洁,但是不利于不同应用之间的复用。
  • 用RPM打包,把模块安装到vendor_perl的目录下,入口程序则安装到标准的/usr/bin目录。此方法遵循Linux程序部署的标准做法,减少因为使用非标准路径而需要的额外配置,比如PATH,@INC等。此外,它和可以利用RPM软件包依赖管理,安装好的文件的校验等功能
  rpmbuild对制作Perl应用的RPM包有自动依赖扫描功能,比如该功能会对以下程序:

#!/usr/bin/env perl
use strict;
use DBI;
use DBD::SQLite 1.42;
  识别出:perl(DBI)和perl(DBD::SQLite)的依赖,也就是说管理员需要安装 perl-DBI和perl-DBD-SQLite这两个RPM包。这个看上去不错,但是它有局限性,为了满足该依赖,响应的RPM必须被安装,但有时你需要最新版本的模块,该版本的模块的RPM包未必在相应发行版的软件仓库中可用。自己动手制作最新版的RPM往往不现实,因为复杂的Perl应用一般有很多依赖。而且,有时即使有最新版也未必能升级,因为,那些旧版本的模块很可能被系统中的其它应用所使用,升级到新版本可能会导致这些应用无法正常工作。这时,只能安装CPAN上对应的模块了。由于,用CPAN安装模块时,RPM的依赖管理数据库不会被更新,所以尽管事实上用CPAN也可以解决模块依赖,但是RPM却不知晓。仍旧以上述程序为例,由于Fedora 20的软件仓库中只有DBD::SQLite 1.40,要满足版本要求需要用CPAN来安装。但是,用CPAN安装完1.42后,试图安装上述程序的RPM包仍然会报DBD::SQLite没有找到的错误,如果忽略依赖,强制那么验证软件包的时候同样会报DBD::SQLite没找的错误。此时,显然RPM的依赖管理没有带来正真的价值。最好的办法时,不让RPM自动扫描依赖模块并加以管理。编写spec文件时可以将AutoReqProv设置成no来禁用自动依赖扫描,而让这些依赖在RPM之外管理,比如在该应用的安装文档中写明那些CPAN模块需要预先安装。或者提供一安装脚本把所需CPAN模块和RPM包一并安装。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-378457-1-1.html 上篇帖子: Perl Hash Usage (Reposted) 下篇帖子: [微]perl variable system
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表