極端な偏見でDebianからパッケージを削除する

極端な偏見でDebianからパッケージを削除する

宇宙の Debian... apt は問題を解決します。dpkg はそれを解決します。

MariadB をアンインストールしようとした最近の私の経験について知る際には、この点を念頭に置いてください。Galera クラスターを何度も操作し、再構成した後、白紙の状態からやり直したいと思いました。

当然、私はこうしました:

 apt -y mariadb-server を削除します
apt -y mariadb-server をパージする

しかし、これを実行した後、 /etc/mysql に多くのファイルが残っていることがわかりました。

apt-get(8) のマニュアルページには次のように書かれています:

取り除く
remove は、パッケージがインストールされるのではなく削除されることを除いて、install と同じです。
パッケージを削除しても、その設定ファイルはシステムに残るので注意してください。プラス記号が
パッケージ名に記号が追加されると(間にスペースは入れず)、識別されたパッケージ
削除されるのではなくインストールされます。

パージ
purgeはremoveと同じですが、パッケージが削除され、パージされます(
設定ファイルも削除されます)。

ここで、次のシナリオを想像してください。

  • 新規インストールしたDebian 11
  • mariadb-server をインストールしますが、設定ファイルには触れず、すぐにシャットダウンします。
  • ボックス上のすべてのMariaDB/MySQL関連パッケージをapt removeおよびapt purgeします。

そのマニュアルページの抜粋を読んだ後、これらの手順を実行すると、システム上のすべての MariaDB 関連の設定ファイルが削除されると結論付けませんか?

そうじゃない。

さらに悪いことに、/etc/mysql で rm -rf を実行した後、apt-install mariadb-server を実行したところ、/etc/mysql 内の重要な設定ファイルの多くが消えてしまい、インスタンスが起動しなくなってしまいました。remove/purge/install コマンドで世界が新しくなった頃に戻れるかと期待していたのですが、残念ながらそうではなく、壊れた宇宙に迷い込んでしまいました。

では、apt が何もない場所にいると認識し、再インストール時に設定ファイルをインストールするように、パッケージを完全に削除するにはどうすればよいでしょうか。私の経験では、apt だけでは不十分で、Heavy Thunder を呼ぶ必要があります。

これが旅の過程です。答えが知りたい場合は、赤字の部分に進んでください。

私たちは創世記の瞬間から始まる

少なくとも、rootとして初めてログインした時のことです。Vultrサーバー(無料で入手できるかもしれません)と、もちろんSummit of All Operation Systems、Debianを使用しています。これはVultrのテンプレートなので、プロバイダーによっては時々おかしなことをするかもしれませんが、aptの設定は正常です。

したがって、この新しくインストールされた VM で実際に実行する最初のコマンドは次のとおりです。

 # dpkg -l | grep mariadb
#

予想通り、念のため。さて:

 # apt アップデート
<ヤダヤダ>
# cat /etc/debian_version 
11.6

はい、今のところbookwormを待っています。ただ、as/bullseye/bookworm/g を実行して、新しいカーネルを適用するために再起動したら問題なく動作しました。まだ十分にテストしていません。

話を元に戻しましょう。Vultrは初回起動時にapt-upgradeを実行するので、その必要はありません。MariaDBに進みます。

 # apt -y mariadb-server をインストール
<いつもの>
# ls -l /etc/mysql/
合計24
drwxr-xr-x 2 ルート ルート 4096 3月18日 19:51 conf.d
-rw------- 1 ルート ルート 544 3月18日 19:51 debian.cnf
-rwxr-xr-x 1 ルート root 1731 2022 年 2 月 18 日 debian-start
-rw-r--r-- 1 ルート ルート 1126 2022年2月18日 mariadb.cnf
drwxr-xr-x 2 ルート ルート 4096 3月18日 19:51 mariadb.conf.d
lrwxrwxrwx 1 root root 2018年3月24日 19:51 my.cnf -> /etc/alternatives/my.cnf
-rw-r--r-- 1 ルート ルート 839 2021年2月8日 my.cnf.fallback

以上がインストール時の設定ファイルです。mariadbは自動的に起動します。Debianのデフォルト設定は無効にしておくのが好みです。systemdのプリセットを使ってこの動作を防ぐ方法もありますが、それはまた別の機会に。ここでは以下の手順を実行します。

 systemctl 停止 mariadb

では、パッケージ的には何がインストールされているのでしょうか?

 # dpkg -l | grep マリア
ii libdbd-mariadb-perl 1.21-3 amd64 MariaDB/MySQL データベースへの Perl5 データベース インターフェース
ii libmariadb3:amd64 1:10.5.18-0+deb11u1 amd64 MariaDB データベース クライアント ライブラリ
ii mariadb-client-10.5 1:10.5.18-0+deb11u1 amd64 MariaDB データベースクライアントバイナリ
ii mariadb-client-core-10.5 1:10.5.18-0+deb11u1 amd64 MariaDB データベース コア クライアント バイナリ
ii mariadb-common 1:10.5.18-0+deb11u1 すべてのMariaDB共通設定ファイル
ii mariadb-server 1:10.5.18-0+deb11u1 すべてのMariaDBデータベースサーバー(最新バージョンに応じたメタパッケージ)
ii mariadb-server-10.5 1:10.5.18-0+deb11u1 amd64 MariaDB データベースサーバーバイナリ
ii mariadb-server-core-10.5 1:10.5.18-0+deb11u1 amd64 MariaDB データベース コア サーバー ファイル
# dpkg -l | grep mysql
ii mysql-common 5.8+1.0.7 すべてのMySQLデータベース共通ファイル(例:/etc/mysql/my.cnf)

よし、焦土作戦だ。

 apt -y 削除 mariadb-server mariadb-client mariadb-common mysql-common
apt -y purge mariadb-server mariadb-client mariadb-common mysql-common

これで山の渓流のようにきれいになりましたよね?削除してパージしましたか?設定ファイルには一切触れていません。

私たちは騙され、騙され、ごまかされてきた

# ls -l /etc/mysql/
合計12
-rw------- 1 ルート ルート 544 3月18日 19:51 debian.cnf
-rwxr-xr-x 1 ルート root 1731 2022 年 2 月 18 日 debian-start
drwxr-xr-x 2 ルート ルート 4096 3月18日 19:51 mariadb.conf.d

それで、いくつかの設定ファイルが保持されたのですか? dpkg は次のように言います:

 # dpkg -l | grep マリア
rc mariadb-client-10.5 1:10.5.18-0+deb11u1 amd64 MariaDBデータベースクライアントバイナリ
rc mariadb-server-10.5 1:10.5.18-0+deb11u1 amd64 MariaDBデータベースサーバーバイナリ
# dpkg -l | grep mysql
#

rc = “削除されましたが、設定ファイルは残っています。”

つまり、purge とそれからpurgeがあるようです。aptは問題を解決し、dpkg はそれを解決します。

 # dpkg --purge mariadb-server-10.5 
DPKG確認

ああ、いよいよ現実になってきましたね…

もちろん、これによりデータベース ファイルが削除されるため、データベース ファイルが気になる場合は注意してください。

dpkg を使用する場合は、バージョン付きの完全なパッケージ名 (「mariadb-server-10.5」) を使用する必要があることに注意してください。

徹底するために:

 # dpkg --purge mariadb-client-10.5

そして今:

 # ls -l /etc/mysql
ls: '/etc/mysql' にアクセスできません: そのようなファイルまたはディレクトリはありません
# ls -l /var/lib/mysql
ls: '/var/lib/mysql' にアクセスできません: そのようなファイルまたはディレクトリはありません
# apt -y mariadb-server をインストール
<ああ、ああ、見たことあるよ>
# ls -l /etc/mysql
合計24
drwxr-xr-x 2 ルート ルート 4096 3月18日 20:00 conf.d
-rw------- 1 ルート ルート 544 3月18日 20:00 debian.cnf
-rwxr-xr-x 1 ルート root 1731 2022 年 2 月 18 日 debian-start
-rw-r--r-- 1 ルート ルート 1126 2022年2月18日 mariadb.cnf
drwxr-xr-x 2 ルート ルート 4096 3月18日 20:00 mariadb.conf.d
lrwxrwxrwx 1 root root 2018年3月24日 20:00 my.cnf -> /etc/alternatives/my.cnf
-rw-r--r-- 1 ルート ルート 839 2021年2月8日 my.cnf.fallback

なぜこのような状況になっているのかは分かりませんが、完全に核兵器です。

おすすめの記事