見出し画像

sudo apt-get update と sudo apt-get upgrade の違いは何ですか?

sudo apt-get update と sudo 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」は、DebianやDebianベースのLinuxディストリビューションでパッケージを管理するための目的が異なる2つの異なるコマンドです。

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キーを押します。

アップデートがある場合、次のような出力が表示されます:

yuta@renshu:~ $ 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 http://archive.raspberrypi.org/debian bullseye InRelease [23.7 kB]       
Get:4 http://packages.azlux.fr/debian buster InRelease [3,989 B]               
Get:5 http://archive.raspberrypi.org/debian bullseye/main armhf Packages [282 kB]
Get:6 http://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コマンドを実行してください。

yuta@renshu:~ $ 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]

しかし、ディストリビューションのソフトウェアリポジトリに新しいバージョンのパッケージや依存関係がない場合、次のような出力が表示されます:

yuta@renshu:~ $ 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 http://packages.azlux.fr/debian buster InRelease                         
Hit:4 http://archive.raspberrypi.org/debian bullseye InRelease
Fetched 26.7 kB in 3s (8,789 B/s)
Reading package lists... Done

これはシステムに古いソフトウェアが存在しないことを意味するわけではありません。単に、パッケージリストの最新バージョンを既に取得していることを示しています。sudo apt-get updateを複数回実行した可能性があります。

必要に応じて、いつでもapt list --upgradableコマンドを再度実行して、アップグレード可能なものがあるかどうかを確認できます。

または、より新しいコマンドであるsudo apt updateコマンドを使用することもできます。このコマンドでは、常にアップグレード可能なパッケージの数や、すべてが最新であることを示すメッセージが表示されます。

aptとapt-getの違いについての詳細は、以下の「apt-getとaptの違いは何ですか?」というセクションを参照してください。

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

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

その後、次のような出力が表示されます:

yuta@renshu:~ $ 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] 

アップグレードを続行する場合は、y、Y、またはyesを入力します。アップグレードコマンドを終了する場合は、n、N、またはnoを入力します。

終了することを選択した場合、次のような出力が表示されます:

yuta@renshu:~ $ 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.

アップグレードを続行する場合、次のような長い出力が表示されます:

yuta@renshu:~ $ 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 http://archive.raspberrypi.org/debian bullseye/main armhf libcamera0 armhf 0~git20220426+18e68a9b-1 [548 kB]
Get:2 http://archive.raspberrypi.org/debian bullseye/main armhf raspi-config all 20220425 [30.3 kB]
Get:3 http://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コマンドについて覚えておくべき重要な点は、削除せずにできる範囲でのみアップグレードするということです。

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

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

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: このオプションを使用すると、実際にパッケージをアップグレードする前にシミュレーションを行うことができます。つまり、どのパッケージがアップグレードされるかや、どのような変更が行われるかを確認することができます。以下のようにコマンドを入力します。
sudo apt-get upgrade --dry-run

yuta@renshu:~ $ 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])

これにより、アップグレードのシミュレーション結果が表示されますが、実際のアップグレードは行われません。

--yes: このオプションを使用すると、アップグレードの確認プロンプトが表示されずに自動的に処理を進めることができます。以下のようにコマンドを入力します。
sudo apt-get upgrade --yes

yuta@renshu:~ $ 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 http://archive.raspberrypi.org/debian bullseye/main armhf libcamera0 armhf 0~git20220426+18e68a9b-1 [548 kB]
Get:2 http://archive.raspberrypi.org/debian bullseye/main armhf raspi-config all 20220425 [30.3 kB]
Get:3 http://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]」のプロンプトが省略され、すべてのパッケージがアップグレードされます。

これらのオプションは、sudo apt-get upgradeコマンドの中でも特に便利なものです。ただし、--dry-runオプションを使用しても実際のアップグレードは行われないことに注意してください。また、--yesオプションはアップグレードを自動化する際に便利ですが、注意して使用することが重要です。

よくある質問(FAQ)

sudoとapt-getとは何ですか?

sudo apt-get updateとsudo apt-get upgradeについて重要なことは、両方のコマンドがsudo、apt-get、updateまたはupgradeの3つの部分で構成されているということです。

sudoは「superuser do」を表し、ルートユーザーや管理者権限でプログラムを実行することができます。

たとえば、システムの再起動にはスーパーユーザー/ルートレベルの特権が必要です。そのため、ターミナルで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-getは、長い間使用されてきた古典的なパッケージ管理ツールです。コマンドの使用方法やオプションに慣れているユーザーにとっては馴染み深いものです。apt-getは、パッケージのインストール、アップグレード、削除、依存関係の解決などの機能を提供します。また、より詳細なオプションや設定のカスタマイズが可能です。

一方、aptはapt-getの後継として導入された新しいパッケージ管理ツールです。aptはより直感的で使いやすいインターフェースを提供し、ユーザーエクスペリエンスの向上を目指しています。aptはapt-getとほぼ同じコマンド構文を使用しますが、いくつかの違いがあります。たとえば、aptは進行状況バーを表示し、進行中の操作をより視覚的に表示します。また、依存関係の自動解決やセキュリティアップデートの取り扱いが改善されています。

aptはapt-getの機能を継承しており、基本的には互換性がありますが、aptが提供する利便性や洗練された機能を活用することもできます。ただし、特定の状況や環境によってはapt-getの方が適している場合もあります。

総括すると、aptはapt-getの進化版であり、より使いやすいパッケージ管理ツールです。ユーザーにとってはaptを使うことが推奨されていますが、apt-getの方がより高度な操作やカスタマイズが必要な場合に依然として有用です。

sudo apt-get updateとsudo apt-get upgradeは安全に使用できますか?

はい、sudo apt-get updateとsudo apt-get upgradeコマンドは一般的に安全に使用できます。これらのコマンドは、Linuxの管理者やユーザーがDebianやDebianベースのLinuxディストリビューションでパッケージの更新やアップグレードを行うためによく使用されます。

ただし、パッケージのアップグレードは互換性の問題を引き起こす可能性があり、システムの安定性に影響を与えることがあるため、注意が必要です。特に、本番システムや重要な環境では、これらのコマンドを使用する際には注意が必要です。

リスクを最小限に抑えるためには、重要なデータや設定を定期的にバックアップすることが推奨されます。また、アップグレードされるパッケージのリストを確認し、問題を引き起こす可能性のある重要なパッケージがないかを確認することも推奨されます。

アップグレードの影響が不明な場合やシステムの安定性に懸念がある場合は、経験豊富な管理者の指導を受けるか、ディストリビューション固有の関連ドキュメントやリソースを参照することを検討してください。

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 dist-upgradeとsudo apt full-upgradeは何ですか?また、これらのコマンドは安全に使用できますか?

このStack Overflowのスレッドによると、sudo apt-get dist-upgradeとsudo apt full-upgradeコマンドは基本的に同じことを行います。古くなったパッケージをアップグレードし、必要に応じてパッケージを適切に削除します。

これらのコマンドはsudo apt-get upgradeとsudo apt autoremoveコマンドの組み合わせのようなものです。

これらのコマンドを使用することはほとんどの場合安全です。

ただし、多くの人々(私も含めて)は、sudo apt-get updateとsudo apt-get upgradeを使用することを推奨しています。これにより、今後の変更をよりよく確認する機会がありますし、upgradeコマンドはパッケージを削除しないため、破壊的な影響が少ないです。

sudo apt-get dist-upgradeコマンドとsudo apt full-upgradeコマンドは、システム全体のアップグレードを行うために使用されます。新しいパッケージのインストール、廃止されたパッケージの削除、パッケージの依存関係の処理を含みます。

安全性に関しては、sudo apt-get dist-upgradeやsudo apt full-upgradeを使用することは一般的に安全ですが、通常のアップグレードよりもリスクが高くなります。これらのコマンドはパッケージのインストールや削除、重要なコンポーネントのアップグレードを行う可能性があるため、互換性の問題やシステムの安定性に影響を及ぼす可能性があります。

特に本番システムや重要な環境でこれらのコマンドを使用する際には注意が必要です。ディストリビューションアップグレードを行う前には重要なデータや設定のバックアップを行うことをおすすめします。さらに、アップグレードや削除されるパッケージのリストを注意深く確認することで潜在的な問題を特定することができます。

もしも影響やシステムの安定性に関して不確かな点がある場合は、ドキュメンテーションの参照や経験豊富な管理者のアドバイスを求めるか、非本番環境でのアップグレードをテストすることがおすすめです。

2023/06/22 IT情報&技術アウトプット
株式会社CRE-CO

この記事が気に入ったらサポートをしてみませんか?