如何将Perl模块做成rpm文件

时间:2019-11-20 08:52:56  来源:igfitidea点击:

问题

在RHEL/CentOS Linux上如何使用cpanspec将Perl模块做成rpm文件?

在Linux系统中,没法运行perl -MCPAN -e'install Module :: Name'
如何把模块做成rmp软件包的形式进行安装?

可以使用yum命令安装Perl模块吗?

解决方案

rpmbuild命令用于为基于CentOS/RHEL的系统构建二进制软件包和源软件包。
rpm软件包包括文件档案和用于安装和清除档案文件的元数据。

使用cpanspec构建Perl模块rpm文件:

如何安装cpanspec

执行以下cpanspec命令。

首先为RHEL 7/CentOS 7添加EPEL存储库:

$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ sudo yum install cpanspec perl-ExtUtils-CBuilder perl-Module-Build perl-Test-Simpl

如何安装编译器以构建Perl模块

需要在CentOS Enterprise Linux或Red Hat Enterprise Linux版本7上安装以下软件包。
设置基本的开发环境。

$ sudo yum group install "Development Tools"

如何使用cpanspec

cpanspec的语法非常简单:

cpanspec moduleNameHere
cpanspec [options] moduleNameHere

如何在RHEL/CentOS上使用cpanspec构建Perl模块rpm文件

假设我们需要一个支持lchown()系统调用的perl接口,在支持该平台的平台上。

这里将构建Perl CPAN模块rpm文件Lchown:

$ cpanspec --follow --packager 'admin' -v Lchown

其中:

  • --follow将构建依赖项添加到要处理的模块列表中
  • --packager打包程序的名称和电子邮件地址。覆盖~/.rpmmacros中的%packager宏。
  • -v显示详细构建新型
  • Lchown生成一个规范文件,以从CPAN风格的Lchown的Perl模块发行版本构建rpm

命令将在当前目录中生成两个文件,如下所示:

$ ls *.tar.gz *.spec
`Lchown-1.01.tar.gz perl-Lchown.spec`

perl-Lchown.spec文件描述了rpmbuild如何构建和打包Lchown Perl模块。

$ cat perl-Lchown.spec

准备源目录

使用mkdir命令创建目录 ~/rpmbuild/SOURCES/:

$ mkdir -pv ~/rpmbuild/SOURCES/

将Lchown-1.01.tar.gz源文件复制到SOURCES目录中,供rpmbuild命令使用:

$ cp -v ~/Lchown-1.01.tar.gz ~/rpmbuild/SOURCES/

使用rpmbuild构建RPM

运行以下命令:

$ rpmbuild -ba perl-Lchown.spec

rpmbuild命令的-ba选项指明将从指定的.spec文件构建源代码和二进制包。

输出示例:

Wrote: /home/Hyman/rpmbuild/RPMS/x86_64/perl-Lchown-1.01-1.el7.centos.x86_64.rpm
Wrote: /home/Hyman/rpmbuild/RPMS/x86_64/perl-Lchown-debuginfo-1.01-1.el7.centos.x86_64.rpm

安装perl-Lchown-1.01-1.el7.centos.x86_64.rpm文件:

$ sudo yum install ~/rpmbuild/RPMS/x86_64/perl-Lchown-1.01-1.el7.centos.x86_64.rpm

给rpm文件配置签名以获得安全性(前提是您已为GPG配置了密钥):

$ rpmsign --addsign ~/rpmbuild/RPMS/x86_64/perl-Lchown-1.01-1.el7.centos.x86_64.rpm