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


26

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での回答に満足しています


特定のパターンについての答えを知りたい、またはLibreOfficeコンポーネントの削除に満足していますか?
アンワール

1
LibreOfficeをアンインストールする方法の重複 答えは確率です:これは3.6でのみ機能し、3.6は使用していません:
Rinzwind

libreofficeには多くの部分が含まれているため、例として使用しています。しかし、カーネルにも同じ問題がありました(古いバージョンのクリーンアップ)
アーロンディグラ

回答:


26
  1. apt-get、notを使用し、aptitude正規表現を使用します。

  2. 正規表現で.は、任意の文字を*意味し、ゼロ回以上を意味します。そのため、この式は、任意の数の文字が続くlibreoffice.*stringを含むパッケージ名と一致しますlibreoffice

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

結果:

sudo apt-get remove 'libreoffice.*'

おかげで、これは動作します。興味深いことに、それはまた、パターンで動作しますlibreoffice*:-)どちらか彼らの仕事ではないはずなので、私は少し混乱(すなわちグロブスタイルパターン)
アーロンDigulla

3
これをテストする場合は、オプション--dry-runを使用して、システムに変更を加えずに削除されるものを確認します。
アーロンディグラ

@AaronDigulla --dry-runについてはまだ知りませんでした。それは重宝します!ありがとう!
グルタニメート

apt-getは正規表現の処理もかなり悪いです。この回答の両方のソリューションを比較してください。
Braiam

明確にするために、aptPOSIX正規表現を使用します。From man apt-get(Debian Jessie):「指定された式に一致するパッケージがなく、式に「。」、「?」のいずれかが含まれている場合 または「*」はPOSIX正規表現と見なされます...」
x-yuri

6

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

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. これらの各パッケージでパージコマンドを実行します

1
多分あなたは追加することをお勧めでした-pそれはとてもオプションをxargs構築し、各コマンドを実行する前に確認プロンプト、またはとの最初のチェックになるecho代わりにsudo apt-get purge
Zanna

1
@Zanna -pは役立ちますが、ワンショットコマンドではありません。コマンドを実行する前に、エコーを使用して取得内容をテストしたため、推奨する価値があります。
aalaap

2
+1できるようになったので、より安全になりました:)
ザンナ

これ-n1は良いと思いechoますが、パージから削除する必要があります。そうしないと、依存関係の順序(aはbに依存し、最初にbを削除しようとする)がパージを中断する可能性があります。
アーロンディグル

あなたのソリューションは私が今まで見つけた中で最高です、ありがとう。
ジョアンペドロ

5

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

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

これは、名前に含まれlibreoffice3.6インストールされているパッケージと一致します(これは~i略称です)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.