Software-Installation

make install 會覆蓋文件嗎?

  • September 24, 2021

我花了一些時間在我的 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 。在那之後,一切都是新鮮的。

Makefile關於其中定義的唯一發生的事情或執行的伴隨腳本,您是正確的。從原始碼升級軟體時的“最佳實踐”通常是uninstall在您沒有執行make clean或刪除原始原始碼安裝目錄的情況下使用該選項。

但是,您必須小心,如果程序在/usr/local您之外安裝了文件,可能會刪除包管理器添加的文件。通常,像 Apache 這樣的主要配置文件不會被破壞,而是在安裝過程中被簡單地刪除,它們可以或被保留。儘管情況並非總是如此。-b您可以使用或--backup選項來備份每個目的地進行安裝。

編輯: 查看它Makefile.in的目前版本,httpd他們的幾個命令似乎cp添加了-p保留所有權和時間戳的開關。

引用自:https://unix.stackexchange.com/questions/35453