さまざまなAPTパッケージ削除コマンドの違いは何ですか?


17

これらのコマンドの違いは何ですか?

  1. sudo apt-get autoremove --purge packagenames
  2. sudo apt-get remove --purge packagenames
  3. sudo apt-get purge purge packagenmaes
  4. sudo apt-get remove packagenames
  5. sudo apt-get autoremove

回答:


24

素早い回答

  • remove その名前のパッケージをアンインストールします。
  • autoremove不要になった自動インストールされたパッケージをすべてアンインストールします。後にパッケージ名をリストするのは正しくありませんautoremove。それらは無視され(そしてすべての適格なパッケージが削除されます)、おそらくあなたが意図したものではありません。
  • --purge削除されるパッケージに関連するシステム全体の構成ファイルも削除されます。removeまたはなどのコマンドが必要autoremoveです。--purgeフラグは、コマンドの動作を修正します。それ自体では動作しません。
  • purge--purge remove(と同じ)と同じことを意味しremove --purgeます。purge2回言うのは間違っています。2番目purgeは、パッケージの名前としてpurged と解釈されますが、これはおそらくあなたが意図したものではありません。

完全な回答

これらのコマンドが何をするのか、またそれらがどのように異なるのかを理解するには、2つの概念を理解することが役立ちます(おそらく不可欠です)。

  1. 手動でインストールされたパッケージと自動でインストールされたパッケージの区別
  2. パッケージのパッケージファイルとその構成ファイルの区別

手動インストールと自動インストール

インストールされたパッケージは、手動または自動でインストールされます。

インストールするパッケージを指定してインストールすると、手動でインストールされます。

ただし、他のパッケージもインストールされる場合があります。ほとんどのパッケージには依存関係があります。パッケージが意図したとおりに機能するためには、他のパッケージをインストールする必要があります。パッケージをインストールすると、その依存関係(つまり、依存する他のパッケージ)がインストールされます(以前にインストールされたものを除く)。

パッケージがインストールされるように指定されていないが、代わりにインストールするように指定したパッケージの依存関係としてインストールされる場合、パッケージは自動的にインストールされます。

2つのパッケージがインストールされていて、そのうちの1つが別のパッケージの依存関係である場合、依存関係が自動的にインストールされるわけではないことに注意してください。依存関係が手動でインストールされた可能性もあります(つまり、依存関係に依存するパッケージの前または同時にインストールされたなど、ユーザーが指定しました)。

最後に:

  • 既にインストールされているパッケージを手動でインストールしようとすると、インストールされたままになります。ただし、自動的にインストールされた場合、変更が行われます。手動でインストールしようとすると、手動でインストールされたものとしてマークされます。
  • パッケージapt-markが実際にインストールされた方法や状況に関係なく、パッケージを手動または自動で(コマンドを使用して)インストール済みとしてマークできます。
  • Ubuntuシステムにプリインストールされているパッケージは、すべて自動的にインストールされるわけではありません。それらの一部は自動的にインストール済みとマークされ、その他は手動でインストール済みとマークされています。これは、手動でインストールされたパッケージと自動でインストールされたパッケージを区別する背後のロジックを満たすためです。一部のパッケージは他のパッケージのサービスでのみ必要であるという考えです。

通常、自動的にインストールされたパッケージごとに、それに依存する(および自動的にインストールされる原因となった)手動でインストールされたパッケージが少なくとも1つあります。ただし、自動インストールパッケージに依存する手動インストールパッケージをすべて削除すると、自動インストールパッケージは不要になりますが、インストールされたままになります。

apt-get autoremove 手動でインストールされたパッケージがなくなった、自動的にインストールされたパッケージを削除します。

パッケージファイルと構成ファイル

パッケージは、そのバージョンのパッケージがインストールされているすべてのシステムで同じであり、そのままであることが意図されているファイルを提供します。このようなファイルは、インストールされたプログラムの実行可能ファイル、リソース、ドキュメント、およびその他の「資産」を提供します。通常、これらはパッケージが提供する「ファイル」と呼ばれます。

しかし、パッケージは他のファイルも提供します。これらのファイルは(おそらく)変更することを目的としています。これらは、グローバル(またはシステム全体)構成ファイルと呼ばれます。ほとんどの場合、これらは/etcディレクトリにインストールされ、インストールされたプログラムの動作を変更するために自動および手動で変更できます。たとえばsudo、構成ファイル/etc/sudoers、およびその他の構成ファイル用のディレクトリがあります/etc/sudoers.d。そのファイル、およびそのディレクトリに追加されたファイルは、誰がsudoどのような方法で使用できるかを指定します。

通常、パッケージをアンインストールしてからインストールし直すと、パッケージの動作が変わらないことが望まれますパッケージファイルが破損していて、もちろん再インストールした場合を除く)。したがって、通常、パッケージをアンインストールすると、パッケージファイルは削除されますが、システム全体の構成ファイルは変更されません。

システム全体の構成ファイルも削除することになっていることを指定せずにパッケージをアンインストールすると、それはパッケージの「削除」と呼ばれます。

パッケージをアンインストールするときにパッケージのシステム全体の構成ファイルも削除する場合は、パッケージの「パージ」と呼ばれます。

apt-get removeパッケージを削除します。つまり、パッケージはアンインストールされますが、システム全体の構成ファイルは残ります。

apt-get purgeパッケージをパージします。つまり、パッケージをアンインストールし、システム全体の構成ファイルも必ず削除します。

パッケージを削除する別の方法は、--purgeフラグを使用することです。それはapt-get何をすべきかを教えてくれません。代わりに、remove指示するような用語(または「コマンド」)を変更します。この--purgeフラグにより​​、パッケージのアンインストールには、アンインストールされるパッケージのシステム全体の構成ファイルの削除が伴います。つまり、--purgeフラグは削除をパージに変換します。

コマンドがある--purgeのに、なぜフラグがあるのpurgeですか?結局、sudo apt-get --purge remove packagenameはと同等ではありませんsudo apt-get purge packagename。それらは同等です。どこに--purgeあなたがコマンドの動作変更したいときに便利ですに来て、他のよりをremove

たとえば、不要になった自動的にインストールされたパッケージをアンインストールしたい場合(それらに依存する手動でインストールされたパッケージがなくなったため)、これらの自動インストールされたパッケージを削除するだけでなく、削除したい場合もありますシステム全体の構成ファイル。次に、実行することができます:

sudo apt-get --purge autoremove

のもう1つの使用を考えてみましょう--purge。と呼ばれるフラグがあり、--reinstallインストールを再インストールに変換します。これは、通常、すでにインストールされているパッケージをインストールしようとすると、何も起こらないか、(パッケージが自動的にインストールされたとマークされている場合)パッケージが手動でインストールされたとマークされます。しかし、と--reinstallフラグ、すでに原因それがためにインストールされているパッケージのインストール削除してから戻ってインストールを

sudo apt-get --reinstall install packagename

ただし、再インストールするパッケージのシステム全体の構成ファイルを削除するとします。これはやや一般的です。パッケージが機能せず、理由がわからない場合は、パッケージを再インストールして、構成ファイルを削除して、構成がデフォルトにリセットされるようにしてください。これを実現するには、次を実行できます。

sudo apt-get --purge --reinstall install packagename

--reinstall再インストールに変わるのインストールが(すなわち、除去は、インストールに続く)、および--purgeパージに再インストールの除去部をオンにします。

あなたの例の振る舞い

これで、apt-getコマンド例のそれぞれが何をするかが明確になります。

  • sudo apt-get autoremove --purge packagenames

    これにより、それらに依存するパッケージが手動でインストールされなくなった、自動的にインストールされたパッケージがパージされます。つまり、それらのパッケージをアンインストールし(パッケージファイルを削除する必要があります)、システム全体の構成ファイルも削除します。

    ここでpackagenamesは、何もしません。特に、名前がリストされているパッケージのみを削除する場合、意図したとおりに動作しません。

  • sudo apt-get remove --purge packagenames

    これはパージしpackagenamesます。packagenames空白で区切られたパッケージ名のリストであると仮定すると、それらはすべて削除されます。つまり、それらをアンインストールし(パッケージファイルを削除する必要があります)、システム全体の構成ファイルも削除します。

    にリストされているパッケージのいずれかがpackagenamesインストールされていない場合、リストにそのパッケージが存在しても効果はありません(インストールされていないことが通知されることを除く)。実際のパッケージの名前ではないパッケージ名をリストすると、コマンドはエラーで失敗します。unable to locate packagename

  • sudo apt-get purge purge packagenmaes

    purgeそのコマンドでの出現の1つを削除した場合、前のものと同等になります。現状では、と呼ばれるパッケージpurgeをパージし、にリストされているパッケージもパージしようとしますpackagenames。以来purge任意のパッケージの名前ではありません、それはエラーメッセージで失敗します。

  • sudo apt-get remove packagenames

    これにより、にリストされpackagenamesているパッケージが削除され、パッケージファイルが削除されます。これは、システム全体の構成ファイルを削除しません(これは単なる削除であり、パージではないためです)。

  • sudo apt-get autoremove

    これにより、それらに依存するパッケージが手動でインストールされなくなった、自動的にインストールされたパッケージがアンインストールされます。これには、パッケージファイルの削除が伴いますが、システム全体の構成ファイルの削除は含まれません(つまり、削除ではありますが、削除ではありません)。

使用方法の詳細についてapt-get、マニュアルページをお勧めします。より一般的な情報については、このガイドを参照してください

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