Перезаписывает ли `make install` файлы?

Перезаписывает ли `make install` файлы?

Я потратил некоторое время на установку новой версии 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переключатель, который сохраняет владельца и временные метки.

Связанный контент