パッケージのアップデート方法は?
2017年7月、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 をセットしていれば、インストール済みのパッケージファイルが削除されるのを防げます。
apt-cache search
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」に説明があります。
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
ピンバック: Raspberry Pi ファームウェアのアップデート方法 | ある計算機屋さんの手帳