Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

【初心者向け】sudo apt-get update と sudo apt-get upgrade の違いとは?使い方を徹底解説

sudo apt-get updatesudo apt-get upgradeは、DebianおよびDebianベースのLinuxディストリビューションでパッケージを最新の状態に保つために使う2つのコマンドです。

どちらもLinux管理者やDevOpsエンジニアにとって定番のコマンドですが、コマンドラインをあまり使わない方にとっても知っておくと非常に便利です。

この記事では、両コマンドの役割の違い、具体的な使い方、そしてよくある質問まで詳しく解説していきます。

「sudo apt-get update」と「sudo apt-get upgrade」の違い

最大の違いは次の通りです。sudo apt-get updateは、ディストリビューションの公式ソフトウェアリポジトリや、設定済みのサードパーティリポジトリから最新のパッケージリストを取得するコマンドです。つまり、各パッケージや依存関係の最新バージョンが何かを把握しますが、実際にダウンロードやインストールは行いません。

一方、sudo apt-get upgradeコマンドは、システム上の古くなったパッケージや依存関係の更新をダウンロードしてインストールするコマンドです。ただし、実行しただけで即座にアップグレードされるわけではなく、変更内容を確認したうえでアップグレードを実行するかどうかを選択できます。

「sudo apt-get update」コマンドの使い方

まず、お使いのDebian系Linuxディストリビューション(Debian、Ubuntu、Linux Mint、Kali Linux、Raspberry Pi OSなど)でターミナルウィンドウを開きます。

ディストリビューションによってターミナルの名称は異なります。たとえばUbuntuやLinux Mintでは、デフォルトのターミナルはGnome Terminalですが、アプリケーションメニューでは単に「端末(Terminal)」と表示されることがあります。

ターミナルでsudo apt-get updateと入力し、管理者パスワードを入力してEnterキーを押します。

利用可能な更新がある場合は、次のような出力が表示されます。

kris@pihole:~ $ sudo apt-get update
Hit:1 https://ftp.harukasan.org/raspbian/raspbian bullseye InRelease
Get:2 https://download.docker.com/linux/raspbian bullseye InRelease [26.7 kB]
Get:3 https://archive.raspberrypi.org/debian bullseye InRelease [23.7 kB]       
Get:4 https://packages.azlux.fr/debian buster InRelease [3,989 B]               
Get:5 https://archive.raspberrypi.org/debian bullseye/main armhf Packages [282 kB]
Get:6 https://packages.azlux.fr/debian buster/main armhf Packages [3,418 B]
Fetched 340 kB in 4s (94.8 kB/s)     
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
3 packages can be upgraded. Run 'apt list --upgradable' to see them.

どのパッケージがアップグレード可能かを確認したい場合は、apt list --upgradableを実行します。

kris@pihole:~ $ apt list --upgradable
Listing... Done
libcamera0/stable 0~git20220426+18e68a9b-1 armhf [upgradable from: 0~git20220303+e68e0f1e-1]
raspi-config/stable 20220425 all [upgradable from: 20220419]
rpi-eeprom/stable 13.13-1 armhf [upgradable from: 13.12-1]

一方、リポジトリに新しいバージョンのパッケージや依存関係がない場合は、次のような出力になります。

kris@pihole:~ $ sudo apt-get update
Get:1 https://download.docker.com/linux/raspbian bullseye InRelease [26.7 kB]
Hit:2 https://ftp.harukasan.org/raspbian/raspbian bullseye InRelease           
Hit:3 https://packages.azlux.fr/debian buster InRelease                         
Hit:4 https://archive.raspberrypi.org/debian bullseye InRelease
Fetched 26.7 kB in 3s (8,789 B/s)
Reading package lists... Done

この出力には、アップグレード可能なパッケージに関する記述や、apt list --upgradableを実行するよう促すメッセージが表示されていません。

ただし、これは必ずしもシステムに古いソフトウェアがないことを意味するわけではなく、「すでに最新のパッケージリストを取得済みである」ことを示しているだけです。sudo apt-get updateを何度も実行していた場合などに起こります。

アップグレード可能なものがあるかどうかは、いつでもapt list --upgradableを再実行して確認できます。

また、より新しいsudo apt updateコマンドを使うのもおすすめです。こちらのコマンドは、アップグレード可能なパッケージ数を常に表示してくれるか、すべて最新である旨のメッセージを表示してくれます。

aptapt-getの違いについて詳しくは、後述のFAQセクションを参照してください。

「sudo apt-get upgrade」コマンドの使い方

sudo apt-get updateコマンドを実行した後、同じターミナルウィンドウでsudo apt-get upgradeと入力し、必要に応じてパスワードを入力してEnterキーを押します。

すると、次のような出力が表示されます。

kris@pihole:~ $ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,616 kB of archives.
After this operation, 1,596 kB of additional disk space will be used.
Do you want to continue? [Y/n] 

出力の下部には、アップグレードされるパッケージの一覧が表示されます。

The following packages will be upgraded:
  libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

続いて、ダウンロードが必要なデータ量と、アップグレード後に使用される追加のディスク容量が表示されます。

Need to get 2,616 kB of archives.
After this operation, 1,596 kB of additional disk space will be used.

最後に、アップグレードを続行するかどうかを尋ねるプロンプトが表示されます。

Do you want to continue? [Y/n] 

yY、またはyesと入力するとアップグレードが続行され、nN、またはnoと入力するとupgradeコマンドを終了します。

終了を選択した場合の出力は次のようになります。

kris@pihole:~ $ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,616 kB of archives.
After this operation, 1,596 kB of additional disk space will be used.
Do you want to continue? [Y/n] n
Abort.

続行を選択した場合は、次のような長い出力が表示されます。

kris@pihole:~ $ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,616 kB of archives.
After this operation, 1,596 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 https://archive.raspberrypi.org/debian bullseye/main armhf libcamera0 armhf 0~git20220426+18e68a9b-1 [548 kB]
Get:2 https://archive.raspberrypi.org/debian bullseye/main armhf raspi-config all 20220425 [30.3 kB]
Get:3 https://archive.raspberrypi.org/debian bullseye/main armhf rpi-eeprom armhf 13.13-1 [2,037 kB]
Fetched 2,616 kB in 3s (1,019 kB/s)   
Reading changelogs... Done
(Reading database ... 43496 files and directories currently installed.)
Preparing to unpack .../libcamera0_0~git20220426+18e68a9b-1_armhf.deb ...
Unpacking libcamera0:armhf (0~git20220426+18e68a9b-1) over (0~git20220303+e68e0f1e-1) ...
Preparing to unpack .../raspi-config_20220425_all.deb ...
Unpacking raspi-config (20220425) over (20220419) ...
Preparing to unpack .../rpi-eeprom_13.13-1_armhf.deb ...
Unpacking rpi-eeprom (13.13-1) over (13.12-1) ...
Setting up rpi-eeprom (13.13-1) ...
Setting up libcamera0:armhf (0~git20220426+18e68a9b-1) ...
Setting up raspi-config (20220425) ...
Processing triggers for man-db (2.9.4-2) ...
Processing triggers for libc-bin (2.31-13+rpt2+rpi1+deb11u2) ...

これが完了すると、古くなっていたすべてのパッケージと依存関係が更新されます。

sudo apt-get upgradeコマンドについて覚えておくべき重要な点として、このコマンドは何も削除せずにアップグレードできるものだけを更新するという特徴があります。

たとえば、あるアップグレードに新しい依存関係が必要な場合、upgradeコマンドはそれをダウンロード・インストールしますが、古い依存関係は削除しません。古い依存関係の削除には別のコマンドが必要です。これはカーネルの新バージョンにアップグレードする際によく見られます。

アップグレード後に次のようなメッセージが表示された場合は:

The following packages were automatically installed and are no longer required:
  g++-8 gir1.2-mutter-4 libapache2-mod-php7.2 libcrystalhd3
Use 'sudo apt autoremove' to remove them.

メッセージの指示に従い、sudo apt autoremoveを使って不要になったパッケージを削除できます。

「sudo apt-get upgrade」で使える便利なオプション

sudo apt-get upgradeコマンドにはさまざまなオプションやパラメータがありますが、特におすすめなのが--dry-run--yesの2つです。

「--dry-run」オプションの使い方

--dry-run(別名:-sまたは--simulate)オプションは、アップグレード処理で何が起こるかをシミュレートしますが、システムには実際に何も変更を加えません。

kris@pihole:~ $ sudo apt-get upgrade --dry-run
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Inst libcamera0 [0~git20220303+e68e0f1e-1] (0~git20220426+18e68a9b-1 Raspberry Pi Foundation:stable [armhf])
Inst raspi-config [20220331] (20220425 Raspberry Pi Foundation:stable [all])
Inst rpi-eeprom [13.12-1] (13.13-1 Raspberry Pi Foundation:stable [armhf])
Conf libcamera0 (0~git20220426+18e68a9b-1 Raspberry Pi Foundation:stable [armhf])
Conf raspi-config (20220425 Raspberry Pi Foundation:stable [all])
Conf rpi-eeprom (13.13-1 Raspberry Pi Foundation:stable [armhf])

DebianおよびDebian系ディストリビューションは非常に安定していますが、アップグレード時に競合が発生しないか事前に確認したい場合に、このオプションは役立ちます。

「--yes」オプションの使い方

--yes(別名:-yまたは--assume-yes)オプションは、安全であると判断されるプロンプトに対して自動的に「yes」と回答します。

kris@pihole:~ $ sudo apt-get upgrade --yes
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,616 kB of archives.
After this operation, 1,596 kB of additional disk space will be used.
Get:1 https://archive.raspberrypi.org/debian bullseye/main armhf libcamera0 armhf 0~git20220426+18e68a9b-1 [548 kB]
Get:2 https://archive.raspberrypi.org/debian bullseye/main armhf raspi-config all 20220425 [30.3 kB]
Get:3 https://archive.raspberrypi.org/debian bullseye/main armhf rpi-eeprom armhf 13.13-1 [2,037 kB]
...
Processing triggers for libc-bin (2.31-13+rpt2+rpi1+deb11u2) ...

上記の出力ではDo you want to continue? [Y/n]の確認がスキップされ、すべてのパッケージがそのままアップグレードされている点に注目してください。

よくある質問(FAQ)

「sudo」と「apt-get」とは何?

sudo apt-get updatesudo apt-get upgradeは、どちらもsudoapt-get、そしてupdateまたはupgradeという3つの部分で構成されています。

sudoは「superuser do」の略で、root(管理者)権限でプログラムを実行できるようにするコマンドです。

たとえば、システムの再起動にはスーパーユーザー/rootレベルの権限が必要なため、ターミナルでrebootだけを実行すると、次のようなエラーが返されることがあります。

Failed to set wall message, ignoring: Interactive authentication required.
Failed to reboot system via logind: Interactive authentication required.
Failed to open initctl fifo: Permission denied
Failed to talk to init daemon.

しかし、sudo rebootを実行して管理者パスワードを入力すれば、スーパーユーザーとしてrebootコマンドが実行され、システムはすぐに再起動します。

apt-getは、DebianおよびDebian系Linuxディストリビューションでパッケージのインストールや管理を行うためのコマンドラインツールです。

「apt-get」と「apt」の違いは?

aptは、DebianおよびDebian系ディストリビューションでアプリケーションをインストール・管理するための、より新しいツールです。

ほとんどの場合、aptapt-getは互換的に使えます。sudo apt updatesudo apt-get updateは、どちらもシステムのパッケージリストを更新します。

主な違いとして挙げられるのは、aptの方がタイプ量が少なく、出力も一般的により分かりやすいこと、さらにパッケージインストール時のプログレスバーなど、ユーザーフレンドリーな機能が含まれている点です。

この記事の例の多くではapt-getを使用していますが、今後はaptを使うことを強くおすすめします。

「sudo apt-get update」と「sudo apt-get upgrade」は安全に使える?

はい、安全です。DebianおよびDebian系ディストリビューションは一般的に非常に安定しており、updateupgradeコマンドは安心して使えます。これは、パッケージや依存関係、ディストリビューション自体のメジャーアップデートが年1〜2回程度しかリリースされないためです。

デメリットとしては、Arch Linuxのような最先端(ブリーディングエッジ)のディストリビューションとは異なり、最新版のパッケージを使いたい場合は追加の手間が必要になることがあります。PPA経由でサードパーティリポジトリを設定したり、SnapやFlatpakといった代替パッケージシステムを利用したり、自分でソースからコンパイルしたりする必要があるかもしれません。

しかし、多少古めのソフトウェアと引き換えに得られる安定性は十分な価値があると、少なくとも筆者は考えています。

「sudo apt-get update」と「sudo apt-get upgrade」を連結して実行できる?

sudo apt-get updateを実行し、完了を待ってからsudo apt-get upgradeを実行するのは面倒だと感じるかもしれません。

どちらのコマンドも比較的短時間で完了しますが、一連のコマンドをまとめて実行し、数分後に結果を確認する方が楽な場合もあります。

&&演算子を使えば、複数のコマンドを次のように連結できます。

sudo apt-get update && sudo apt-get upgrade

&&演算子で重要なのは、演算子の後ろにあるコマンドは、前のコマンドが成功した場合にのみ実行されるという点です。

上記の例では、sudo apt-get updateが成功した場合にのみsudo apt-get upgradeが実行されます。パッケージリストの更新中にネットワーク障害などのエラーが発生した場合は、sudo apt-get upgradeはスキップされます。

「sudo apt-get dist-upgrade」と「sudo apt full-upgrade」とは?安全に使える?

Stack Overflowのスレッドによると、これらのコマンドは内部的には同じ動作をします。古いパッケージをアップグレードしつつ、必要に応じて一部のパッケージをインテリジェントに削除します。

本質的には、sudo apt-get upgradesudo apt autoremoveを組み合わせたようなコマンドです。

これらのコマンドの実行は、ほとんどの場合において安全であるはずです。

しかし多くの人々(筆者自身も含めて)は、代わりにsudo apt-get updatesudo apt-get upgradeを使うことを推奨しています。こちらの方が変更内容を確認する機会が多く、upgradeは決してパッケージを削除しないため、より破壊性が低いからです。

./thanks_for_reading.sh

このsudo apt-get updatesudo apt-get upgradeに関する解説が役に立ったなら、ぜひ友人にもシェアして、より多くの人が恩恵を受けられるようにしてください。

また、Twitter(X)でのご意見・ご感想もお待ちしています。

  1. ゲーミングルーターと標準ルーターの違いは?本当に買う価値があるのか徹底解説

    毎年、「エクストリームゲーマー向け」を謳う高価格帯の新型ルーターが数多く登場しています。しかし、華やかな広告の裏側で、それらは実際に何を意味するのでしょうか?このガイドでは、パフォーマンス・機能・デザインにおける本当の違いを解き明かし、その価格に見合う価値があるのかどうかを検証します。 「極限のハイスペック」を謳うマーケティングの実態 近年の多くの企業と同様、ルーターメーカーも「ゲーマー市場」が、実際の性能向上以上の追加料金を喜んで支払うことを学びました。その結果、Netgear、Linksys、D-Linkといった大手メーカーはこぞってゲーミング特化型ルーターを発売し、標準的なルーターよ

  2. プロキシとVPNの違いとは?仕組み・安全性・速度を徹底比較

    VPNとプロキシサーバーのセキュリティ面における根本的な違いは、「データを暗号化できるかどうか」にあります。 企業へのサイバー攻撃が50%増加し、アメリカの家庭の73%がセキュリティとプライバシーに不安を抱えている昨今、デジタル上のトラブルを防ぐためにプロキシやVPNを活用する人が多いのも自然なことです。この2つの技術は似たような役割を果たしますが、それぞれの違いを理解することで、自分のブラウジングニーズに最も適した選択ができるようになります。本記事では、プロキシとVPNの違いについて詳しく解説し、それぞれがどのように動作するのかをわかりやすくご紹介します。 インターネットのプライバシーを強化