正規表現を使用した奇妙な "apt-get purge"動作

正規表現を使用した奇妙な

私はDebian(jessie)を実行しており、次のことに従います。これ質問、最初の回答で提案されているように実行中のパッケージをインストールしました。

sudo apt-get install gtk2-engines-* gtk3-engines*

しかし、この方法でEclipseの問題は解決されませんでしたが、奇妙なことがわかりました。

sudo apt-get purge gtk2-engines-* gtk3-engines*

それは言う

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'gtk2-engines-gartoon' for regex 'gtk2-engines-*'
Note, selecting 'gtk2-engines-moblin' for regex 'gtk2-engines-*'
Note, selecting 'gtk2-engines-murrine' for regex 'gtk2-engines-*'
Note, selecting 'gtk2-engines-nodoka' for regex 'gtk2-engines-*'
Note, selecting 'gtk2-engines-qtcurve' for regex 'gtk2-engines-*'
Note, selecting 'gtk2-engines-ubuntulooks' for regex 'gtk2-engines-*'
Note, selecting 'gtk2-engines-pixbuf' for regex 'gtk2-engines-*'
Note, selecting 'gtk2-engines' for regex 'gtk2-engines-*'
Note, selecting 'gtk2-engines-wonderland' for regex 'gtk2-engines-*'
Note, selecting 'gtk2-engines-oxygen' for regex 'gtk2-engines-*'
Note, selecting 'gtk2-engines-cleanice' for regex 'gtk2-engines-*'
Note, selecting 'gtk2-engines-magicchicken' for regex 'gtk2-engines-*'
Note, selecting 'gtk2-engines-xfce' for regex 'gtk2-engines-*'
Note, selecting 'gtk2-engines-aurora' for regex 'gtk2-engines-*'
Note, selecting 'gnome-icon-theme-gartoon' instead of 'gtk2-engines-gartoon'
Note, selecting 'gtk3-engines-oxygen' for regex 'gtk3-engines*'
Note, selecting 'gtk3-engines-xfce' for regex 'gtk3-engines*'
The following packages were automatically installed and are no longer required:
  kde-style-qtcurve kwin-style-qtcurve libgoocanvas-common libgoocanvas3
  libkdecorations4abi2 libmlt++3 libmlt-data libmlt6 libsox-fmt-alsa
  libsox-fmt-base libsox2 melt python-httplib2 python-mlt python-pygoocanvas
  python-xdg
Use 'apt-get autoremove' to remove them.

大丈夫ですが、そう言います。

The following packages will be REMOVED:
  gtk2-engines* gtk2-engines-aurora* gtk2-engines-cleanice*
  gtk2-engines-magicchicken* gtk2-engines-moblin* gtk2-engines-murrine*
  gtk2-engines-nodoka* gtk2-engines-oxygen* gtk2-engines-pixbuf*
  gtk2-engines-qtcurve* gtk2-engines-ubuntulooks* gtk2-engines-wonderland*
  gtk2-engines-xfce* gtk3-engines-oxygen* gtk3-engines-xfce* murrine-themes*
  openshot* xfce4*

彼が選んだ理由

murrine-themes* openshot* xfce4*

regExに一致するすべてのアイテムを削除しないでください。

gtk2-engines-* gtk3-engines*

それともここに基本的なものがありませんか?

ベストアンサー1

$ apt-cache show xfce4 | grep ^Depends
Depends: xfwm4 (>= 4.12.0), xfconf (>= 4.12.0), xfce4-settings (>= 4.12.0), xfce4-panel (>= 4.12.0), xfdesktop4 (>= 4.12.0), thunar (>= 1.6.6), gtk2-engines-xfce (>= 3.2.0), xfce4-session (>= 4.12.0), xfce4-appfinder (>= 4.12.0), xfce4-mixer (>= 4.10.0), orage (>= 4.10.0), libxfce4ui-utils (>= 4.12)

ご覧のとおり、xfce4 パッケージは gtk2-engines-xfce に依存しているため、gtk2-engines-xfce を削除すると apt も xfce4 も削除します。他のパッケージと似ているため、openshotはgtk2-engines-pixbufに依存し、gtk2-engines-pixbufはgtk2-engines-murrineに依存します。

また、ヘンリクのコメントを指摘したい。
apt-getはパッケージ名の代わりに正規表現を引数として使用できますが、シェルが実際にコマンドを呼び出す前に発生するファイルの一致に注意する必要があります。例を見てください:

$ touch gtk2-engine-test
$ sudo apt-get remove gtk2-engine*
[sudo] password for boban: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package gtk2-engine-test

aptに正規表現を渡すには、*、?などのファイルワイルドカード文字をエスケープする必要があります。 、[、]などなので、正しいコマンドは次のようになります。

sudo apt-get remove gtk2-engine\*

おすすめ記事