web-dev-qa-db-ja.com

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

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

  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
17
sajjad

素早い回答

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

完全な回答

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

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

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

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

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

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

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

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 packagenameSudo apt-get purge packagenameと同等ではありません。それらは同等です。 --purgeが便利なのは、remove以外のコマンドotherの動作を変更する場合です。

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

Sudo apt-get --purge autoremove

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

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

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

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

24
Eliah Kagan