Запуск pdf2htmlEX на Heroku
Я пытаюсь запустить pdf2htmlEX на Heroku. Сначала я подумал о компиляции pdf2htmlEX на виртуальной машине с тем же стеком, что и у Heroku, а затем о включении двоичного файла в репозиторий git. Это не сработало (я продолжал получать проблемы с зависимостями).
Как нету героку buildpack для бега pdf2htmlEX
в частности, я решил попробовать использовать https://github.com/ddollar/heroku-buildpack-multi с heroku-buildpack-ruby
и heroku buildpack-apt (buildpack-apt добавляет поддержку зависимостей на основе apt как во время компиляции, так и во время выполнения). Пакет pdf2htmlEX отсутствует в основном PPA (он находится в ppa:coolwanglu/pdf2htmlex). Я не мог просто добавить pdf2htmlEX в Aptfile
(где вы указываете свои подходящие зависимости).
В итоге я получил зависимости для pdf2htmlEX:
pdf2htmlex
Depends: libc6
Depends: libcairo2
Depends: libfontforge1
Depends: libfreetype6
Depends: libgcc1
Depends: libpoppler44
Depends: libstdc++6
Suggests: ttfautohint
Принимая это во внимание, я сделал свой Aptfile следующим:
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
Проблема заключается в том, что если я получаю приглашение bash в одноразовом dyno и пытаюсь запустить pdf2htmlEX, я получаю следующую ошибку:
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)
Несколько статей об этой конкретной ошибке, которые я нашел в stackru, не были особенно полезны. Кажется, это как-то связано с libstdc++6
но я не могу понять, как это решить.
Есть идеи? Кроме того, если вы знаете более простой способ запуска pdf2htmlEX на heroku, пожалуйста, дайте мне знать.
1 ответ
Я только что заработал - большое спасибо за пост, который направил меня в правильном направлении.
Во-первых, я использовал этот пакет из ppa вместо того, на который вы ссылались.
Похоже, проблема в том, что пакет, на который вы ссылались, был скомпилирован для разных версий libstdC++6, чем тот, который установлен вашим libstdc++6
линия в вашем Aptfile
, Чтобы исправить, мы заменили libstdc++6
строка с явной ссылкой на конкретную, более свежую .deb
- Я использовал эту версию, размещенную на kernel.org
Я также заменил ссылку на libpoppler57, но вам может и не понадобиться.
Мой последний рабочий Aptfile:
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
Надеюсь это поможет!
Вместе с вышеупомянутыми библиотеками в Aptfile, пожалуйста, предоставьте data-dir
в pdf2htmlEX при конвертации.
Одна из основных проблем при конвертации - на Ubuntu. Pdf2htmlEX устанавливается на /usr/bin/pdf2htmlEX
тогда как на героку он установлен в /app/.apt/usr/bin/pdf2htmlEX
. И когда мы не предоставляем data-dir при его преобразовании по умолчанию, ищет/usr/bin/pdf2htmlEX
.
Протестировано на heroku-18 с https://github.com/pdf2htmlEX/pdf2htmlEX/tree/v0.16.0-poppler-0.62.0-ubuntu-18.04
Если вы используете рубин, вы можете использовать драгоценный камень Кристин с основной веткой