我想在Heroku上运行pdf2htmlEX。起初,我想在一个vm上编译pdf2htmlex,它的堆栈与heroku相同,然后在git repo上包含二进制代码。这不起作用(我一直遇到依赖关系的问题)。
由于没有专门用于运行pdf2htmlEX
的heroku构建包,因此我决定尝试将heroku-buildpack-multi与heroku-buildpack-ruby
和heroku buildpack-apt一起使用(buildpack apt在编译和运行时都添加了对基于apt的依赖项的支持)。pdf2htmlex包不在主ppa中(它在ppa:coolwanglu/pdf2htmlex中),我不能将pdf2htmlex添加到Aptfile
(这是指定apt依赖项的地方)。
我得到了pdf2htmlex的依赖项:
pdf2htmlex
Depends: libc6
Depends: libcairo2
Depends: libfontforge1
Depends: libfreetype6
Depends: libgcc1
Depends: libpoppler44
Depends: libstdc++6
Suggests: ttfautohint
考虑到这一点,我做了如下准备:
libc6
libcairo2
libfontforge1
libfreetype6
libpoppler44
libgcc1
libstdc++6
ttfautohint
http://ftp.us.debian.org/debian/pool/main/p/pdf2htmlex/pdf2htmlex_0.14.6+ds-1+b1_amd64.deb
问题是,如果我在一次性dyno中得到bash提示并尝试运行
pdf2htmlex I收到以下错误:
pdf2htmlEX: /app/.apt/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by pdf2htmlEX)
pdf2htmlEX: /app/.apt/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by pdf2htmlEX)
pdf2htmlEX: /app/.apt/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /app/.apt/usr/lib/x86_64-linux-gnu/libpoppler.so.57)
我在stackoverflow上找到的关于这个特定错误的几篇文章没有特别的帮助。这似乎与
libstdc++6
有关,但我不知道如何解决它。有什么想法吗?另外,如果你知道在heroku上运行pdf2htmlex的更简单的方法,请告诉我。
最佳答案
我刚得到这个工作-非常感谢你的职位,使我在正确的方向。
首先,我使用了ppa中的this package而不是您引用的debian包。
问题似乎是,您引用的包是根据libstdc++6的不同版本编译的,而不是根据libstdc++6
中Aptfile
行安装的版本编译的。为了解决这个问题,我们将libstdc++6
行替换为对特定的、更新的.deb
的显式引用。
this version hosted on kernel.org
我还替换了libpoppler57引用,但您可能不需要。
我的最后一个工作文件:
libc6
libfontforge1
libgcc1
libjs-pdf
http://mirrors.kernel.org/ubuntu/pool/main/g/gcc-5/libstdc++6_5.3.1-5ubuntu2_amd64.deb
https://mirrors.kernel.org/ubuntu/pool/main/p/poppler/libpoppler57_0.38.0-0.ubuntu1_amd64.deb
https://launchpad.net/~coolwanglu/+archive/ubuntu/pdf2htmlex/+files/pdf2htmlex_0.12-1~git201411121058r1a6ec-0ubuntu1~trusty1_adm64.deb
ttfautohint
希望这有帮助!