web-dev-qa-db-ja.com

init.d / Apache2ファイルがありません

ApacheとTomcatを削除しようとした後、Apache 2を再インストールしようとすると、サーバーを起動/停止するためのinit.d/Apache2ファイルが見つかりません。

新しいインストールが実際に機能したかどうかはわかりませんが、私のapt-get purge Apache2が最初からすべてを削除していませんでした。

init.d/Apache2ファイルを取得して、サーバーが起動/インストールされているかどうかをテストするにはどうすればよいですか(ファイルとディレクトリを手動で削除しました)?

5

apt-get install --reinstall Apache2を使用して、パッケージが存在する場合でもapt-getシステムを強制的に再インストールし、現在のファイルを上書きします—パッケージがすでに存在すると思われるファイルも上書きします。

システムから手動で削除することで、パッケージマネージャーがどこで何をする必要があるかについて間違いなく混乱することになります。通常は、手動でいじって何を行っているのかを理解していない限り、提供されているツールを使い続けることをお勧めします。

補足として、通常は/etc/init.d内のファイルをいじる必要はありません。これらのスクリプトの実行を処理するツールがあります。たとえば、Apacheを再起動するには、service Apache2 restartを実行します。

コメントで見つかった情報に基づいて編集されました

Initスクリプトはサブパッケージの一部です。パッケージを初めてインストールすると、依存関係がインストールされますが、アンインストールすると、依存関係ではなく、パッケージがアンインストールされます。手動で削除したinitスクリプトは、メインのApache2.2-commonパッケージ名の依存関係であったApache2パッケージに属しています。 --purgeを使用してもApache2を削除しても、別のパッケージの一部であるため、initスクリプトには影響しません。元に戻すには、apt-get install --reinstall Apache2.2-commonを実行します。

Edit2

どうやらDebianは奇抜だ。テストシステムで問題を再現しましたが、パッケージマネージャーでinitスクリプトを取得できませんでした。私は同じ問題を抱えている他の人々をウェブ上で見つけました、そして解決策は手動でパッケージをダウンロードし、それを抽出し、そしてこのようにファイルをリッピングすることであるようです:

cd /tmp
aptitude download Apache2.2-common
dpkg --extract Apache2.2-common_*.deb Apache2.2-common
Sudo cp Apache2.2-common/etc/init.d/Apache2 /etc/init.d

Edit3

Faheem Mithaによる調査と以下のコメントに関する議論のおかげで、この質問に対する完全な回答が得られました。 詳細についてはFaheemの回答をお読みください 。ユーモアの価値のために、ここに崖のメモがあります:

短いバージョンでは、initスクリプトはconfファイルと見なされ、apt-getはあまりにも礼儀正しく、ユーザーが変更したconfファイルには触れず、アンインストール後に再インストール時に削除を復元することもできません。 「もちろん」と言う前に、あなたがしなければならない体操をチェックしてください。私は引用します:

Dpkgリストを聞いて(そして言われたら)+さらにいじくると、次のように動作します。これに注意してください。変更されたすべての構成ファイルがパッケージのバージョンに置き換えられます。 apt-get -o Dpkg::Options::="--force-confnew" -o Dpkg::Options::="--force-confask" install --reinstall Apache2.2-common。なぜ私にこれを言う必要があったのか分かりません。それはあなたが最初に考えるべきことだった。 :-) – Faheem Mitha

8
Caleb

Debianシステムでも同じ問題が発生しました。 Apacheとnginxの両方に影響しました。

ここでのすべての解決策は私にとってうまくいきませんでした。パージ、再インストール、ダウンロード、手動インストール、およびDpkg :: Optionsが機能しませんでした。

依存関係の1つがサービスの開始と停止に必要な構成ファイルを作成することがわかりました。すべての依存関係を削除して、新たに再インストールするだけです。

私はここで解決策を見つけました: http://dancingpenguinsoflight.com/2009/02/how-to-completely-reset-an-Apache-instance-in-ubuntu/

Apache_PKGS=`Sudo dpkg --get-selections | grep Apache | cut -f 1`
# Make sure things are sane:
echo $Apache_PKGS
# Example output: Apache2 Apache2-mpm-prefork Apache2-utils Apache2.2-common \
# libapache2-mod-php5 libapache2-mod-python libapache2-svn
# Likely if you have a Python application:
# libapache2-mod-python libapache2-mod-python-doc libapache2-mod-wsgi
# Or if you roll with the PHP: 
# libapache2-mod-php5
Sudo apt-get remove --purge $Apache_PKGS
2
Pippy