web-dev-qa-db-ja.com

特定のパターンに一致するすべてのパッケージを削除するにはどうすればよいですか?

Libreofficeをアンインストールしたい。このプログラムは、約30個のモジュールで構成されています。理想的には、次の方法で削除できます。

aptitude remove libreoffice3.6* libreoffice-debian-menus libobasis3.6-*

しかし、それは失敗します

Couldn't find any package whose name or description matched "libreoffice3.6*"

等.

パターンごとにパッケージのセットを削除するにはどうすればよいですか?

PS:dpkgまたはaptを使用した回答にも満足しています

25
Aaron Digulla
  1. aptitudeではなくapt-getを使用し、正規表現を使用します。

  2. 正規表現では、.は任意の文字を意味し、*は0回以上を意味します。したがって、式libreoffice.*は、文字列libreofficeに任意の数の文字が続く文字列を含むパッケージ名に一致します。

  3. シェルがアスタリスクを解釈しないように、正規表現を単一引用符で囲みます。 (たとえば、現在のディレクトリにlibreoffice.exampleという名前のファイルがある場合、シェルはlibreoffice.*libreoffice.exampleに置き換えるため、この動作を停止するには単一引用符を使用する必要があります。)

結果:

Sudo apt-get remove 'libreoffice.*'
26
Flimm

別の方法は次のとおりです。

dpkg -l | grep libreoffice | awk '{print $2}' | xargs -n1 echo

これにより、libreofficeに一致するすべてのパッケージがリストされます。すべて削除することを確認したら、次のコマンドを実行します... 注意して

dpkg -l | grep libreoffice | awk '{print $2}' | xargs -n1 Sudo apt-get purge -y

アイデア:

  1. システムを取得して、インストールされているすべてのパッケージをリストします
  2. libreofficeに一致するもののみを表示するフィルター
  3. パッケージ名の列のみを表示するフィルター
  4. これらの各パッケージでパージコマンドを実行します
5
aalaap

Aptitudeはグローバルパターンをサポートしており、次のような非常にクールなマッチもあります。

aptitude remove '?and(?name(libreoffice), name(3.6), ~i)' libreoffice-debian-menus

これは、名前にlibreofficeおよび3.6があり、インストールされているパッケージと一致します(~iの略です)。

5
Braiam