如何在Heroku机器上安装perl的DBI模块



所以我有我成功发布给Heroku的Ruby-on-on-Rails应用程序。但是,要填充数据库,我有几个Perl脚本,这些脚本基本上将本地数据库上的表与远程数据库同步。

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

当我尝试运行脚本时,我会收到以下错误(最新的perl是通过方式安装的)

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

apt-get install libdbi-perl

这给了我

的输出
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.

[这可能是无关的]我试图运行此命令

dpkg --configure -a

,但它告诉我它需要超级用户特权

su -l root -c "dpkg --configure -a"
  • 要求提供root密码,显然我不知道密码(不是Heroku登录),不知道它可能是什么。

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

$perl -MCPAN -e shell
cpan> install DBI

(这个问题也没有能够保存文件的问题)

我有一种感觉,我可能会以错误的方式完全处理它,但是我不知道我需要做什么来运行这些脚本。

您将不得不为Heroku调查Perl Buildpacks,我知道Perloku的存在,另外两个人称自己为Perl-Heroku的台词。p> buildpacks尝试安装Heroku不像Perl这样的本地支持的环境。我找到了一些安装莫约利奇,另一个安装了apache2/mod_perl env。

您必须与buildpack维护者进行交谈,以找出他们是否已安装了DBI/DBD :: MySQL,但是它们很可能只是基于这些模块的受欢迎程度。

如果您走了那么远,那么您要做的就是同步数据库: - )

我得到了客户支持的答案,只是在这里粘贴


不幸的是,我们不支持在堆栈中安装其他库或二进制文件。最好的解决方法是将这些供应商进入您的项目。您需要使用64位Linux版本来使其在Heroku上工作;在静态上编译还可以帮助确保包括所需的任何依赖项。同样,对于依赖外部库的宝石,我们建议通过静态编制宝石并将其供应到您的项目中。

如果您确实希望尝试供应您的二进制,图书馆或宝石,则可以将Heroku用作构建环境。我们的一位工程师创建了一个构建服务器,该服务器允许您上传源代码,运行编译步骤,然后下载结果二进制。您可以在这里找到此项目:https://github.com/heroku/vulcan

最新更新