このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Linuxコマンドの基本:パッケージ管理(Ubuntu):aptコマンド

パッケージ管理(Ubuntu):aptコマンド

 ここでは、UbuntuをはじめとするDebian系ディストリビューションで採用されているAPT(Advanced Packaging Tool)系のコマンドを中心に、その概要と基本的な使い方を紹介します。APTはdpkgコマンドを基盤としており、apt-getapt-cacheなどのコマンドが提供する高機能な仕組みによって、ソフトウェアのインストール・アンインストール・更新・検索などを簡潔に行えるようになっています。


APTコマンドの位置づけと利点

deb形式のパッケージ管理

 UbuntuなどのDebian系Linuxディストリビューションでは、ソフトウェアはdeb形式のパッケージファイルとして提供されます。もともとはdpkgコマンドを用いてこれらのパッケージを直接インストールすることが可能でしたが、dpkg自体は依存関係解決やリポジトリ問い合わせの機能を持たず、実務で使うにはやや不便でした。

APTによる拡張と簡略化

 そこで登場するのがAPTです。APTはdpkgコマンドを基盤として、以下の点でパッケージ管理を大幅に簡略化・高度化しました。

  • リポジトリとの連携:インターネット上のパッケージ配布元(リポジトリ)から自動的にパッケージ情報やパッケージ本体を取得
  • 依存関係の自動解決:インストール時や削除時に必要な別パッケージを自動的に導入・除去
  • 機能別コマンドの提供apt-getによるインストール・アップデート、apt-cacheによる検索・情報表示など、用途に応じたコマンドが利用可能

 このような機能によって、apt-getapt-cacheコマンドはUbuntu環境での日常的なソフトウェア管理において標準的なツールとなっています。

apt-getとapt-cache、そしてaptitude

 APT系コマンドには、インストール・アンインストールに用いるapt-get、情報表示や検索に用いるapt-cacheなど、用途別にコマンドが分かれています。この分割を煩雑に感じるユーザもいるため、これらの機能を統合したaptitudeコマンドも存在します。

 ここでは、基本かつ広く利用されているapt-getおよびapt-cacheコマンドに絞って解説します。dpkgaptitudeについては必要に応じてコマンドマニュアルを参照してください。


APT系コマンドの基本的な書式

APT系コマンドは、以下のような書式で実行します。

【書式】
apt-get [オプション] [コマンド] [パッケージ名…]
apt-cache [オプション] [コマンド] [パッケージ名…]

 yumコマンドと同様、APT系コマンドは多機能であり、[コマンド]部分に「install」や「remove」など、実行する機能を指定します。


パッケージのインストール

 apt-getコマンドを用いてパッケージをインストールするには、installコマンドを指定し、続けてパッケージ名を入力します。

【書式】パッケージのインストール
sudo apt-get install <パッケージ名>

  • 解説
    sudoを用いてroot権限で実行します。コマンド実行前に本当にインストールしてよいかを慎重に確認してください。
  • aptitudeパッケージをインストールする場合
$ sudo apt-get install aptitude

この際、APTは依存関係を自動解決し、必要なパッケージをまとめて導入してくれます。


パッケージ間の依存関係自動解決

 多くのパッケージは「先にインストールすべき別パッケージ」を必要とします。dpkgのみでは手動で依存パッケージを入れる必要がありましたが、APTはapt-get install時に自動で不足パッケージも取得・導入します。

例:aptitudeインストール時の依存性解決

$ sudo apt-get install aptitude
...(省略)...
以下の追加パッケージがインストールされます:
  aptitude-common ...(依存パッケージ一覧)...
続行しますか? [Y/n]

 APTは必要なパッケージをすべて提示し、ユーザがYと回答すれば自動的にまとめてインストールします。


基本的なパッケージ削除コマンド:apt-get remove

 UbuntuなどのLinuxディストリビューションを運用していると、かつてインストールしたものの不要になったパッケージが出てくることがあります。不要なパッケージを放置すると、ディスク容量を無駄に消費したり、システムの管理性を損なったりします。こうした場合、apt-getコマンドによるパッケージの削除(アンインストール)を行うことでシステムをクリーンな状態に保てます。

apt-get removeコマンドは、指定したパッケージをシステムから削除します。ただし、設定ファイルなどは残り、バイナリや関連ライブラリのみが削除されます。パッケージ削除時には、apt-getが依存関係を自動的に処理するため、不要になった関連パッケージをまとめて取り除くことが可能です。

コマンド書式と使用例

コマンド役割・詳細使用例
sudo apt-get remove <パッケージ名>指定したパッケージを削除(設定ファイルは残る)$ sudo apt-get remove aptitude-common

解説

  • sudoを付けるのはroot権限が必要なためです。
  • 実行すると「続行しますか? [Y/n]」と聞かれ、yを押すと削除が実行されます。

依存関係の自動処理

 パッケージには「先にインストールしてある別のパッケージが必要」という依存関係が存在する場合が多いです。apt-get removeコマンドは、これら依存パッケージも自動的に処理します。つまり、あるパッケージを削除する際、そのパッケージに依存する別のパッケージも必要に応じて一緒に削除されます。

依存関係解決の例

user01@ubuntu:~$ sudo apt-get remove aptitude-common
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了        
状態情報を読み取っています... 完了        
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libcwidget4 libdpkg-perl libfile-fcntllock-perl libxapian30
これを削除するには 'sudo apt autoremove' を利用してください。
以下のパッケージは「削除」されます:
  aptitude aptitude-common
アップグレード: 0 個、新規インストール: 0 個、削除: 2 個、保留: 42 個。
この操作後に 13.9 MB のディスク容量が解放されます。
続行しますか? [Y/n] y
(データベースを読み込んでいます ... 現在 206675 個のファイルとディレクトリがインストールされています。)
aptitude (0.8.13-5ubuntu5) を削除しています ...
aptitude-common (0.8.13-5ubuntu5) を削除しています ...
man-db (2.12.0-4build2) のトリガを処理しています ...

確認プロンプトのスキップと自動化

 削除時には「続行しますか? [Y/n]」と確認されますが、-yオプションを付ければすべてyで回答したとみなし、プロンプトなしで処理が進みます。これはシェルスクリプトでの自動化に便利です。

自動承認の例

$ sudo apt-get -y remove aptitude-common

これで対話的な確認なしにパッケージ削除が実行されます。


設定ファイルも含めた完全な削除:apt-get purge

 removeコマンドは実行バイナリやライブラリを削除する一方、設定ファイルは残します。すべてのファイルを完全に削除したい場合は、removeではなくpurgeコマンドを使います。

完全な削除の例

 このコマンドで実行すれば、設定ファイルや関連データまで含めて完全にシステムから取り除くことができます。

$ sudo apt-get purge <パッケージ名>

まとめ

  • UbuntuなどのDebian系LinuxではAPT系コマンド(apt-get, apt-cacheなど)が標準的なパッケージ管理手段。
  • apt-get installapt-get removeapt-cache searchなどを使って、インストール・削除・検索を容易に行える。
  • dpkgコマンドに比べ、APT系コマンドは依存関係解決やリポジトリ参照が自動化され、管理が非常にシンプル。

 APT系コマンドの基本を理解することで、Ubuntu環境でのパッケージ管理が効率的かつスムーズになり、システム運用や環境構築に大いに役立つでしょう。