2019年11月14日木曜日

aptitudeコマンド remove とpurgeの違いの実験

概要

パッケージのインストールと確認ができるaptitudeコマンドについての情報をまとめます。
アンインストールする際のremoveオプションとpurgeオプションの違いもためしてみました。

要点

  • aptitudeコマンドについて
  • aptitudeコマンドはapt-getコマンドとapt-chaheコマンドと同等の事ができるコマンドです。
    試しに使ってみようと思ったらaptitudeがインストールされていませんでした。
    なので、まずはapt-getでインストールします
    
     #apt-get install aptitude
    
    

    サブコマンド 説明
    update データベースを更新する
    show パッケージ名 パッケージ情報を表示する
    search パターン パッケージを検索する
    install パッケージ名 パッケージをインストールする
    remove パッケージ名 設定ファイルを残してパッケージをアンインストールする
    purge パッケージ名 設定ファイルも含めてパッケージをアンインストールする
    full-upgrade すべてのパッケージファイルをアップグレードする
    safe-upgrade ほかのパッケージを削除しないようにすべてのパッケージファイルをアップグレードする

  • aptitude updateコマンド
  • 「apt-get update」と同様にパッケージデータベースの更新を行います。試しにどっちも試してみたところ、発見とヒットの違いがありました。

    
     # apt-get update
     ヒット:1 http://archive.raspberrypi.org/debian buster InRelease
     ヒット:2 http://raspbian.raspberrypi.org/raspbian buster InRelease
     パッケージリストを読み込んでいます... 完了
     #
     # aptitude update
     発見 http://raspbian.raspberrypi.org/raspbian buster InRelease
     発見 http://archive.raspberrypi.org/debian buster InRelease
    
    
  • aptitude removeコマンドとaptitude purge コマンド
  • 設定ファイルを残してパッケージを削除するコマンドです。
    設定ファイルを残す場合がremoveで、場合と残さない場合がpurgeなので、本当に設定ファイルが消えるのか実験してみました。

    1. まずはremoveでsnmpをアンインストール。
    2. 
       # ls snmp
       snmp.conf  【★設定ファイルがある】
       #
       # aptitude remove snmp
       以下のパッケージが削除されます:
         libmariadb3{u} libsnmp-base{u} libsnmp30{u} mariadb-common{u} mysql-common{u} snmp
       更新: 0 個、新規インストール: 0 個、削除: 6 個、保留: 6 個。
       アーカイブの 0 B を取得する必要があります。展開後に 7,747 kB のディスク領域が解放されます。
       先に進みますか? [Y/n/?] Y
       (データベースを読み込んでいます ... 現在 156656 個のファイルとディレクトリがインストールされています。)
       snmp (5.7.3+dfsg-5+b1) を削除しています ...
       libsnmp30:armhf (5.7.3+dfsg-5+b1) を削除しています ...
       libmariadb3:armhf (1:10.3.17-0+deb10u1) を削除しています ...
       libsnmp-base (5.7.3+dfsg-5) を削除しています ...
       mariadb-common (1:10.3.17-0+deb10u1) を削除しています ...
       update-alternatives: /etc/mysql/my.cnf (my.cnf) を提供するために自動モードで /etc/mysql/my.cnf.fallback を使います
       mysql-common (5.8+1.0.5) を削除しています ...
       man-db (2.8.5-2) のトリガを処理しています ...
       libc-bin (2.28-10+rpi1) のトリガを処理しています ...
      
       #
       # ls snmp
       snmp.conf 【★アンインストールしても設定ファイルが残っている 想定通り】
      
      
    3. 再度snmpをインストールして、今度はpurgeのサブコマンドを使ってアンインストール。
    4. 
       # ls snmp
       snmp.conf【★設定ファイルがある】
       # aptitude purge snmp
       以下のパッケージが削除されます:
         libmariadb3{u} libsnmp-base{u} libsnmp30{u} mariadb-common{u} mysql-common{u} snmp{p}
       更新: 0 個、新規インストール: 0 個、削除: 6 個、保留: 6 個。
       アーカイブの 0 B を取得する必要があります。展開後に 7,747 kB のディスク領域が解放されます。
       先に進みますか? [Y/n/?] Y
       (データベースを読み込んでいます ... 現在 156656 個のファイルとディレクトリがインストールされています。)
       snmp (5.7.3+dfsg-5+b1) を削除しています ...
       libsnmp30:armhf (5.7.3+dfsg-5+b1) を削除しています ...
       libmariadb3:armhf (1:10.3.17-0+deb10u1) を削除しています ...
       libsnmp-base (5.7.3+dfsg-5) を削除しています ...
       mariadb-common (1:10.3.17-0+deb10u1) を削除しています ...
       update-alternatives: /etc/mysql/my.cnf (my.cnf) を提供するために自動モードで /etc/mysql/my.cnf.fallback を使います
       mysql-common (5.8+1.0.5) を削除しています ...
       man-db (2.8.5-2) のトリガを処理しています ...
       libc-bin (2.28-10+rpi1) のトリガを処理しています ...
       
       #
       # ls snmp
       snmp.conf 【★アンインストールしたのに設定ファイルが残っている! 想定外】
      
      
    5. snmp.confファイルが関連するパッケージを確認すると、snmpではなくlibsnmp-baseが紐づいているようでした。
    6. 
       # dpkg -S snmp.conf
       libsnmp-base: /etc/snmp/snmp.conf   【★関連しているパッケージは libsnmp-baseだった!】
       libsnmp-base: /usr/share/man/man5/snmp.conf.5.gz
      
      
    7. ということで、再度snmpをインストールして、今度はlibsnmp-baseをpurgeでアンインストール。
    8. 
       # ls snmp
       snmp.conf 【★設定ファイルがある】
       #
       # aptitude purge libsnmp-base
       以下のパッケージが削除されます:
         libsnmp-base{p}
       更新: 0 個、新規インストール: 0 個、削除: 1 個、保留: 6 個。
       アーカイブの 0 B を取得する必要があります。展開後に 2,176 kB のディスク領域が解放されます。
       以下のパッケージには満たされていない依存関係があります:
        snmp : 依存: libsnmp-base (>= 5.7.3+dfsg-5) インストールされません
        libsnmp30 : 依存: libsnmp-base インストールされません
       以下のアクションでこれらの依存関係の問題は解決されます:
      
           以下のパッケージを削除する:
       1)     libsnmp30 [5.7.3+dfsg-5+b1 (now, stable)]
       2)     snmp [5.7.3+dfsg-5+b1 (now, stable)]
      
       この解決方法を受け入れますか? [Y/n/q/?]Y
       以下のパッケージが削除されます:
         libmariadb3{u} libsnmp-base{p} libsnmp30{a} mariadb-common{u} mysql-common{u} snmp{a}
       更新: 0 個、新規インストール: 0 個、削除: 6 個、保留: 6 個。
       アーカイブの 0 B を取得する必要があります。展開後に 7,747 kB のディスク領域が解放されます。
       先に進みますか? [Y/n/?] Y
       (データベースを読み込んでいます ... 現在 156656 個のファイルとディレクトリがインストールされています。)
       snmp (5.7.3+dfsg-5+b1) を削除しています ...
       libsnmp30:armhf (5.7.3+dfsg-5+b1) を削除しています ...
       libmariadb3:armhf (1:10.3.17-0+deb10u1) を削除しています ...
       libsnmp-base (5.7.3+dfsg-5) を削除しています ...
       mariadb-common (1:10.3.17-0+deb10u1) を削除しています ...
       update-alternatives: /etc/mysql/my.cnf (my.cnf) を提供するために自動モードで /etc/mysql/my.cnf.fallback を使います
       mysql-common (5.8+1.0.5) を削除しています ...
       man-db (2.8.5-2) のトリガを処理しています ...
       libc-bin (2.28-10+rpi1) のトリガを処理しています ...
       (データベースを読み込んでいます ... 現在 156439 個のファイルとディレクトリがインストールされています。)
       libsnmp-base (5.7.3+dfsg-5) の設定ファイルを削除しています ...
      
       # ls snmp 【★設定ファイルが消えてる! 想定通り】
       ls: 'snmp' にアクセスできません: そのようなファイルやディレクトリはありません 
      
      
    snmpをpurgeでアンインストールするときも、libsnmp-baseが関連するから一緒にアンインストールしてるように見えますが、どうやらその時は設定ファイルは消さないようです。
    表示内容をよく見ると、「libsnmp-base{u}」と表示されてる時と「libsnmp-base{p}」と書かれている時があり、{u}は設定残してアンインストール、{p}は設定含めてアンインストールしているように見えました。

0 件のコメント:

コメントを投稿