Назад | Перейти на главную страницу

Устанавливаете новое программное обеспечение (httpd) в старый Linux (Centos 5)?

Мне нужно обновить 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.