本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「apt」コマンドと「apt-mark」コマンドを使ってパッケージを一括更新する方法を紹介します。
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「apt」コマンドと「apt-mark」コマンドを使ってパッケージを一括更新する方法を紹介します。
aptコマンドは、Debian系のディストリビューションに使われているパッケージ管理用のコマンドです(基礎編:第139回、応用編:140回)。apt-markコマンドは、パッケージ更新の際の動作を変更します。
なお、Red Hat系のディストリビューシュン(CentOSなど)の場合は「yum」コマンド(第42回〜45回、50回)、または「rpm」コマンド(47回〜49回)を使用します。
apt [オプション] コマンド [パッケージ名やコマンド用オプションなど]
apt-mark [オプション] 動作指定 [パッケージ名……]
※[ ]は省略可能な引数を示しています。
短いオプション | 長いオプション | 意味 |
---|---|---|
-c=設定ファイル | --config-file=設定ファイル | 使用する設定ファイルを指定する(デフォルトの設定ファイルの後に読み込まれる) |
-o=設定オプション | --option=設定オプション | 設定オプションを指定する(例:-o=Acquire::CDROM::Device="/dev/cdrom" -oの後の「=」は空白でも可。「-o」は複数使用可能) |
コマンド | 意味 |
---|---|
list | パッケージ一覧を表示する |
search キーワード | パッケージの説明文からキーワードを検索して該当するパッケージを表示する |
show | 指定したパッケージの情報を表示する(第139回参照) |
install | 指定したパッケージをインストールする(第139回) |
remove | 指定したパッケージを削除する |
コマンド | 意味 |
---|---|
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)
「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の例では、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
(パッケージリストを再取得する)
西村 めぐみ(にしむら めぐみ)
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.