(перенесено из stackoverflow.com)
Недавно я унаследовал набор машин с Red Hat Enterprise Linux 5.4. Они были снабжены Apache Server v2.2.3, установленным из rpms. Мне нужно обновить Apache до версии 2.2.19. По разным причинам я создаю Apache из исходников. Установить мою новую версию Apache не проблема, но у меня есть два экземпляра Apache: v2.2.3 в / usr / sbin / httpd и v2.2.19 в / usr / local / sbin / httpd. В большинстве случаев я бы просто удалил существующую версию Apache с помощью rpm -e, но есть масса других rpms, которые имеют Apache в качестве зависимости. Кажется, я не могу найти rpm Apache 2.2.19 для REL 5.4, поэтому я не могу выполнить rpm --upgrade. Если я соберу Apache 2.2.19 с префиксом существующего экземпляра Apache (/ usr / sbin / httpd), установка завершится неудачно, поскольку / usr / sbin / httpd уже существует. Я исследовал использование yum для обновления пакетов, но сервер находится за брандмауэром и не видит внешний мир.
На данный момент я склоняюсь к созданию собственного rpm, но это кажется большим количеством дополнительной работы для, казалось бы, небольшой задачи. Похоже, я не понимаю чего-то действительно простого.
Я обычно использую пакеты, предоставляемые дистрибутивом, но если мне по какой-либо причине нужно скомпилировать что-то вроде Apache из исходного кода, я обязательно
/usr/local/apache2
или /opt/apache2
/etc/init.d/apache2_custom
) - испорченная работа со скриптами, предоставленными дистрибутивом, рано или поздно вас укусит/etc/motd
и другая документация, чтобы четко указать тот факт, что этот сервер использует самкомпилированный пакет FOO Вы действительно очень хотите создать RPM. Не нужно делать это с нуля; будет любое количество существующих пакетов, которые вы можете использовать (или, по крайней мере, использовать в качестве основы), включая существующий пакет RPM.
Установка из исходного кода в среде, управляемой пакетами, просто вызовет проблемы, от любого, кому придется администрировать сервер в будущем, или даже от вас, когда через 3 года вы забудете, какой ужас вы навлекли.
Переместите свой старый httpd
двоичный файл в сторону, затем установите.
mv /usr/sbin/httpd /usr/sbin/httpd.old -v
, установите свой --prefix=/usr/sbin
для Apache ./configure
, затем установите. Обязательно сначала сделайте резервную копию файлов конфигурации Apache. (tar czpf /etc/httpd-backup-$(date +%s).tar.gz /etc/httpd/
)
Хотя это может привести вас на скользкую дорожку удаления зависимостей, вам следует проверить, какие пакеты требуют установки httpd.
# rpm -q --whatrequires httpd
Если вы можете удалить пакеты, то у вас может быть свой ответ, если вы не можете удалить apache из-за зависимостей, и вам абсолютно необходимо запустить более новую версию, чем я бы предложил отключить rpm-версию httpd и остановить его запуск при загрузке.
# service httpd stop
# chkconfig httpd off
Я бы предложил затем установить вашу скомпилированную версию и запустить ее из другого каталога для конфигурации / двоичных файлов. Если вы пойдете по этому маршруту, также будет разумно скопировать сценарий инициализации по умолчанию, изменить пути и добавить его под другим именем.
# chkconfig --add httpd-custom
# chkconfig httpd-custom on
Имейте в виду, что если вы используете поддержку Redhat, они не помогут вам с настраиваемой скомпилированной версией httpd, и они действительно не поддержат вас, если вы испортили исходные двоичные файлы.