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


302

apt-get update && apt-get upgradeGUIの代わりに更新とアップグレードを実行するのが普通です。これは、GUIがより速く実行されるようだからです。

しかし、最近、アップグレードの1つが保留されたというメッセージを頻繁に受け取ることに気付きました。それから私は通常dist-upgradeそれを実行するために走り、それはうまく働きます。この質問とその答えを読んだ後、私が知る限りdist-upgrade、同じことをしてからいくつかを行います。

だから、私の質問は次のとおりapt-get upgradeです。apt-get dist-upgradeいつも使ってみませんか?なぜapt-get upgrade存在するのでしょうか?


1
新しいUbuntuバージョンでsudo apt full-upgradeは、同様のことが行われます。
アーロンフランケ

回答:


410

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

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

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

システム管理者である場合、dist-upgradeの代わりにアップグレードする理由を拡張するには、予測可能性が必要です。あなたは高度な機能のように使用している可能性がありがちピニングかのコレクションから引っ張っのPPAを常に熱心に利用可能なすべてのパッケージをアップグレードするのではなく、お使いのシステムと使用可能なアップグレードを検査する場所で、様々な自動化と、(おそらくあなたは、社内の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.

44
2つの違いを要約するだけでなく、一方が他方より優れている状況を説明してくれてありがとう。これはまさに私が探していたものでした。
jimchristie

10
dist-upgradeよりひどくものを壊す可能性が高いですupgradeupgradeシステムが完全に維持されるようにします。
Braiam 14年

5
あなたはロードローラーのアプローチを取るに慣れている場合のdist-upgradeは、競合パッケージのバージョンとの問題を修正する可能性が高い(つまり、あなたはボックス上で実行されているミッションクリティカルな制作ソフトを持っていない)
Henno

1
「現在インストールされているパッケージが削除されていないか、新しいパッケージが追加されていない」という事実に関する「apt-get upgrade」に関する小さな質問:既存のパッケージもそれに応じてアップグレードされますか。たとえば、oldAはoldBに依存しています。oldAとoldBは両方ともアップグレードされますか?newAがnewBではなくoldBに依存している場合、アップグレード中にこれら2つはどうなりますか?両方がアップグレードされていないか、両方がアップグレードされているため、oldBが失われたためにnewAが機能しなくなる場合がありますか?
ケニー

2
timeここを使用する理由は何ですか?
ItalyPaleAle

128

この質問に答えられてから1年が経ちましたが、これを言う必要があると感じています。(後で、グーグルからこれを見つけ、それらのためとDebianジェシーと)のUbuntu 14.04以降では、コマンドを可能にする、APT 1.0を使用するapt代わりに、apt-getそしてapt-cacheいくつかの操作のために。

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

@muru編集とフルアップグレードについての注意をありがとう。私は主にDebian 7(APT 1.0より前)を使用し、Debian JessieとUbuntu 14.04でしか遊んでいません。
スティーブンアンジェリコ

どういたしまして。jessie14.04を定期的に使用している人として、私はあなたの答えからこの新しいユーティリティを最初に知りました!
ムル

説明のソースはありますapt upgradeか?私が思い付くことができるすべてのものapt upgradeは、と同じapt-get upgradeです。例えば、apt help upgrade私のシステム出力に:"apt upgrade" is equivalent to "sudo apt-get upgrade"
ジョン・ベントレー

1
それぞれのマンページはaptapt-get私が最初に言ったことを指定します。
スティーブンアンジェリコ

1
apt safe-upgrade私のシステムでは有効な操作ではありません。あなたが意味するなら、そうではaptitude safe-upgradeありません。apt-get upgrade一方、パッケージをインストールすることはありませんapt upgradeし、aptitude safe-upgrade依存関係がそれを要求して新しいパッケージをインストールします。だから、aptitude safe-upgradeと等価であるapt upgrade、ではありませんapt-get upgrade
スティーブンアンジェリコ

7

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

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

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


5
これは正確ですが、質問に答えているとは思いません。依存関係の変更を処理し、混乱を取り除くことができる「インテリジェント」オプションがある場合、なぜそれを常に使用しないのですか?
エンドリューク

1
upgradeまた、依存関係として必要になる新しいパッケージを追加することもありません。From :「現在インストールされているパッケージが削除されない、またはインストールされていないパッケージが取得およびインストールされる」@ændrük何かが「インテリジェント」だからといって、ユーザーが望むことを常に実行するわけではない。いつでもシステムアップデートは削除パッケージを、それはYを押す前にやっているものの上に見て良いことだman apt-get
Eliahケーガン

2

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


-4

Win-Homeユーザーが常に "dist-upgrade"することは問題になりませんが、複雑なシステムを実行している場合は、 "(実際に)実行中のシステムを変更しない"ことをお勧めします。 、問題がある可能性があります-何があなたを遮断します! あなたは正しい2を決定する人でなければなりません;-)


3
Should not be a problem for Win-Home Users to always "dist-upgrade"..何故ですか ?
heemayl

1
さて、生産的な環境のためのワークステーションであるubuntu-serverをセットアップしたとしましょう:あなたが常に自動化したときにdist-upgradeを実行すると、おそらく問題を解決する時間がない場合でも、制御できない場合がありますその瞬間、自動配布アップグレードが行われます。一部の構成では、ポートへの「人間の」タッチが必要になる場合があります。それは私が数回経験したことです。Win-Homeのような「ホーム」プラットフォームで作業する場合、デフォルトでは、ユーザーは更新を制御できません。だからあなたはそれを気にしないかもしれません。
ソーベンカウフマン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.