OpenVPNを削除したのに /etc/openvpn が残る:削除と完全消去の違い
残った /etc/openvpn はパッケージがインストールされている証拠ではありません。dpkg の状態を読み、削除と完全消去のどちらかを選び、dpkg が決して消さないものを確認します。
ディレクトリはまだあり、サービスは消え、パッケージがインストールされているかどうかは明らかではありません。Debian 系のシステムでは、残った /etc/openvpn は通常、設定を残したままパッケージが削除されたことを意味します。これは文書化された状態であり、壊れた状態ではありません。見えているファイルはおそらく設定であり、プログラムではありません。
ランブックの順序で作業します。パッケージの状態を読み、何を残すかを決め、意図して完全消去し、その後に何が残ったかを確認します。完全消去までは各手順を元に戻せます。
まずパッケージの状態を読む
ファイルシステムではなく、パッケージデータベースから始めます。dpkg -l openvpn は二文字の状態を出力し、rc は設定ファイルを残したままパッケージが削除されたことを意味します。dpkg-query -W -f='${Status}\n' openvpn は同じ答えを言葉で返します。ディレクトリの一覧では、そのどれも分かりません。
Community OpenVPN を Access Server や NetworkManager プラグインと混同しないでください。削除経路の異なる別のパッケージです。
状態が ii なら、パッケージはインストール済みでディレクトリは想定どおりです。rc なら、設定だけが残っています。問い合わせが何も返さなければ、パッケージは完全消去済みで、ディレクトリは別の何かに属します。
削除と完全消去のどちらかを選ぶ
remove はプログラムを消して設定を残します。purge は設定も消し、パッケージのクリーンアップスクリプトを実行します。どちらも状態についての管理上の判断であり、同じコマンドの別表記ではありません。
選ぶ前に、dpkg -L openvpn でパッケージが所有するものを一覧します。その出力はパッケージ管理下のパスの地図であり、完全消去が何を消すかの判断に適した入力です。ディレクトリにあってその一覧にないものは、どこか別の場所から来たものです。それらのファイルはパッケージの残骸ではなく、確認すべき自分のものとして扱ってください。
すでに削除されたパッケージを完全消去することは許されています。先に再インストールする必要はありません。
まだ必要なものを保存する
完全消去の前に、まだ必要なものを保存します。プロファイル、クライアント証明書、秘密鍵、CCD ファイル、そしてローカルスクリプトです。秘密情報にふさわしい権限でコピーし、コピーの場所を記録します。
別のサービスやマネージャが同じディレクトリを使っていないか確認します。二つ目の VPN インスタンスや自動化スクリプトが、残った設定のように見えるパスに依存していることがあります。
マシンを廃止する場合、ローカルファイルは問題の小さい半分です。エクスポートしたプロファイルとリモートの認可は、削除するどのディレクトリよりも長く残ります。
完全消去して確認する
完全消去はディレクトリを消すのではなく、パッケージマネージャを通して実行します。sudo apt purge openvpn はパッケージデータベースとクリーンアップスクリプトを関与させたままにします。
その後、状態の問い合わせを繰り返し、パッケージがもう現れないことを確認します。systemctl status openvpn@server または使用したユニット名でサービスが消えたことを確かめ、通常のネットワークを試します。
完全消去でも消えないファイル
一部のファイルは設計上、完全消去でも残ります。メンテナスクリプトが扱う生成された設定は、dpkg のファイルデータベースに常に知られているわけではありません。ユーザーのホームディレクトリの設定は、システムディレクトリのクリーンアップの対象外です。そして管理者が手で作ったものは、もともとパッケージの所有物ではありません。それぞれに個別の確認が必要です。
名前に VPN を含むパスを再帰的に消していくことが、動作している認証情報と無関係な設定が消える原因です。
最後に、マシンがもう必要としないものを失効させます。エクスポートしたプロファイル、発行したクライアント証明書、そしてそれを通じて認証したアカウントです。ローカルディレクトリを消しても、別の場所にまだ存在する認証情報は失効しません。dpkg のリファレンスに状態と完全消去の範囲が記されています。