web-dev-qa-db-ja.com

Ubuntuで2つのバージョンのApacheを実行していますが、1つを削除するにはどうすればよいですか?

私は次のようにしてubuntuにApacheをインストールしました:

Sudo -i
cd /usr/local/src
wget http://Apache.mirrors.tds.net/httpd/httpd-2.2.11.tar.gz
tar -xvf httpd-2.2.11.tar.gz
cd httpd-2.11.9
./configure --enable-layout=Debian --enable-deflate --enable-proxy --enable-proxy-html --enable-proxy-http --enable-proxy-balancer --enable-rewrite --enable-cache --enable-mem-cache --enable-ssl --enable-headers --enable-mods-shared=most
make
make install
exit

次に、次のようにしてphp5をインストールしました。

Sudo apt-get install php5

今私はApacheの2つのバージョンを持っています:

tony@bootsy/etc/Apache2 $ apachectl -v       
Server version: Apache/2.2.11 (Unix)
Server built:   May 26 2009 21:57:13
  tony@bootsy/etc/Apache2 $ Apache2ctl -v
Server version: Apache/2.2.8 (Ubuntu)
Server built:   Mar 10 2009 18:09:51

Apt-get remove、apt-getautoremoveなどを試しました。それらはすべてまだApacheの痕跡を残しています。私は明らかにApacheの1つのバージョンだけを実行したいのですが...しかし、どちらを実行するのが最善かわかりません... Apache/2.2.8(Ubuntu)を実行するのが最善でしょうか?とにかく、どうすれば他のバージョンを削除できますか?

Apacheなしでphp5をインストールする方法は明らかではありません...これはクレイジーだと思います。

ありがとう!

2
Tony

最初に知っておくべきことは、Apacheの2つのインスタンスをインストールするだけでなく、実際には2つの異なるインストールメカニズムを使用したことです。1つはコンパイルによるもので、もう1つは常駐のdpkg(apt経由で呼び出される)メカニズムを使用するものです。

どちらの方法も他の方法よりも有効ではありません。また、1つの方法のみを使用する必要があると断定的に述べることはできません。しかし、2つの異なるメカニズムを使用することに関する最初の問題をすでに特定しています。パッケージマネージャー(dpkg)は、手動でコンパイルされたインストールについて何も知りません。

Apt-get install php5のバージョンのApacheを使用することになった理由は、php5パッケージに組み込まれているのは多くの依存関係であるためです。 dpkg-queryを使用して、パッケージデータベースに依存関係を照会できます。

# dpkg-query -W -f='${Package} ${Version}\t${Maintainer}\n${Depends}\n' php5

php5 5.2.4-2ubuntu5.6   Ubuntu Core Developers <[email protected]>
libapache2-mod-php5 (>= 5.2.4-2ubuntu5.6) | php5-cgi (>= 5.2.4-2ubuntu5.6), 
  php5-common (>= 5.2.4-2ubuntu5.6)

libapache2-mod-php5へのリンクが表示されます。これは、インストールされたApacheを参照します。

削除に関して--apt-get remove Apache2は、パッケージマネージャーによってインストールされたApache2のバージョンを削除しますが、手動で追加されたファイルには触れません(また、触れたくありません)。システムの注意深い検査と分析が必要です。

運が良ければ、入力時にインストールを行ったmakeファイルmake install

make removeもあります

Apache2/httpdの場合-それほど贅沢はありませんが、インストールが進むにつれて、それはかなりクリーンなインストールなので、インストールしたディレクトリを識別できるはずです。

rm -rf/usr/local/Apache2(またはApacheをインストールした場所)

システムに配置されたほとんどのファイルを削除する必要があります。

クリーンインストールがない場合は、システムにインストールされているファイルを検索する必要があります。

手動でインストールを行った後にシステムに何が追加されたかを判断する一般的な方法の1つは、次のコマンドを実行することです。

find/-cmin -2 2>/dev/null | egrep -v '^(/ proc |/sys)'

次に、そのコマンドの出力を使用して、削除を検討する必要のあるファイルのリストを提供できます。

これはシステムに配置されたものを削除するための簡単なガイドではないことを理解していますが、あなたが経験している課題は、人々がパッケージマネージャーを使用してシステムを管理するために一生懸命働く理由です(クリーンな追加に加えて/ファイルの削除は、何かが変更されているかどうかを確認するためのバイナリ検証など、他の多くの便利な利点も提供します)

4
Gordon Shephard

'make install'を実行するときは、おそらくディストリビューションで管理する必要のあるディレクトリにソースからビルドされたApacheをインストールしました。

運が良ければ、Apacheには「makeuninstall」があり、インストールされているすべてのファイルが削除されます。それ以外の場合は、make installを再度実行し、出力をログに記録して、インストールしたファイル/ディレクトリを確認し、それらを削除します。完了したら、Ubuntuが提供するApacheを再インストールします(apt-get install --reinstall)。ファイルの一部が削除されている可能性があります。

次回は、ディストリビューションで管理されていない場所にインストールしてください。

./configure --prefix =/usr/local

または、「./ configure --prefix =/opt/Apache-2.2.11」を使用して、必要な場所にシンボリックリンクを作成することをお勧めします。

Apacheなしでphp5をインストールする方法は明らかではありません...これはクレイジーだと思います。

Ubuntuが提供するPHPは、Ubuntuが提供するApacheに対してコンパイルされ、テストされています。別のApacheを自分でインストールする場合は、phpも自分でインストールする必要があります。

提供されているUbuntuを使用する場合PHPわずかに異なるオプションでコンパイルされたApacheで、ソースからUbuntuパッケージをビルドすることを検討してください(apt-getソースが出発点です)。

1
warp

ワーパーは、Apacheが2つインストールされている理由を説明しました。通常、パッケージベースのディストリビューションを使用している場合は、ソースから何かをインストールする前に、パッケージ化されたバージョンを探す必要があります。

パッケージ化されたphp5をコンパイル済みのApacheで使用できないとは言えませんが、十分な理由がない限り、パッケージを使用してください。時間とエネルギーを節約できます。

Apacheが自動的にインストールされた理由について:

"aptitude show php5"から:

This package is a metapackage that, when installed, guarantees that you have at
 least one of the three server-side versions of the PHP5 interpreter installed.

Depends: libapache2-mod-php5 (>= 5.2.6.dfsg.1-3ubuntu4.1) |
         libapache2-mod-php5filter (>= 5.2.6.dfsg.1-3ubuntu4.1) | php5-cgi (>=
         5.2.6.dfsg.1-3ubuntu4.1), php5-common (>= 5.2.6.dfsg.1-3ubuntu4.1)

つまり、Ubuntuが最も一般的なPHPインタープリター、libapache2-mod-php5をインストールし、それがApacheをプルするなどです。

Apacheをインストールせずにphpをインストールする場合は、php5-cgiをインストールして、他のhttpサーバーで使用できます。これを行う1つの方法は次のとおりです。

Sudo apt-get install php5-cgi php5

これは、php5パッケージの依存関係としてphp5-cgiを使用します。

1
Aaron K.

独自のApacheをコンパイルする理由を考えると、正当な理由はわかりません。これを行わない理由の1つは、メンテナンスが非常に難しくなることです。パッチを適用するために5つの異なるソフトウェアをコンパイルする必要がある場合、セキュリティパッチは冗談ではありません。そして、それはあなたが実際にセキュリティの脆弱性について知っていると仮定しています。これが、パッケージを使用する理由であり、この場合、Ubuntuが提供するApacheです。

したがって、おそらくこれを行うべきではないことを念頭に置いて、誰も言及していないトリックが1つあります。自分でコンパイルしたApacheを他のUbuntuパッケージで本当に使用したい場合は、「equivs」パッケージを使用してください。説明から:

もう1つの用途は、依存関係のチェックを回避することです。パッケージPがシステムにインストールされていない場合、Pに依存するパッケージは通常インストールできません。ただし、Pと同等の機能がインストールされていることがわかっている場合は、このツールを使用して、Debianパッケージ管理システムをだましてパッケージPが実際にインストールされていると信じ込ませることができます。注:これは、通常の解決策ではなく、厄介な状況を回避するための大雑把なハックと見なす必要があります。他のDebianパッケージのバグを回避するためにequivを使用する場合は、それらのパッケージに対してもバグレポートを提出する必要があります。
0
wds

Httpdファイルを探します。

多くのLinuxシステムでは、次の場所にあります。

/ etc/rc.d/init.d/httpd

そのファイルを編集して、Apachehttpデーモンの2つのバージョンを起動しているかどうかを確認してください。不要な行から始まる行を削除します。

0
Alan