Мне нужно обновить Apache httpd
на устаревшей 32-разрядной машине Centos 5, работающей в производственной среде. Поскольку все официальные версии репо устарели, я пытаюсь скомпилировать его в контейнере докера; но, похоже, это не удается по разным причинам:
1) жалуется на старые PCRE
версия:
util_pcre.c:128: error: 'PCRE_DUPNAMES' undeclared (first use in this function)
Я исправил это, добавив правильное значение в pcre.h
просто посмотреть, куда он идет ...
2) Затем он жалуется на какую-то особенность в flex
чего нет в установленной версии:
"/usr/src/httpd-2.4.43/server/util_expr_scan.l", line 32: unrecognized %option: reentrant
"/usr/src/httpd-2.4.43/server/util_expr_scan.l", line 33: unrecognized %option: bison-bridge
flex: could not create
Я думаю, что пытаюсь решить сложную проблему, какие у меня есть альтернативы?
Это нормально статически компилировать httpd
в Centos 7.x
и запустить это в Centos 5.x
машина? Есть ли при этом какие-то предостережения? Другой вариант - скомпилировать все с нуля на Centos 5.x, но это похоже на некую задачу :)
Обновление httpd
машина получает отказ - может кто-нибудь посоветовать работоспособное решение?
ОС должна быть обновлена. Делать это один раз в десять лет - это минимум для обслуживания этих операционных систем LTS общего назначения. Невыполнение этого требования является безответственным, поскольку в конце жизненного цикла CentOS 5 не исправил уязвимости безопасности. Добавление компенсирующих мер безопасности для уязвимого программного обеспечения - это больше работы, чем его обновление.
Вам нужно серьезное обновление httpd по другим причинам. Это уже небольшой проект по чтению примечаний к выпуску, настройке конфигурации и тестированию.
Компиляция из исходников добавляет к работе: создание, установка и обслуживание. Хотя вы, конечно, можете это сделать, но вы не будете так быстро или так же хорошо протестированы, как сборки EL httpd. И ваши собственные сборки не улучшают технического долга, связанного с отсутствием обновления ОС.
Итак, настройте веб-сервер на CentOS 8, протестируйте и начните работу.
Если это не сработает, оставьте обновленный хост, но ограничьте использование устаревшего программного обеспечения. Например, в контейнере. И запустить проект, чтобы правильно его обновить или заменить.
Вы должны знать о последствиях для безопасности при использовании такой устаревшей версии CentOS, я не буду вдаваться в подробности, если вы делаете это из-за лени, пожалуйста, следуйте рекомендациям @John Mahowald.
Теперь, если вы скомпилируете статический httpd на новом Linux-сервере, он будет работать на вашем старом CentOS, но имейте в виду, что скомпилированный двоичный файл httpd является лишь его частью, есть много дополнительных файлов, которые могут быть чем-то близким к обычному. , возьми apachectl команду в качестве примера, или внешние библиотеки, которые могут быть запрошены из вашего httpd.conf.
Кроме того, когда вы компилируете новую версию apache, он обычно устанавливает эффективный префикс в / usr / local, поэтому, если вы не создадите PREFIX = /, вы будете ожидать файлы конфигурации apache из / usr / local / etc / httpd вместо этого. из / etc / httpd и так далее для всех связанных файлов.
Возможно, самый простой способ в вашей ситуации - это создать весь статический двоичный файл, затем скопировать весь каталог исходного кода на CentOS 5 и оттуда запустить сделать установку оттуда все файлы будут установлены там, где они ожидаются, в соответствии с действующим префиксом ./configure.