1

所以我有我成功发布到 heroku 的 Ruby-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

(这有同样的问题,无法保存文件)

我有一种感觉,我可能会以完全错误的方式进行操作,但我无法弄清楚我需要做什么来运行这些脚本。

4

2 回答 2

3

您将不得不调查 Heroku 的 Perl Buildpacks,其中我知道 Perloku 的存在,另外两个自称类似于 perl-heroku。

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

您必须与 buildpack 维护人员交谈以了解他们是否安装了 DBI/DBD::mysql,但很可能他们安装了,这只是基于这些模块的流行程度。

如果你做到了,那么你所要做的就是同步数据库:-)

于 2012-11-02T23:25:22.253 回答
2

好吧,我从客户支持那里得到了答案,只是将其粘贴在这里


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

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

于 2012-11-06T16:10:23.720 回答