Apacheの脆弱性対策の為、最新バージョンまでソースコードからインストールした2.4.51なのですがREMIrepoから導入したPHP7.4が動作しなかった為、泣く泣くアンインストールしたときの方法を共有いたします。
make uninstallができない
[root@local src]# cd httpd-2.4.51
[root@local httpd-2.4.51]# make uninstall
make: *** ターゲット `uninstall' を make するルールがありません. 中止.
ソースファイル(tar.gzなど)からインストールしたソフトウェアは、「make uninstall」で削除できると聞いていたのですが、すべてのソフトウェアが「make uninstall」に対応しているわけではなく、むしろ削除できないのが普通です。今回の題材のApacheがまさにこれでした。。
手作業で「make uninstall」と同等の作業を行うことで「make uninstall」に対応していないソフトウェアのアンインストールが可能(しかも「make uninstall」よりきれいに!)になります。
なお、どちらの作業でも、root(スーパーユーザー)権限が必要です。
Apacheを手作業でアンインストールする作業手順
- Apacheをtmpディレクトリに仮インストール
- 仮インストールされたファイルリストを生成、加工
- ファイルリストをもとに実際にインストールされているApacheファイルを削除
- ディレクトリの削除(任意)
- サービス登録を削除
- 仮インストールディレクトリを丸ごと削除
Apacheをtmpディレクトリに仮インストール
ソースファイルを展開しているディレクトリに移動
# cd /usr/local/src/httpd-2.4.51/
Apacheのバージョンを確認
# /usr/local/apache2/bin/apachectl -v
Server version: Apache/2.4.51 (Unix)
Server built: Oct 8 2021 23:35:22
Apacheを停止
# systemctl stop httpd.service
仮インストールするディレクトリを作成
# mkdir /tmp/apache2-install-test
仮インストール
# make install DESTDIR=/tmp/apache2-install-test
仮インストールされたファイルリストを生成、加工
インストールしたファイル一覧を/tmp/apache2-install-test.txtに保存
# find /tmp/apache2-install-test -type f -print > /tmp/apache2-install-test.txt
テキスト内のファイルパスを/tmpから/usr/localに置換
# vi /tmp/apache2-install-test.txt
vi起動後、下記コマンドで置換処理実行
:%s/\/tmp\/apache2-install-test//g
ファイルパスが/usr/localに置換完了
viを保存終了
:wq
ファイルリストをもとに実際にインストールされているApacheファイルを削除
作成したファイルリストを元に、xargsで削除処理を実行
# cat /tmp/apache2-install-test.txt | xargs rm -f
削除後のバージョン確認
※実行ファイルが削除されたので、エラーになります
# /usr/local/apache2/bin/apachectl -v
-bash: /usr/local/apache2/bin/apachectl: そのようなファイルやディレクトリはありません
ディレクトリの削除(任意)
ディレクトリは残るので不要であれば下記コマンドで削除
# rm -rf /usr/local/apache2/
サービス登録を削除
Apacheのサービス登録を削除
# systemctl disable httpd.service
Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.
仮インストールディレクトリを丸ごと削除
tmpディレクトリのapache2-install-test、apache2-install-test.txtも削除
# rm -rf /tmp/apache2-install-test*
以上で手作業でのソースファイルのアンインストールは完了です。
コメント