如何在Heroku机器上为Perl安装DBI模块

 2021-04-26 

How do I install DBI module for Perl on Heroku machine

所以我有我的Ruby-on-rails应用程序,我已成功将其发布到heroku。但是,要填充数据库,我有几个perl脚本,它们基本上将本地数据库中的表与远程数据库同步。

在我的开发机器上(在ec2上),它可以正常工作,但是随着时间的推移,我还安装了很多东西。

当我尝试运行脚本时,出现以下错误(顺便安装了最新的perl)

1
2
Can't locate DBI.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at copyStaff.pl line 4.
BEGIN failed--compilation aborted at copyStaff.pl line 4.

如何在heroku上为Perl安装DBI模块?
我尝试过bash

1
apt-get install libdbi-perl

这给了我

的输出

1
2
3
W: Not using locking for read only lock file /var/lib/dpkg/lock
E: Unable to write to /var/cache/apt/
E: The package lists or status file could not be parsed or opened.

[这可能无关紧要]
我试图运行此命令

1
dpkg --configure -a

但是它告诉我它需要超级用户权限

1
su -l root -c"dpkg --configure -a"
  • 要求输入root密码,显然我不知道密码(这不是heroku登录名),不知道可能是什么。

我也直接下载了文件,但是我需要超级用户访问权限。我也试过

1
2
$perl -MCPAN -e shell
cpan> install DBI

(存在无法保存文件的相同问题)

我觉得我可能会完全以错误的方式进行操作,但是我无法弄清楚运行那些脚本需要做什么。


您将不得不研究Heroku的Perl Buildpacks,我知道其中有Perloku的存在,另外两个人自称是perl-heroku。

Buildpacks尝试安装Heroku本机不支持的环境,例如Perl。我发现有些安装Mojolicious,另一种安装apache2 / mod_perl env。

您必须与buildpack维护人员联系,以了解他们是否安装了DBI / DBD :: mysql,但是很可能这样做,只是基于这些模块的普及程度。

如果到此为止,那么您要做的就是同步数据库:-)


好吧,我只是从这里获得客户支持的答案,

很遗憾,我们不支持在堆栈中安装其他库或二进制文件。最好的解决方法是将它们供应到您的项目中。您需要使用64位Linux版本才能使其在Heroku上运行;静态编译还可以帮助确保包含所需的任何依赖项。同样,对于依赖于外部库的gem,我们建议静态编译gem并将其供应到您的项目中。

如果您希望尝试出售二进制文件,库或gem,则可以将Heroku用作构建环境。我们的一位工程师创建了一个构建服务器,使您可以上传源代码,运行编译步骤,然后下载生成的二进制文件。您可以在这里找到该项目:
https://github.com/heroku/vulcan