ソースファイルからインストールしたアプリを手作業でアンインストールする

Linux

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*

以上で手作業でのソースファイルのアンインストールは完了です。

コメント

タイトルとURLをコピーしました