Запуск 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

Если вы используете рубин, вы можете использовать драгоценный камень Кристин с основной веткой

Другие вопросы по тегам