【 apt 】コマンド/【 apt-mark 】コマンド――パッケージを一括更新するLinux基本コマンドTips(141)

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「apt」コマンドと「apt-mark」コマンドを使ってパッケージを一括更新する方法を紹介します。

» 2017年09月07日 05時00分 公開
[西村めぐみ@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「apt」コマンドと「apt-mark」コマンドを使ってパッケージを一括更新する方法を紹介します。

aptコマンド/apt-markコマンドとは?

 aptコマンドは、Debian系のディストリビューションに使われているパッケージ管理用のコマンドです(基礎編:第139回応用編:140回)。apt-markコマンドは、パッケージ更新の際の動作を変更します。

 なお、Red Hat系のディストリビューシュン(CentOSなど)の場合は「yum」コマンド(第42回45回50回)、または「rpm」コマンド(47回49回)を使用します。



aptコマンドの書式

apt [オプション] コマンド [パッケージ名やコマンド用オプションなど]

apt-markコマンドの書式

apt-mark [オプション] 動作指定 [パッケージ名……]

※[ ]は省略可能な引数を示しています。


aptの主なオプション(共通オプション)

短いオプション 長いオプション 意味
-c=設定ファイル --config-file=設定ファイル 使用する設定ファイルを指定する(デフォルトの設定ファイルの後に読み込まれる)
-o=設定オプション --option=設定オプション 設定オプションを指定する(例:-o=Acquire::CDROM::Device="/dev/cdrom" -oの後の「=」は空白でも可。「-o」は複数使用可能)

aptの主なコマンド(パッケージの検索と操作)

コマンド 意味
list パッケージ一覧を表示する
search キーワード パッケージの説明文からキーワードを検索して該当するパッケージを表示する
show 指定したパッケージの情報を表示する(第139回参照
install 指定したパッケージをインストールする(第139回)
remove 指定したパッケージを削除する

aptの主なコマンド(設定とシステムメンテナンス)

コマンド 意味
edit-sources sources.listファイル(パッケージのダウンロード元などを指定するファイル)を編集する
update パッケージのインデックスファイルを更新する
upgrade インストール済のパッケージをまとめて更新する
full-upgrade upgradeと同様だが、更新に伴って使用できなくなるパッケージを削除するなどの調整も行う


インストール済のパッケージをまとめて更新する

 パッケージを更新する場合は「apt upgrade パッケージ」のように指定します(第139回)。

 このとき「apt upgrade」のように対象のパッケージを指定せずに実行すると、システムにインストールされているパッケージを全て更新できます。root権限が必要なので「sudo」コマンドを使って「sudo apt upgrade」のように実行するとよいでしょう。

 パッケージの更新に伴い、同じような役割を備えたパッケージが衝突するといった理由で、使用できなくなることがあります。この場合は既存のパッケージを優先します。

 「apt upgrade」ではなく「apt full-upgrade」を使って更新すると、必要に応じパッケージを削除した上で全体の更新を行います ※1。

※1 apt-getコマンドとの互換性のため、「apt dist-upgrade」でも同じ処理内容となる(「apt full-upgrade」は「apt-get dist-upgrade」に相当)。なお、Ubuntuの最新バージョンに更新する際は「apt」ではなく「do-release-upgrade」コマンドを使用する。



 「sudo apt upgrade」を実行すると、更新対象のパッケージ一覧とともに確認メッセージが表示されるので、Enterで更新を実行します(画面1)。中断したい場合は「n」を入力してEnterを押してください ※2。

※2 確認メッセージで「Y/n」のように表示されている場合は「y」(yes)が、「y/N」のように表示されている場合は「n」(no)がデフォルトの選択肢となる。apt upgradeの場合は「Y/n」。このためEnterのみで「y」を選択した扱いになる。



 なお、「apt list --upgradable」で更新対象のパッケージを確認することもできます(第140回)。

コマンド実行例

apt upgrade

(root権限を用いて全パッケージを更新)(画面1画面2


画面1 画面1 全パッケージの更新を試みたところ
画面2 画面2 全パッケージの更新が完了した


更新を保留するパッケージの指定(apt-markコマンド)

 「apt upgrade パッケージ」で更新するパッケージを指定した場合、関連するライブラリなども一緒に更新されることがあります。このライブラリを使っている他のパッケージも、更新されてしまいます。

 もしも更新したくないパッケージがある場合は、そのパッケージを事前に“ホールド(hold:保留)”しておきます。

 パッケージをホールドするには、「apt-mark」コマンドを使い、「apt-mark hold パッケージ」のように指定します。「apt-mark hold パッケージ1 パッケージ2 パッケージ3」のように複数のパッケージを指定できます。

 ホールドされたパッケージを確認するには、「apt-mark showhold」とします。

 ホールドを解除(unhold)する場合は「apt-mark unhold パッケージ名」のように指定します。

 パッケージのホールドと解除にはroot権限が必要です。

コマンド実行例

sudo apt-mark hold パッケージ名

(指定したパッケージを更新の対象外にする)(画面3

sudo apt-mark unhold パッケージ名

(指定したパッケージの更新の対象にする)

apt-mark showhold

(ホールドされているパッケージを一覧表示する)(画面3


画面3 画面3 2つのパッケージをホールドして残りの全パッケージを更新したところ

 ホールドが設定されていても、パッケージ名を明示すれば更新が可能です。画面3の例では、firefoxがホールド設定された状態でも、「sudo apt upgrade firefox」で更新できます。



パッケージの入手先を追加する

 パッケージの入手先を保存しているファイルは「/etc/apt/sources.list」です。このファイルは、エディタで直接編集するのではなく、「apt edit-sources」を使って編集するとよいでしょう。編集後の書式を自動的にチェックできます。

 「/etc/apt/sources.list」を変更したら、「apt update」でパッケージリストを再取得してください。

コマンド実行例

sudo apt edit-sources

(パッケージの入手先を編集する)(画面4

sudo apt update

(パッケージリストを再取得する)


画面4 画面4 パッケージの入手先リストの編集しようとしているところ
画面5 画面5 編集ミスが見つかったところ


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。