Linux / コマンド / apk - Alpine Linux パッケージのインストール・削除とリポジトリの更新
apkはAlpine Linuxのパッケージ管理コマンドです。リポジトリのパッケージ検索・追加・削除およびアップグレードに使われ、Alpineのインストール方法によって変更点の保持手順が異なる場合があります。
apkはAlpine Package Keeperの略です。/etc/apk/worldには利用者が要求する最上位のパッケージ制約が記録され、依存関係として入るすべてのパッケージの一覧ではありません。addは制約を追加し、delは外して必要な変更を反映します。ディスクレス構成では、変更の保存・次回起動時の復元方法も確認します。
基本的な文法
apk [グローバルオプション] コマンド [パッケージ ...]
インストールされている実装とオプションは、配布版によって異なる場合があります。man apkで現在のシステムの説明を確認してください。
使用例
パッケージ検索
リポジトリで名前が一致する候補を探します。
apk search nginx
パッケージのインストール
以下のsudoは、sudoが導入・設定済みの一般ユーザー向けです。Alpineにsudoがあるとは限らず、正規の管理用rootシェルならsudoを外して実行します。先にapk add --simulate nginxで予定を確認し、必要な依存関係も含めて追加内容を判断してください。
sudo apk add nginx
リポジトリ情報の更新とアップグレード
updateで情報を取得し、成功を確認してからapk upgrade --simulateで予定を調べます。その後に実際のupgradeを実行します。2行を無条件にまとめて実行しないでください。apkは既定で非対話的に動作するため、実行後に必ず承認を求められるとは考えないでください。
sudo apk update
sudo apk upgrade
インストールの有無とリポジトリ更新の区別
apk info -eは、指定したパッケージがインストールされているかどうかを名前で確認します。Alpineの基本環境でbusyboxがインストールされている場合、次のように表示されます。
apk info -e busybox
例の出力:
busybox
apk updateはリポジトリのインデックスを更新するだけで、インストールされたパッケージのバージョンは変更しません。インストール済みパッケージを実際にアップグレードするにはapk upgradeが必要です。disklessモードや使い捨てコンテナでは、パッケージの変更が再起動・再生成後にも残るかどうかを運用方法に応じて確認してください。
主なオプションと形式
| オプション・形式 | 説明 |
|---|---|
search / info |
リポジトリのパッケージを検索したり、詳細情報を表示します。 |
add / del |
希望するパッケージ制約を追加または削除します。 |
update |
リポジトリインデックスを更新します。 |
upgrade |
インストール済みパッケージを可能な限りバージョンアップします。 |
--no-cache |
ローカルキャッシュを使用しない指定です。対応する指定は手元のヘルプで確認します。 |
使用する際の注意点
apk updateは情報取得だけです。apk delでは、指定したもの以外に不要になった依存パッケージも削除され得るため、変更予定を先に確認します。コンテナを作り直しても再現するにはイメージのビルド定義へ反映し、ディスクレス構成ではその構成に応じた保存手順に従います。
よくある質問
apk addとapk updateは何が違うのですか?
addは希望するパッケージをインストールし、updateはリポジトリのインデックスを更新します。インストール済みパッケージのバージョン更新はupgradeです。
公式ドキュメント
オプションの正確な動作や実装ごとの差異は、apk関連の公式ドキュメントで確認できます。




