web-dev-qa-db-ja.com

apt-get dist-upgradeではなくapt-get upgradeを使用する理由

GUIの代わりにapt-get update && apt-get upgradeを使用して、更新とアップグレードを実行します。これは、GUIがより高速に実行されるようだからです。

しかし、最近、アップグレードの1つが保留されたというメッセージが頻繁に表示されることに気付きました。その後、通常dist-upgradeを実行して実行し、正常に動作します。 この質問 とその回答を読んだ後にわかる限り、dist-upgradeはすべて同じことをしてから、いくつかのことを行います。

だから、私の質問は:なぜapt-get upgradeを使用するのですか?常にapt-get dist-upgradeを使用しないのはなぜですか? apt-get upgradeが存在するのはなぜですか?

298
jimchristie

通常、マシンを次のようにアップグレードします。

Sudo apt-get update && time Sudo apt-get dist-upgrade

以下は、man apt-getからの抜粋です。 アップグレードを使用すると、ルールが維持されます:現在インストールされているパッケージは削除されないか、まだインストールされていないパッケージは取得およびインストールされます。それが重要な場合は、 apt-get upgrade。物事を「ただ動作させる」場合は、おそらくapt-get dist-upgradeを使用して依存関係が確実に解決されるようにする必要があります。

システム管理者である場合、dist-upgradeではなくupgradeが必要な理由を拡張するには、予測可能性が必要です。 apt pinning のような高度な機能を使用するか、 PPAs (おそらく社内PPAを持っている)のコレクションから引き出して、システムを検査するためのさまざまな自動化を使用している可能性がありますすべての利用可能なパッケージを常に熱心にアップグレードする代わりに、利用可能なアップグレードを行います。 aptがスクリプト化されていない動作を実行すると、特に本番サービスのダウンタイムにつながる場合は、非常にイライラします。

upgrade
    upgrade is used to install the newest versions of all packages
    currently installed on the system from the sources enumerated in
    /etc/apt/sources.list. Packages currently installed with new
    versions available are retrieved and upgraded; under no
    circumstances are currently installed packages removed, or packages
    not already installed retrieved and installed. New versions of
    currently installed packages that cannot be upgraded without
    changing the install status of another package will be left at
    their current version. An update must be performed first so that
    apt-get knows that new versions of packages are available.

dist-upgrade
    dist-upgrade in addition to performing the function of upgrade,
    also intelligently handles changing dependencies with new versions
    of packages; apt-get has a "smart" conflict resolution system, and
    it will attempt to upgrade the most important packages at the
    expense of less important ones if necessary. So, dist-upgrade
    command may remove some packages. The /etc/apt/sources.list file
    contains a list of locations from which to retrieve desired package
    files. See also apt_preferences(5) for a mechanism for overriding
    the general settings for individual packages.
406
rduplain

この質問に答えられてから1年が経ちましたが、これを言う必要があると感じています。 Ubuntu 14.04以降(およびGoogleからこれを見つけた人はDebian Jessie以降)はAPT 1.0を使用し、apt-getおよびapt-cacheの代わりにaptコマンドを使用できます一部の操作では。

  • apt-get upgradeはインストールされているものを変更しません(バージョンのみ)、
  • apt-get dist-upgradeは、アップグレードを完了するために必要に応じてパッケージをインストールまたは削除します。
  • apt upgradeは自動的にインストールされますが、パッケージは削除されません。
  • apt full-upgradeは、apt-get dist-upgradeと同じ機能を実行します。
126

upgradeオプションは、システムにすでにインストールされている新しいバージョンのパッケージのみをインストールします(そして、はい、カーネルの更新はそれらに属します)。

ただし、更新によって依存関係が変更される場合があります。たとえば、パッケージの新しいバージョンは、インストールしたライブラリに依存しなくなったり、追加のライブラリのインストールが必要になります。 upgradeオプションは、実際に不要になったインストール済みパッケージを削除しません。

ただし、dist-upgradeオプションは、依存関係システムの変更を「インテリジェントに」処理できます。これには、不要になったパッケージの削除や、依存関係の変更により生じたパッケージ間の競合の解決が含まれます。

7
January

ユーザーは、他の(明示的にインストールされた)パッケージの依存関係により、暗黙的にインストールされたパッケージに依存するようになった可能性があります。したがって、パッケージシステムは、dist-upgradeによって削除される可能性のある特定の機能を保持したいというユーザー/管理者の要望を認識できません。

2
user244474