Raspberry Pi パッケージのアップデート方法

Raspberry Pi

Raspberry Pi

パッケージのアップデート方法は?

2017年7月、Raspberry Piのパッケージアップデート方法を調べました。

raspberry Pi

raspberry Pi

今まで、決まり文句のように次のように入力していました。

sudo apt-get update
sudo apt-get upgrade

ネットで調べると「dist-upgrade」という記述があり、「upgrade」と「dist-upgrade」の違いが気になります。

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

パッケージ操作コマンド

パッケージ操作コマンド関係について調べました。

APT パッケージ操作ユーティリティで次のようなコマンドを指示できます。これらのコマンドは、管理者権限が必要なので sudo を付けて実行します。

コマンド 説明
apt-get update パッケージリストの更新
apt-get upgrade インストール済みパッケージの更新
apt-get dist-upgrade パッケージを最新バージョンにアップグレード(インストール・削除)
apt-get install [package] 指定パッケージのインストール、更新
apt-get remove [package] 指定パッケージの削除
apt-get purge [package] 指定パッケージの削除(設定ファイルを含む)
apt-get autoremove 不要なパッケージの削除
apt-get clean アーカイブファイルの削除
apt-get autoclean 不要なパッケージのアーカイブファイルの削除
apt-cache search [package] パッケージの検索
dpkg -l [package] インストールされてるパッケージの一覧

manコマンドで、apt-get、apt-cache のマニュアルを参照します。

apt-get update

updateは、取得元からパッケージインデックスファイルの再同期を行うのに使用します。
利用可能なパッケージのインデックスは、/etc/apt/sources.list に記述した場所から取得します。例えば Debian アーカイブを利用する際、このコマンドが Packages.gz ファイルを検索することで、新規または更新されたパッケージの情報が利用可能となります。
update は、upgrade や dist-upgrade を行う前に常に実行してください。前もってパッケージファイルのサイズを知ることができないため、全体の進捗メータは正しく表示されません。

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) をご覧ください。

apt-get install

install の後には、インストールや更新したいパッケージを 1 つ以上指定します。
指定するパッケージは、完全なファイル名ではなくパッケージ名です (例えば Debian システムでは、apt-utils_1.0.9.8.4_amd64.deb ではなく apt-utils を引数として与えます)。インストールするよう指定したすべてのパッケージに対し、依存パッケージも含めて取得・インストールを行います。/etc/apt/sources.list ファイルを、要求するパッケージの場所を特定するのに使用します。

apt-get remove

remove は、パッケージが削除されることを除き、install と同様です。削除されたパッケージの設定ファイルは、システムに残ったままになることに注意してください。

apt-get purge

パッケージが削除かつ完全削除 (すべての設定ファイルも削除) されるのを除き、purge は remove と同じです。

apt-get autoremove

autoremove は、他のパッケージの依存関係を満たすために自動的にインストールされ、もう必要なくなったパッケージを削除するのに使用します。

apt-get clean

clean は、取得したパッケージのローカルリポジトリを掃除します。/var/cache/apt/archives/ と /var/cache/apt/archives/partial/ からロックファイル以外すべて削除します。

apt-get autoclean

clean と同様に、autoclean は取得したパッケージのローカルリポジトリを掃除します。
違いは、もうダウンロードされることがないパッケージファイルや、ほとんど不要なパッケージファイルのみを削除することです。このため、長い期間、キャッシュが管理できずに肥大化することなく、維持することができます。設定オプション APT::Clean-Installed にoff をセットしていれば、インストール済みのパッケージファイルが削除されるのを防げます。

search は、与えられた POSIX の正規表現 (regex(7) を参照) により、すべての利用可能なパッケージに対して全文検索を行います。
パッケージ名と説明に対して正規表現で検索を行い、パッケージ名 (仮想パッケージ名を含む) と短い説明文を表示します。
空白で区切った引数で、複数の検索パターンの and をとることができます。

dpkg query actions

dpkg は、Debian パッケージのインストール、ビルド、削除、管理を行うためのツールである。
-l | –list package-name-pattern …
指定したパターンにマッチする名前のパッケージの一覧を表示する。
-s | –status package-name …
指定したパッケージの状態を報告する。
-L | –listfiles package-name …
package-name によってシステムにインストールされたファイルの一覧を表示する。
-S | –search filename-search-pattern …
指定したファイルがどのパッケージからインストールされたか検索する。

パッケージアップデート

マニュアルを参照して、コマンドの意味を理解しました。

①.  パッケージリストを更新します。

sudo apt-get update

②.  パッケージ構成を変えない範囲でアップグレードします。

sudo apt-get upgrade

③.  パッケージを最新バージョンにアップグレードします。パッケージ構成の変更に追随して、パッケージの更新・削除を行います。

sudo apt-get dist-upgrade

ということで、update + upgradeか、update + dist-upgrade を実施すれば良いのです。

公式サイトの説明

公式サイトの「DOCUMENTATION > RASPBIAN > UPDATING」に説明があります。

Raspbian Update

Raspbian Update

sudo apt-get update
sudo apt-get dist-upgrade

1. システムのパッケージリストを更新します。
2. インストールされたすべてのパッケージを最新バージョンにアップグレードします。

UPDATING THE KERNEL AND FIRMWARE

The kernel and firmware are installed as a Debian package, and so will also get updates when using the procedure above. These packages are updated infrequently and after extensive testing.

【要約】
カーネルとファームウェアはDebianパッケージとしてインストールされているので、上記の手順を使用してもアップデートされます。

この方法で、各種パッケージとカーネルとファームウェアを最新版(安定版)として維持できます。

 


「apt-get dist-upgrade」でカーネルをアップデートするか確認してみました。

「2017-06-21-raspbian-jessie.img」をインストールした状態では、バージョンは4.9.28-v7+ #998です。

sudo uname -a
Linux pi3 4.9.28-v7+ #998 SMP Mon May 15 16:55:39 BST 2017 armv7l GNU/Linux

パッケージの更新をします。

sudo apt-get update
sudo apt-get dist-upgrade

アップデート終了後、リブートします。

sudo shutdown -r now

バージョンを確認すると、4.9.35-v7+ #1014にアップデートされました。

sudo uname -a
Linux pi3 4.9.35-v7+ #1014 SMP Fri Jun 30 14:47:43 BST 2017 armv7l GNU/Linux