アプリケーションを完全に削除する正しい方法は何ですか?


546

このような情報をネットで検索し、次のようなさまざまなコマンドラインを見つけました。

sudo apt-get remove application
sudo apt-get remove application*

sudo apt-get remove --purge application
sudo apt-get remove --purge application*

sudo apt-get purge application
sudo apt-get purge application*

だから、正しい方法は何ですか?その「*」を使用する必要がありますか?

その後、次のコマンドも見つけました。

sudo updatedb
sudo locate application
sudo rm -rf (file/folder name)

1
あなたの質問のいくつかはこの投稿で答えられるかもしれません:askubuntu.com/questions/1143/how-can-i-uninstall-software
Glutanimate

8
application*予期しない結果が得られる場合があります。たとえば、という名前の現在のディレクトリにファイルがある場合application_information、シェルはapt-getに渡される前にそれを展開します。これが起こっているとあなたはリテラルアスタリスクをしたいならば、あなたは使用することができますapplication\*'application*'
Izkata

6
application*現在のディレクトリにファイルがない場合は、さらに危険apt-getです。正規表現を使用し、globパターンは使用しません。人々は削除しようとしているシステム全体をほとんど拭いてきましたwine*
アンドレアコルベッリーニ

3
回答を受け入れてもらえますか?あなたに答えてくれた人々に感謝する。
m-ric 16

どちらapplication*application\*安全ではありません!引用符*を付ける\か、リスクを増加させる' 'だけで、そのまま渡されることを保証します(通常はとにかく!)、引数を正規表現として解釈します。正規表現では、「前の文字が0個以上」という意味です。間違いの一般的な形式は、アンインストールすることであるとのすべてのパッケージを削除し、(ない、)どこでも自分の名前とそれらのいずれかに応じて、すべてのパッケージに。この説明可能な修正を参照してください。@Izkata*apt-getapt-get*wine*winwinewin
Eliahケーガン

回答:


705
  • apt-get remove packagename

    バイナリは削除されますが、パッケージの構成ファイルまたはデータファイルは削除されませんpackagename。また、インストール時に依存関係がインストールされたままになります。

  • apt-get purge packagename または apt-get remove --purge packagename

    パッケージに関するすべてを削除しますが、packagenameインストール時にインストールされた依存関係は削除しません。両方のコマンドは同等です。

    設定を台無しにしたため、アプリケーションを「最初からやり直したい」ときに特に便利です。ただし、ユーザーのホームディレクトリ(通常は非表示のフォルダー)にある構成ファイルやデータファイルは削除されません。これらを削除する簡単な方法はありません。

  • apt-get autoremove

    孤立パッケージ、つまり、依存関係としてインストールされていたが、もはやインストールされていないインストール済みパッケージを削除します。不要になった依存関係がインストールされていたパッケージを削除した後、これを使用します。

  • aptitude remove packagenameまたはaptitude purge packagename(同様に)

    また、packagenameonで必要だったが、残りのパッケージでは必要とされていない他のパッケージを削除しようとします。aptitudeインストールしたパッケージの依存関係情報のみを記憶することに注意してください。

そして、もっとたくさんあります。下位レベルのdpkgコマンド(高度)、またはMuon、Synaptic、Software CenterなどのGUIツールを使用できます。アプリケーションを削除したり、パッケージ管理と対話する他のタスクを実行したりする「正しい方法」はありません。

見つけたリストは単なる例です。アクションを受け入れる前に、意味を理解し、やりたいことを確認してください(Y提案されたアクションを実際に実行する前に押す必要があります)。

質問のアスタリスクバージョンはおそらく間違っています。apt-getシェルとして、globパターンではなく、正規表現を受け入れます。それで何が起こる

sudo apt-get remove application*

次のとおりです。

  1. シェルはapplication*、現在のディレクトリ内のファイルを見て展開しようとします。(通常の場合)何も検出されない場合、グロブパターンを変更せずに返します(bashここでデフォルトの動作を想定して--- zshエラーが発生します)。

  2. apt-getその名前のパッケージが削除されます文字列が含まれた正規表現を満足application*され、applicatio任意の数の続くnapplicatioapplicationapplicationnlibapplicatio、など

  3. これは危険なことができるか、(二重の安全のためのルートなし)してみてくださいを参照するにはapt-get -s remove "wine*"-s代わりにそれを行うためのものをシミュレートします)---それは言うだろう、自分の名前に「勝利」したすべてのパッケージを削除しようと依存されますほぼシステム全体...

おそらく、意図されたコマンドは本当に

 sudo apt-get remove "^application.*"

(引用符とドットに注意)これは、名前がで始まるすべてのパッケージを削除しますapplication

これらのコマンド、

sudo updatedb                  # <-- updates the locate database (index). harmless
sudo locate application        # <-- locates the file 'application'. harmless
sudo rm -rf (file/folder name) # <-- removes files/dirs recursively. dangerous.

パッケージ管理の範囲外です。パッケージマネージャーを使用せずにパッケージに属するファイルを削除しないでください!それは混乱し、物事を行う間違った方法です。

ファイルがどのパッケージに属しているかわからない場合は、これを試してください:

dpkg -S /path/to/file

9
--purgeオプションはapt-get-autoremove --purge 、構成ファイルを含む残りの依存関係を完全に削除する場合にも便利です。ホームディレクトリ内の構成ファイルが--purgeオプションの影響を受けないことにも注意することが重要です。これらは手動で削除する必要があります。
グルタニメート

1
ここでエラーが発生しました:apt-getはglobではなくREを受け入れます。したがって、apt-get remove pack *は、pacで始まり、その後に0個以上のk ...が続くすべてのパッケージを削除します。anserを編集しました。askubuntu.com/questions/210976/
Rmano

この答えはもはや正確ではないと思います。どちらかapt remove -s texlive*またはそのapt-get対応する行はNote, selecting 'texlive-font-utils' for glob 'texlive*'(実際にグロブを受け入れることを意味する)などの行を返し、その後に通常のが続きPackage 'texlive-common' is not installed, so not removed、最後Remvになどの行が続きRemv texlive-font-utils [2015.20160320-1] [...]ます。
ジョナサンY.

@JonathanY。未インストールのパッケージも選択します。とにかく、あなたは新しい質問をして、あなたの状況が質問にあるものをもう少し詳しく説明してください。私はそれを見てうれしいです:)
gertvdijk

新しい質問はしていません。この回答がなされて細部の一部が不正確になるので、私は可能な変更を指摘しています。ウィットに、それはそれは思わapt-get remove packa*確かグロブを取るんpacka*それが一致します。代わりに正規表現としてそれを見てpackageではなくpack
ジョナサンY.

110

Ubuntu 12.04以降の場合、正しい方法は次のとおりです。

sudo apt-get --purge autoremove packagename

ここで詳しく説明します

packagename*意図しないパッケージを削除し、解決する以上の問題を引き起こす可能性があるため、使用しないでください。あなたは、少なくともでそれを実行しなければならない場合や-s--simulate--dry-runフラグは最初、それはそれをやってなくて何をするかを正確に確認してください。


13
これは、短く簡潔正しい答えである:
アンワル

20

次のコマンドを使用できます。

sudo apt-get purge --auto-remove packagename

必要なパッケージと、それらのパッケージと共にインストールされる依存関係を削除します。--auto-removeオプション(の別名であるがautoremove)に似ていますsudo apt-get autoremove。このコマンドを使用すると、単一のコマンドを実行できます。

sudo apt-get purge --auto-remove packagename

の代わりに:

sudo apt-get purge packagename
sudo apt-get autoremove

2
正しいですが、を使用することもできますsudo apt-get --purge autoremove packagename。ここでは同じ1つのコマンド
アンワル

完全なコマンドをのapt-get autoremove --purge代わりに書くこともできますapt-get purge --auto-removeか?
-felwithe

3
誰かが私を撃ってくれますか?
マーティンアンダーソン

7

あなたは安全に使用できるsudo apt-get remove --purge applicationか、sudo apt-get remove applications時間の99%。purgeフラグを使用すると、すべての構成ファイルも削除されます。上記のアプリケーションを再インストールするかどうかに応じて、必要な場合とそうでない場合があります。application*始まるすべてのアプリケーションと一致しますapplication通常のプラグイン、追加機能、などあなたが削除されている主なアプリケーションのです。すなわち

sudo apt-get remove gedit*

除去するであろうgeditgedit-pluginsgedit-common。通常、ほとんどのプラグイン/関連プログラムはメインアプリケーションに依存しており、メインアプリケーションをアンインストールすると自動的に削除(または削除マーク)されるため、これを行う必要はありません。

最後のコマンドは、乱雑なアンインストーラーがあることがわかっているアプリケーションから残り物を削除することです。アプリケーションの残りを削除するだけです。


5

パッケージを削除する際にいくつかのエラーメッセージが表示されましたが、動作する唯一の方法は次のとおりです。

mv /var/lib/dpkg/info/package.* /tmp/
dpkg --remove --force-remove-reinstreq package

使用しているだけで

dpkg --remove --force-remove-reinstreq package

パッケージを削除せず、移動するファイルへの正しいパスを表示します:

mv /var/lib/dpkg/info/package.* /tmp/

パッケージをアプリケーション名に置き換えます。Ubuntuでsudoを使用し、Debianのルートになります。



1

削除するアプリケーションによって異なります。yesコマンドを発行する前に、必ず依存関係を確認してください。コマンドラインで何かを削除すると、不要になったライブラリがいくつか表示されることがあります。これらはapt-get autoremoveで削除できます。

sudo apt-get remove --purge applicationnameなどのコマンドを使用すると、他のアプリケーションに必要な依存関係が削除され、システムが破損する可能性があることに注意してください。

より安全な方法で実行したい場合は、ソフトウェアセンターまたはapt-get remove applicationnameを使用していつでも削除できます。依存関係がもう必要ない場合は、後でapt-get autoremoveを発行してください。


Debianパッケージシステム全体は、他のパッケージに依存しているパッケージがある場合、そのパッケージを削除しないように特別に設計されたと思います。あなたはあまりにも依存するすべてのパッケージを削除するかどうかを尋ねるメッセージが(親切)とすることができ、あなたが実際にすべきところはある読んで削除されようとしてパッケージのリスト、私が思うに、あなたが言おうとしているものを。
Xen2050

1

ここで混乱の原因と思われる1つのことを明確にしたかっただけです。このdpkgユーティリティは、パッケージの依存関係を認識または追跡していません。これは、apt開発された大きな理由でした。このページセクション8.6でそれについて読むことができます。DebianGNU / Linux FAQ-Debianパッケージ管理ツール

  • aptを使用する場合:パッケージAを削除する必要があり、パッケージBと呼ばれる依存関係があり、パッケージBに他の依存パッケージがない場合、パッケージAとBは削除されます。パッケージB DIDに他の依存パッケージがある場合、パッケージAのみがパージされます。

  • dpkgの場合:依存関係は何ですか?あなたはちょうどいまいましい
    パッケージをパージするように私に言ったので、それが私がしたことです!あなたの側の不十分な計画は
    私の側の緊急事態を構成しません。

そうは言っても、各パージ方法に使用できる2つのワンライナーは次のとおりです。

dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --dry-run --purge

apt-get autoremove -y; apt-get --dry-run purge -y $(dpkg --list |grep '^rc' |awk '{print $2}')

削除して--dry-run、実行したアクションを報告する代わりに、実際のパージ操作を実行します。

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