我花了一些時間在 Mac Os X 10.6.8 上安裝較新版本的 Apache2.x。
當透過 ./configure 設定 apache 時,我指定了 Darwin 佈局。此佈局假定現有 apache 安裝的路徑設置,這正是我想要的,因為我的目標是取代舊的。
我運行了 make,然後當然是 sudo make install。
我透過以下方式檢查了 apache 版本
apachetcl -v
我得到了
Server version: Apache/2.4.1 (Unix)
Server built: Mar 31 2012 01:52:54
這很好。但這是奇怪的部分。我檢查了 /etc/apache2 中的「舊」httpd.conf 文件,它有一個舊的修改日期。
直到我嘗試運行 apache 之後我才真正弄清楚這一點。 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
保留所有權和時間戳的開關。