Heroku上安装XML::LibXSLT失败

8
我无法在Heroku上安装XML::LibXSLT。尽管在Heroku堆栈cedar和cedar-14中被列为已安装的Ubuntu软件包(请参见此处),但似乎所需的库 gdbm 未安装。类似的问题已经在这个问题中报告过,但在Heroku上不允许安装新的Ubuntu软件包。要重现错误,请在cpanfile中创建一个最小的存储库,需要XML :: LibXSLT。
$ git init
$ echo 'requires "XML::LibXSLT";' > cpanfile
$ echo 'sub { [200,[], ['Hello World']] }' > app.psgi
$ git add cpanfile app.psgi
$ git commit -m "initial commit"

创建一个新的Heroku应用程序,并使用heroku-buildpack-perl来运行cpanm:
$ heroku create --stack cedar --buildpack https://github.com/miyagawa/heroku-buildpack-perl.git
$ git push heroku master

错误日志包含
! Installing XML::LibXSLT failed. See /app/.cpanm/work/1412752363.1663/build.log for details. Retry with --force to force install it.
! Installing the dependencies failed: Module 'XML::LibXSLT' is not installed
! Bailing out the installation for ..

为了获得更详细的错误信息,请尝试手动安装:

$ heroku run cpanm --verbose XML::LibXSLT

出现以下错误

....
LD_RUN_PATH="/usr/lib" cc  -shared -O2 -g -L/usr/local/lib -fstack-protector LibXSLT.o perl-libxml-mm.o  -o blib/arch/auto/XML/LibXSLT/LibXSLT.so   \
   -L/usr/lib -lxslt -lxml2 -lz -lm -lexslt -lgdbm -lgdbm_compat -ldl -lm -lpthread -lc -lcrypt  \

/usr/bin/ld: cannot find -lgdbm
collect2: ld returned 1 exit status
make: *** [blib/arch/auto/XML/LibXSLT/LibXSLT.so] Error 1
FAIL
! Installing XML::LibXSLT failed. See /app/.cpanm/work/1412753360.2/build.log for details. Retry with --force to force install it.

正如上面提到的,Heroku已经安装了Ubuntu软件包libgdbm3libxslt1-dev(确认使用heroku run dpkg --get-selection),所以我想知道为什么编译仍然失败。

7
你需要安装 libgdbm-dev 软件包。 *-dev 软件包包含所需的头文件,用于链接。由于你不能安装软件包,因此你可以尝试使用位于你控制下的目录中的头文件安装 XML::LibXSLT。然后,你需要将相应的路径传递给编译器。 - amon
1
谢谢。我认为这个答案将有助于调整编译器设置。 - Jakob
3
我刚向Heroku提出请求,在他们的平台中添加libgdbm-dev。 - Jakob
1个回答

2

尝试安装libgdbm的开发者包。

apt-get install libgdbm-dev

CPAN通常需要安装开发包才能安装模块。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接