如何将 perl 模块转换为 deb 包?

How to convert perl modules into deb packages?

我的团队正在交付需要一些 perl 模块的产品,并且由于我们交付了完整的 OS 安装程序 (Ubuntu 12.04),我们希望这些模块作为 .deb 包。我已经能够按照 here 的说明构建其他一些 perl(如 Algorithm::LUHN、Env::C、Linux::PID 和 Config::Properties),但遇到问题Apache2::SizeLimit

尝试使用 Apache-SizeLimit-0.96 和 Apache-SizeLimit-0.97...以及文档中描述的所有方法。还尝试了不同的 OSs 版本; Ubuntu 14.04.2,Ubuntu 12.04.5(全新安装),所有尝试都以相同的错误结束:

test@test:~$ dh-make-perl --build --cpan Apache::SizeLimit
去读'/home/test/.cpan/Metadata'
  数据库生成于 2015 年 3 月 19 日星期四 02:17:02 GMT
CPAN:Digest::SHA 加载正常 (v5.61)
/home/test/.cpan/sources/authors/id/P/PH/PHRED/Apache-SizeLimit-0.97.tar.gz 的校验和 ok
Apache-SizeLimit-0.97/
Apache-SizeLimit-0.97/更改
Apache-SizeLimit-0.97/安装
Apache-SizeLimit-0.97/lib/
Apache-SizeLimit-0.97/许可证
Apache-SizeLimit-0.97/Makefile.PL
Apache-SizeLimit-0.97/MANIFEST
Apache-SizeLimit-0.97/MANIFEST.SKIP
Apache-SizeLimit-0.97/META.json
Apache-SizeLimit-0.97/META.yml
Apache-SizeLimit-0.97/自述文件
Apache-SizeLimit-0.97/t/
Apache-SizeLimit-0.97/t/apache/
Apache-SizeLimit-0.97/t/apache2/
Apache-SizeLimit-0.97/t/pod.t
Apache-SizeLimit-0.97/t/response/
Apache-SizeLimit-0.97/t/response/TestApache/
Apache-SizeLimit-0.97/t/response/TestApache2/
Apache-SizeLimit-0.97/t/response/TestApache2/basic.pm
Apache-SizeLimit-0.97/t/response/TestApache2/check_n_requests2.pm
Apache-SizeLimit-0.97/t/response/TestApache2/deprecated.pm
Apache-SizeLimit-0.97/t/response/TestApache2/zzz_check_n_requests.pm
Apache-SizeLimit-0.97/t/response/TestApache/basic.pm
Apache-SizeLimit-0.97/t/response/TestApache/check_n_requests2.pm
Apache-SizeLimit-0.97/t/response/TestApache/deprecated.pm
Apache-SizeLimit-0.97/t/response/TestApache/zzz_check_n_requests.pm
Apache-SizeLimit-0.97/t/apache2/all.t
Apache-SizeLimit-0.97/t/apache/all.t
Apache-SizeLimit-0.97/lib/Apache/
Apache-SizeLimit-0.97/lib/Apache2/
Apache-SizeLimit-0.97/lib/Apache2/SizeLimit.pm
Apache-SizeLimit-0.97/lib/Apache/SizeLimit/
Apache-SizeLimit-0.97/lib/Apache/SizeLimit.pm
Apache-SizeLimit-0.97/lib/Apache/SizeLimit/Core.pm
CPAN:File::Temp 加载正常 (v0.22)
================================================ ====================
解压缩的 tarball 已经存在,目录重命名为 /home/test/Apache-SizeLimit-0.97.13910
================================================ ====================
使用 META.json
发现:Apache2-SizeLimit 0.97 (libapache2-sizelimit-perl arch=all)
cat: /etc/mailname: 没有那个文件或目录
无法加载 APT 内容。
请安装 'apt-file' 包(至少版本 2.5.0)和
运行 'apt-file update' 作为 root。
依赖项未更新。
使用维护者:测试
找到文档:README
cat: /etc/mailname: 没有那个文件或目录
使用规则:/usr/share/dh-make-perl/rules.dh7.tiny
cat: /etc/mailname: 没有那个文件或目录
make: 进入目录`/home/test/Apache-SizeLimit-0.97'
dh 清洁
   dh_testdir
   dh_auto_clean
   dh_clean
make: 离开目录`/home/test/Apache-SizeLimit-0.97'
make: 进入目录`/home/test/Apache-SizeLimit-0.97'
建造
   dh_testdir
   dh_auto_configure
找不到 mod_perl 安装
错误是:无法在@INC 中找到 mod_perl2.pm(@INC 包含:/etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) 在 Makefile.PL 第 147 行。
dh_auto_configure: perl Makefile.PL INSTALLDIRS=供应商返回退出代码 2
make: *** [build] 错误 2
make: 离开目录`/home/test/Apache-SizeLimit-0.97'
无法创建 deb 包:'debian/rules build' 失败。

如有任何修复帮助,我们将不胜感激

通常当您尝试在 Debian 上构建某些东西并收到有关缺少某些东西的消息时,您需要安装一个 'dev' 软件包 - 一个包含诸如头文件之类的东西的东西运行时。

我只是猜测,但在您的情况下,您可能需要安装:libapache2-mod-perl2-dev

分享它是如何解决的。正如@grant-mclean 回答的那样;我缺少一个 -dev 包:"apache2-dev" (apache2-threaded-dev)。 有了它,并跳过测试,我能够构建 .deb 包。

sudo apt-get install devscripts dh-make-perl libapache2-mod-perl2 libapache2-mod-perl2-dev apache2-threaded-dev
export DEB_BUILD_OPTIONS="$DEB_BUILD_OPTIONS nocheck"
dh-make-perl --build --cpan Apache::SizeLimit