Я потратил некоторое время на установку новой версии Apache2.x на свой Mac Os X 10.6.8.
При настройке apache через ./configure я указал макет Darwin. Этот макет предполагает настройку пути существующей установки apache, что мне и нужно, поскольку моя цель — заменить старую.
Я запустил make, а затем, конечно, sudo make install.
Я проверил версию Apache, выполнив команду
apachetcl -v
и я получил
Server version: Apache/2.4.1 (Unix)
Server built: Mar 31 2012 01:52:54
Что хорошо. Но вот что странно. Я проверил «старый» файл httpd.conf в /etc/apache2, и у него была старая дата модификации.
Я не понял этого, пока не попробовал запустить apache. Apache попытался загрузить некоторые расширения, которые были несовместимы с новой версией.
Это заставило меня проверить каталог /usr/libexec/apache2 и я увидел, что модули не были недавно изменены, за исключением двух или трех. По сути, sudo make install не перезаписал все возможные файлы.
What is the convention here? Should make install overwrite everything or not?
Я предполагаю, что это зависит от того, как разработчики написали скрипт конфигурации и Makefile.
Я закончил тем, что сделал rm -rf на всех существующих каталогах apache, о которых я знал, прежде чем снова запустить make install. После этого все было новым.
решение1
Вы правы относительно того, что Makefile
единственные вещи, которые происходят, определены в нем или сопутствующих скриптах, которые запускаются. «Лучшие практики» при обновлении программного обеспечения из источника обычно заключаются в использовании опции, uninstall
если вы не запускали make clean
или удаляли исходный каталог установки источника.
Однако вам следует быть осторожным, если программа установила файлы вне /usr/local
вас, она может удалить файлы, добавленные менеджером пакетов. Часто основные файлы конфигурации, такие как Apache, не затираются и просто удаляются во время установки, они могут или сохраняются. Хотя это не всегда так. Вы можете сделать резервную копию каждого назначения с помощью параметра -b
или --backup
для установки.
Редактировать:
Если взглянуть на Makefile.in
текущую версию, httpd
то можно увидеть, что несколько команд cp
добавляют -p
переключатель, который сохраняет владельца и временные метки.