Debian系のLinuxで使われている、パッケージ管理システム「apt」には
apt-get upgrade
apt-get dist-upgrade
apt upgrade
apt full-upgrade
という感じで、パッケージをアップグレードするための「コマンド・サブコマンド」が主に4種類あるらしい。
(厳密に言うとaptitude
コマンドもあるらしいけどこの記事では割愛します)
この4つの違いについて調べた結果メモ。
以下、man apt-get
より引用です。
apt-get upgrade
upgrade は、現在システムにインストールされている全パッケージの最新バージョンを、/etc/apt/sources.list に列挙した取得元からインストールするのに使用します。現在インストール中のパッケージに新しいバージョンがあれば更新しますが、いかなる時も現在インストール中のパッケージの削除は行いませんし、インストールしていないパッケージの取得・インストールは行いません。対象のパッケージが、他のパッケージのインストール状態を変更せずに更新できない場合は、現在のバージョンのままとなります。最初に update を実行しておき、apt-get にパッケージの新しいバージョンがあることを知らせる必要があります。
apt-get dist-upgrade
dist-upgrade は、upgrade の機能に加え、新バージョンのパッケージに対する依存関係の変更を知的に操作します。apt-get は「洗練された」競合解決システムを持ち、必要とあらば比較的重要でないパッケージを犠牲にして、最重要パッケージの更新を試みます。そのため dist-upgrade は、いくつかのパッケージを削除する可能性があります。/etc/apt/sources.list ファイルには、必要なパッケージファイルを検索する場所のリストが含まれています。特定のパッケージ向けに、一般的な設定を上書きする機構については、apt_preferences(5) をご覧ください。
以下、man apt
より引用です。
apt upgrade
upgrade は、sources.list(5) で設定された取得元からシステムに現在インストール済みのすべてのパッケージで利用可能なアップグレードをインストールするために使用されます。依存関係を満たすために必要な場合は新しいパッケージがインストールされますが、既存のパッケージが削除されることはありません。パッケージのアップグレードにインストール済みパッケージの削除が必要な場合、そのパッケージのアップグレードは行われません。
apt full-upgrade
full-upgrade はアップグレードの機能を実行しますが、システム全体をアップグレードするために必要とされる場合には、現在インストール済みのパッケージを削除することができます。
ふむふむ・・・。
書いていることを表にまとめるとこんな感じ↓・・・?
項目 | apt-get upgrade | apt-get dist-upgrade | apt upgrade | apt full-upgrade |
---|---|---|---|---|
追加パッケージのインストール | しない | する | する | する |
不要なパッケージの削除 | しない | する | しない | する |
プログレスバーが表示されて進捗状況が分かりやすい? | ✕ | ✕ | ○ | ○ |
とりあえず
- apt-get dist-upgrade
- apt full-upgrade
の2つはまったく同じ機能らしい・・・。
まとめ
・一般ユーザーはapt upgrade
を使っておけばいい。これが推奨されてるので。
・スクリプトとか書く人はapt-get upgrade
を使ったほうが出力が安定しているので良いらしい(?)。
・カーネルとか重要なやつとかを色々アップグレードしたい場合はapt-get dist-upgrade
かapt full-upgrade
を使えばいいっぽい(?)。
雑な記事ですみません・・・。
おわり
コメント
コメント失礼します。
apt updateはパッケージのインストールではなく、パッケージリストを更新するコマンドではないでしょうか…?
apt upgradeとapt updateを少し混同されているように感じました。
ご指摘の通り、
apt upgrade
とapt update
を混同して書いておりました・・・。正しくはすべて
apt upgrade
です。(修正しました)ご指摘ありがとうございました