Как скомпилировать готовую к развертыванию последнюю версию poppler-utils для Amazon Linux

У меня есть сервер, работающий на AWS Linux. Приложение использует poppler-utils.

Сервер интегрирован с CI. Таким образом, все необходимые зависимости устанавливаются до развертывания приложения. Одна из зависимостей — poppler-utils.

До сих пор я устанавливал его с помощью $ yum install poppler-utils. Недавно я понял, что версия в репозитории Amazon Linux не обновлялась целую вечность (0.26.5 по сравнению с последней на Ubuntu — 20.08 — разница в версии составляет 6 лет).

Я, конечно, могу собрать и установить (используя make и make install в исходном коде) на одной машине. Для целей CI/CD мне нужно что-то быстрое в установке и развертывании (пакеты yum отлично подходят для этого).

Как подготовиться к развертыванию последней версии poppler-utils?

Несколько идей, которые я изучил:

  1. Попробуйте установить из другого репозитория (не amazon linux), в котором установлена ​​последняя версия poppler-utils.
  2. Создайте файл rpm самостоятельно. Сам никогда не строил, так что задача выглядит сложной.

Ищет какое-то направление, по которому идти по пути.


person silent_grave    schedule 17.03.2021    source источник
comment
Как насчет создания собственного AMI с скомпилированной и настроенной новой версией poppler-utils?\   -  person Marcin    schedule 17.03.2021
comment
Привет @Marcin, это замечательная идея. Позвольте мне попробовать это!   -  person silent_grave    schedule 17.03.2021
comment
Дайте мне знать, как это будет происходить. Если это сработает, я могу предоставить ответ с дополнительной информацией.   -  person Marcin    schedule 17.03.2021
comment
Решение на основе @Marcin AMI сработало для меня. Пожалуйста, дайте ответ, чтобы я мог принять его. Кроме того, сборка poppler не была простой, так как для этого требуется сначала собрать cmake и установить некоторые другие пакеты. Может быть, zethw может дать другой ответ с пошаговыми инструкциями.   -  person silent_grave    schedule 23.03.2021
comment
Спасибо. Ответ предоставлен. Вы могли бы создать новый вопрос для сборки poppler, на который вы могли бы даже ответить себе для дальнейшего использования.   -  person Marcin    schedule 23.03.2021


Ответы (3)



На эту тему я потратил около трех дней. Оказывается, ОС Amazon Linux — это, по сути, CentOS7, и похоже, что 0.26.5 (сентябрь 2014 г.) — последняя версия, доступная для CentOS7, 0.66.0 (июнь 2018 г.) для CentOS8 и 20.11.0 (ноябрь 2020 г.) для CentOS8 Stream. согласно https://pkgs.org/download/poppler-utils 21.03 является последней ( март 2021 г.)

Я безуспешно пытался собрать свои собственные версии библиотек через кучу http://www.linuxfromscratch.org статьи и много пререков. Самая большая проблема, которую я обнаружил, заключается в том, что версия, которую я собираю, не используется, а версия, установленная через yum, используется, поэтому существует множество зависимостей версий, которые я пытался решить, которые не используются. признан. Я не хочу связываться с нямом и портить все остальное.

Итак, я пошел по пути Docker... одной из тех вещей, которые, как я знаю, я должен был изучить, но так и не дошел до этого. Это идеальное решение. Я построил свой докер из установки утилит Poppler версии 0.82 в docker с обновленными до последней версии версиями.

После сборки Dockerfile создайте образ AMI, чтобы у вас была отправная точка и вам не нужно было ждать, пока все загрузится и снова соберется.

person zethw    schedule 23.03.2021

Большое спасибо @marcin и @zethw за ответы.

Я выбрал AMI + сборку poppler с нуля. Шаги высокого уровня:

  1. Создайте экземпляр, подходящий для создания AMI. В моем случае я использовал эластичный бобовый стебель для своего приложения. Следовательно, экземпляр должен был быть создан из AMI elasticbeanstalk.

  2. Подключитесь к этому AMI и соберите poppler. Вы заметите, что вам нужно много танцевать в библиотеке. Но, в конце концов, убедитесь, что $ pdftoppm --help возвращает правильный вывод (как способ проверки).

  3. Создайте AMI из экземпляра, который вы использовали на шаге 2.

Звучит просто, но вам придется столкнуться с несколькими проблемами:

  • Для получения последней версии cmake, поскольку для последней версии poppler требуется последняя версия cmake. Вам нужно будет создать это, поскольку репозиторий yum amazon не имеет последней версии.
  • При сборке poppler команда cmake с запросом на отсутствующие библиотеки. Это может варьироваться от Amazon Linux 1 до 2 и вашей настройки.
  • Не забудьте убедиться, что утилиты poppler (например, pdftoppm) находятся в пути в конце.

Совет

Я бы сказал, что ответ @zethw более устойчив в долгосрочной перспективе. Или подумайте о том, чтобы отказаться от Amazon Linux, если у вас есть такая роскошь.

person silent_grave    schedule 23.03.2021
comment
Вам удалось получить последнюю версию Poppler для сборки на Amazon Linux 2? Впечатляющий! К вашему сведению: я делаю еще один шаг вперед и работаю с pdf2image github.com/Belval/pdf2image для дальнейшего используйте подход Docker, отправив PR, чтобы добавить способ командной строки для вызова convert_from_path. Это оболочка вокруг pdftoppm и pdftocairo, которая будет работать в многопоточном режиме. Затем все, что вам нужно сделать, это извлечь последний (или определенную версию) образ Poppler Docker из репозитория, запустить контейнер и вызвать docker exec -it с помощью этого скрипта. Очень чистый. - person zethw; 24.03.2021
comment
@zethw Было бы очень хорошо. Пожалуй, лучший подход. - person silent_grave; 25.03.2021