Мне нужно обновить 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, и s o on для всех связанных файлов.
Возможно, самый простой способ в вашей ситуации - это собрать весь статический двоичный файл, затем скопировать весь каталог исходного кода на CentOS 5 и оттуда запустить make install оттуда все файлы будут установлены там, где они ожидаются, согласно действующему префиксу ./configure.