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

时间:2012-11-02 00:12:32

标签: perl heroku dbi

所以我有我的Ruby-on-rails应用程序,我成功发布到heroku。但是为了填充数据库,我有几个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

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

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

2 个答案:

答案 0 :(得分:3)

你将不得不调查Heroku的Perl Buildpacks,其中我知道Perloku的存在,还有两个人称自己为perl-heroku。

Buildpacks尝试安装Heroku本身不支持的环境,比如Perl。我找到了一些安装Mojolicious,另一个安装了apache2 / mod_perl env。

你必须与buildpack维护者交谈,看看他们是否安装了DBI / DBD :: mysql,但很可能他们会这样做,只是基于这些模块的普及。

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

答案 1 :(得分:2)

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


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

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