Mac Os X 10.6.8에 최신 버전의 Apache2.x를 설치하는 데 시간이 좀 걸렸습니다.
./configure를 통해 Apache를 구성할 때 Darwin 레이아웃을 지정했습니다. 이 레이아웃은 기존 Apache 설치의 경로 설정을 가정합니다. 내 목표는 이전 아파치 설치를 교체하는 것이기 때문에 이것이 제가 원하는 것입니다.
make를 실행한 다음 물론 sudo make install을 실행했습니다.
나는 다음을 수행하여 아파치 버전을 확인했습니다.
apachetcl -v
그리고 나는 얻었다
Server version: Apache/2.4.1 (Unix)
Server built: Mar 31 2012 01:52:54
어느 것이 좋니. 그런데 여기에 이상한 부분이 있습니다. /etc/apache2에서 '이전' httpd.conf 파일을 확인했는데 수정 날짜가 오래되었습니다.
나는 아파치를 실행해 보기 전까지는 그 사실을 전혀 알지 못했습니다. Apache가 새 버전과 호환되지 않는 일부 확장을 로드하려고 했습니다.
이로 인해 /usr/libexec/apache2 디렉토리를 확인하게 되었고 모듈이 두세 개를 제외하고는 최근에 수정되지 않은 것을 확인했습니다. 기본적으로 sudo make install은 가능한 모든 파일을 덮어쓰지 않았습니다.
What is the convention here? Should make install overwrite everything or not?
나는 개발자가 구성 스크립트와 Makefile을 어떻게 작성했는지에 달려 있다고 가정합니다.
나는 make install을 다시 실행하기 전에 내가 알고 있던 기존 Apache 디렉토리에 대해 rm -rf를 수행하게 되었습니다. 그 이후에는 모든 것이 신선했습니다.
답변1
Makefile
발생하는 유일한 일이 실행되는 동반 스크립트 또는 그에 정의되어 있다는 점에서 귀하는 정확합니다 . 소스에서 소프트웨어를 업그레이드할 때 "모범 사례"는 일반적으로 원래 소스 설치 디렉터리를 uninstall
실행하거나 삭제하지 않은 경우 옵션을 사용하는 것입니다 .make clean
/usr/local
하지만 프로그램이 외부에 파일을 설치한 경우 패키지 관리자가 추가한 파일이 제거될 수 있으므로 주의해야 합니다 . Apache와 같은 기본 구성 파일은 손상되지 않고 설치 중에 삭제되는 경우가 많으며 보존될 수 있습니다. 항상 그런 것은 아니지만. -b
또는 --backup
옵션을 설치하여 모든 대상을 백업할 수 있습니다 .
편집하다:Makefile.in
현재 버전 을 살펴보면 httpd
여러 cp
명령에 소유권과 타임스탬프를 유지하는 스위치가 추가된 것처럼 보입니다 -p
.