web-dev-qa-db-ja.com

`make install`はファイルを上書きしますか?

Mac Os X 10.6.8に新しいバージョンのApache2.xをインストールするのに時間がかかりました。

./configureを使用してApacheを構成するときに、Darwinレイアウトを指定しました。このレイアウトは、既存のApacheインストールのパス設定を前提としています。これは、古いものを置き換えることを目的としているためです。

Makeを実行してから、もちろんSudo makeinstallを実行しました。

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を再度実行する前に、知っていた既存のApachedirに対してrm-rfを実行することになりました。その後、すべてが新鮮でした。

5
Jerry Saravia

Makefileに関しては正しいです。発生するのは、それまたは実行されるコンパニオンスクリプトで定義されていることだけです。ソフトウェアをソースからアップグレードするときの「ベストプラクティス」は、make cleanを実行していないか、元のソースインストールディレクトリを削除していない場合は、通常uninstallオプションを使用することです。

ただし、プログラムが/usr/localの外部にファイルをインストールした場合は、パッケージマネージャーによって追加されたファイルを削除する可能性があるので注意が必要です。多くの場合、Apacheのような主要な構成ファイルは、インストール中に破壊されたり、単に削除されたりすることはなく、保持されるか、保持されます。これは常にそうであるとは限りませんが。 -bまたは--backupオプションをインストールして、すべての宛先をバックアップできます。

編集:httpdの現在のバージョンのMakefile.inを見ると、いくつかのcpコマンドが-pスイッチを追加しているように見えます。所有権とタイムスタンプを保持します。

7
2bc