私は 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 ディレクトリをチェックしたところ、2、3 個を除いてモジュールは最近変更されていないことがわかりました。基本的に、sudo make install はすべてのファイルを上書きしていませんでした。
What is the convention here? Should make install overwrite everything or not?
開発者が configure スクリプトと Makefile をどのように記述したかによって決まると想定しています。
結局、make install を再度実行する前に、私が知っている既存の Apache ディレクトリに対して rm -rf を実行しました。その後、すべてが新しくなりました。
答え1
Makefile
発生するのは、その中で定義されているもの、または実行される付随スクリプトのみであるという点については、あなたの言う通りです。ソースからソフトウェアをアップグレードする際の「ベスト プラクティス」は、通常、uninstall
を実行していない場合は、オプションを使用するmake clean
か、元のソース インストール ディレクトリを削除することです。
ただし、プログラムが外部にファイルをインストールした場合、/usr/local
パッケージ マネージャーによって追加されたファイルが削除される可能性があるため、注意が必要です。Apache などのメイン構成ファイルは、インストール中に上書きされずに単に削除されることが多く、保存されるか、保持されます。ただし、常にそうであるとは限りません。インストール時に または-b
オプションを使用して、すべての保存先をバックアップできます--backup
。
編集:Makefile.in
現在のバージョン を見ると、httpd
いくつかのcp
コマンドで-p
所有権とタイムスタンプを保持するスイッチが追加されているようです。