Ubuntuを使ううえでパッケージ管理は欠かせません。とくにUbuntu Serverのユーザーや真の初心者とは言えないユーザーであれば,ソフトウェアセンターだけでなく,コマンドラインからパッケージをインストールしたことも一度はあることでしょう。今回はUbuntu 14.04 LTSで使えるようになった,(入力速度的な意味で)より高速なaptコマンドについて紹介します。
apt 1.0のリリース!
「Apt(Advanced Package Tool)」は,Ubuntuを含むDebianから派生したLinuxディストリビューションやいくつかの非派生系ディストリビューションで採用されているパッケージ管理システムです。このパッケージ管理システムとフリーソフトウェアという文化のおかげで,Ubuntuでは多種多様なソフトウェアをとても簡単にシステムにインストールできます。
そんなAptですが,2014年4月1日に記念すべき1.0をリリースしました。最初にその名前になってから足掛け16年,Aptはとても息の長い,そして常に現役で活躍している重要なソフトウェアとなりました。読者の皆さんは16年前の1998年は何をやっていましたでしょうか? 既にLinuxに関わっていましたか? Ubuntu……はまだ誕生していませんが2.0がリリースされるより前のDebianに関わっていた方はいらっしゃるかもしれません(注1)。そもそも生まれていなかったという読者もいるでしょう。
Deityチーム(注2)からのリリースアナウンスは,「16歳」という現実の世界でもバイナリの世界でも多感な年頃・数字であることを踏まえたとてもユーモアにあふれたアナウンスになっていますので,ぜひ一読することをお勧めします。
- 注1)
- この頃のdebian-devel MLのアーカイブを見ると,Mark Shuttleworthの名前が見つかります。
- 注2)
- 「Apt」という名前になる前は,Deityと呼ばれていました。
aptコマンドの基本
さてこのApt 1.0には,新規に「aptコマンド」が標準でインストールされるようになりました。これまで「aptコマンド」と言えば,apt-getやapt-cacheと言った,パッケージ管理を行うコマンドの総称でしたが,今回追加されたコマンドは正真正銘「apt」という名前のコマンドです。
Ubuntu 14.04 LTSにはApt 1.0がインストールされていますので,「apt(TAB補完)」と普段から入力している人は既に気づいているかもしれません。
$ apt(ここでTabキーを2回入力) apt apt-cdrom apt-file apt-key aptd apturl-gtk apt-add-repository apt-config apt-ftparchive apt-mark aptdcon apt-cache apt-extracttemplates apt-get apt-sortpkgs apturl
この「aptコマンド」,何をするものかと言いますと,単純にこれまでapt-get/apt-cacheと用途に合わせて分かれていたコマンドを,1つにするためのものです。
$ apt help apt 1.0.1ubuntu2 for amd64 コンパイル日時: Apr 10 2014 13:03:39 使用法: apt [オプション] コマンド apt 用コマンドラインインターフェイス 基本コマンド: list - パッケージ名を基にパッケージの一覧を表示 search - パッケージの説明を検索 show - パッケージの詳細を表示 update - 利用可能パッケージの一覧を更新 install - パッケージをインストール remove - パッケージを削除 upgrade - パッケージをインストール/更新してシステムをアップグレード full-upgrade - パッケージを削除/インストール/更新してシステムをアップグレード edit-sources - ソース情報ファイルを編集
表示される内容は,apt-get/apt-cacheとそれほど変わるわけではありません。ただaptitudeほどではないものの,より良い見た目や,便利な機能が追加されています。
パッケージの情報を探索する
パッケージの情報を探索するときはこれまで,apt-cacheを使っていました。
listコマンドは,“dpkg --list”と“apt-cache search --names-only”を組み合わせたようなコマンドです。前者がインストール済みのパッケージをリストアップし,後者がアーカイブにあるすべてのパッケージを対象とするのに対して,listコマンドはアーカイブにあるすべてのパッケージを名前で検索しつつ,インストール済みかどうかを表示します。
$ apt list ubuntu-desktop* 一覧表示... 完了 ubuntu-desktop/trusty,now 1.325 amd64 [インストール済み] ubuntu-desktop-mir/trusty 0.0.2+14.04.20140411-0ubuntu1 all
インストールされているものだけ,アップグレード可能なものだけといったフィルタリングも可能です。このため,現在どのパッケージの更新が通知されているかも,簡単に表示できます。
$ apt list --upgradable 一覧表示... 完了 initramfs-tools/trusty-updates 0.103ubuntu4.1 all [0.103ubuntu4 からアップグレード可] initramfs-tools-bin/trusty-updates 0.103ubuntu4.1 amd64 [0.103ubuntu4 からアップグレード可] linux-firmware/trusty-updates,trusty-security 1.127.2 all [1.127 からアップグレード可] linux-generic/trusty-updates,trusty-security 3.13.0.27.33 amd64 [3.13.0.24.29 からアップグレード可] linux-headers-generic/trusty-updates,trusty-security 3.13.0.27.33 amd64 [3.13.0.24.29 からアップグレード可] linux-image-generic/trusty-updates,trusty-security 3.13.0.27.33 amd64 [3.13.0.24.29 からアップグレード可]
searchコマンドやshowコマンドはapt-cacheの同名のコマンドとほぼ同じです。ただしsearchは若干表示が変わっています。
apt-cacheには上記以外にもshowsrcやpolicyといった便利コマンドがありますが,これらはまだaptコマンドでは使えないようです。
パッケージを操作する
パッケージをインストールや削除,アップグレードといった操作する場合もaptコマンドを使用できます。これらのコマンドは,apt-getのときと同様に管理者権限で(sudoをつけて)実行する必要があります。
install,remove,update,upgradeコマンドもまた,apt-getの同名のコマンドと同じです。リリースやバージョン,アーキテクチャの指定も同じように可能です。ただし「apt upgrade」は「apt-get upgrade」と異なり「新しいパッケージのインストール」も行います。たとえばカーネルパッケージのセキュリティアップデートは新規パッケージのインストールが必要になるため,「apt-get ugprade」ではなく「apt-get dist-upgrade」を行うか「--with-new-pkgs」オプションを指定する必要がありました(注3)。しかしながら「apt upgrade」コマンドであれば,新規パッケージも自動的にインストールされます。なおdist-upgradeと異なり,既存のパッケージを削除するような変更は行いません。dist-upgrade相当のコマンドは「full-upgrade」になります。
ちなみにaptコマンドは,DPkg::Progress-Fancyなどの機能が標準で有効になっているため,パッケージインストール時のプログレスバーなどがよりカラフルで見やすいものになります。
edit-sourcesはこれまでになかったコマンドです。と言っても,やっていることは単純で,Aptのアーカイブサーバーを指定する/etc/apt/sources.listファイルを指定のテキストエディターで開くだけです。sources.listファイルを手動で編集する場合に,役に立つでしょう。
add-apt-repositoryでPPAをインストールした場合は,/etc/apt/sources.list.d/以下にリストファイルが追加されます。特定のリストファイルを編集したい場合は,オプションにリストファイル名を指定してください。ppa:cosmos-door/fooを追加した場合,/etc/apt/sources.list.d/cosmos-door-foo-trusty.listが追加されていますので,以下のようにコマンドを実行します。
$ sudo apt edit-sources cosmos-door-foo-trusty
ファイル名の末尾の“.list”は上記のように省略してもかまいませんし,付けたままでもかまいません。ちなみに,add-apt-repositoryのような機能も実装される予定のようです。
- 注3)
- デスクトップでアップデートマネージャーを使う場合は,この違いを意識する必要はありません。
新しいaptコマンドを使いこなそう
aptコマンドはまだまだ誕生したばかりで,今のところこの新しいコマンドにそれほど大きなメリットはありません。基本的なコマンドであればapt-get/apt-cacheを使い分けなくて済むとは言え,よく使われるコマンドのすべてが移植されたわけではないので,結局apt/apt-get/apt-cacheの3つのコマンドを使い分けることになってしまいかねません。
強いて挙げるとすれば,「apt-get」から「apt」にコマンド名が短くなるために,入力速度が50%以上高速になるということぐらいでしょうか(注4)。ちなみに情報をより整形する必要があるためか,既存のapt-cacheコマンドに比べると表示速度は遅くなっています。Ubuntu 14.04 LTSのバージョンだとbashの補完も設定されていないため,サブコマンドの入力も不便です。
ただ,新しいコマンドということで,あまり後方互換性を気にせずに機能を追加できます。これからDebian Jessieのリリースに向けて,さらなる機能の追加やブラッシュアップが行われていくことでしょう。ぜひ,この新しいコマンドをばんばん使って,見つけたことはどんどんDebianのBTSに報告してください。
- 注4)
- ちなみに「apt」コマンドは,Java 6以前のパッケージに同名コマンドが含まれるため,いろいろ考慮する必要がありました。