Windows Subsystem for Linuxでのaptコマンドを詳しく解説する

アスキー 12月25日(日)10時00分配信

 今回は前回に引き続き、Windows Subsystem for Linux(WSL)にアプリをインストールするためのaptコマンドについて解説する。

パッケージでインストールされたファイルを確認する

 パッケージがインストールされているとき、そのパッケージに含まれるファイルがどこにあるのかを調べたいときがある。パッケージには実行ファイル自体や設定ファイル、ドキュメントなどが含まれている。またLinux系では、実行ファイルが、実はシェルスクリプトだということも珍しくない。インストールされたファイルがわかれば、コマンドについていろいろと調べることができる。

 dpkgコマンドを使えばパッケージ名がわかれば、該当のパッケージでどのディレクトリにどんなファイルがインストールされたのかを調べることが可能だ。それには

dpkg -L パッケージ名

とコマンドを実行する。

11
dpkg -Lコマンドで、該当のパッケージがインストールしたファイルをすべてパス付きで表示させることができる。通常は実行ファイル以外にドキュメント(/usr/share/doc以下)やオンラインマニュアル(/usr/share/man以下)が含まれることが多い

実際にパッケージをインストールする

 パッケージ名がわかれば、インストールは簡単にできる。システムのバージョンや依存する他のパッケージなどは、何も考える必要がなく、aptコマンドが自動的に判断して必要な処理をおこなってくれる。インストールはapt-getコマンドで行ない、

sudo apt-get install パッケージ名

とする。

11
パッケージをインストールするには「apt-get install」コマンドを使う。aptが依存するパッケージなどを探して、自動的にインストールしてくれる

 実行にはroot権限が必要なので、sudoは必須だ(以下同様に必要な場合にはsudoをつけるがいちいち断らないことにする)。途中、一定以上のサイズを占有するパッケージなどでは確認を求められますが「y」を入力すれば先に進む。

 このとき「-y」オプションをつけると、重大な選択でない限り、確認にすべてyと入力するのと同じになり、多くの場合、途中で確認のために入力待ちにならなくなる。逆にすべての確認に「no」と応答させたい場合には、「--assume-no」を指定する。「-y」オプションは、「--yes」、「--assume-yes」と指定することも可能だ。

 なお、パッケージ名の部分を

パッケージ名=バージョン

とすることで、特定のバージョンを指定してインストールすることも可能だ。ただし注意するのは、バージョンを指定すると、すでにインストールされていたパッゲージが強制的に古いバージョンに「ダウングレード」される可能性がある。このため、バグなどで最新版が利用困難といった場合を除き、みだりに使用しないほうがいい(とはいえ、そういう場面は少なくない)。少なくともバージョンの違いなどを理解し、そのために引き起こされる依存するパッケージの変更などを理解して利用するべきだろう。

パッケージをアンインストールする

 インストールされているパッケージが不要になったらアンインストールが可能だ。アンインストールには2つの方法がある。1つは、実行ファイルやドキュメントなどの主要な部分を削除するが、設定ファイルを残しておく方法(remove)。もう1つは、設定ファイルも含め、完全にパッケージに含まれていたファイルと関連ファイルを削除する方法(purge)だ。

 removeを使えば、再度同じパッケージをインストールしたときに、前回の設定をそのまま利用できる。ただし、これを繰り返していると、不要な設定ファイルが残り続け、他のマシンに引越するような場合にどれが必要なのかがわからなくなる。よほど大物のソフトウェアか、複雑なソフトウェアでもなければ、設定は単純なので、削除してしまっても問題ない。

 具体的なコマンドは、

sudo apt-get remove パッケージ名
sudo apt-get purge パッケージ名

である。

11
apt-get purgeコマンドでパッケージのアンインストールが可能。ただし、メッセージにあるように自動的にインストールされた依存関係のあるパッケージは自動的にはアンインストールされない。こちらは別途autoremoveオプションを使って行なう

 なお、パッケージをアンインストールすると、それまでの依存関係がなくなり、インストールされているパッケージの中には、どこからも参照されない(必要とされない)パッケージができることがある。こうしたものは、apt-get autoremoveコマンドで削除することができる(後述)。

パッケージのアップグレード

 パッケージに含まれるソフトウェアも、バグ修正などで日々アップデートしていく。aptコマンドは、こうしたパッケージを最新のものに置き換えるupgradeの機能がある。

 WSLでも、ログイン直後にアップグレードがなんとかといったメッセージが表示されることがある。

11
WSLの起動時には、更新されたパッケージについてのメッセージが表示されることがある。これは、aptコマンドでインストールされたパッケージに更新されたものがあるというメッセージ

 これはmotd(Message of the day)と呼ばれる仕組みで、メッセージは一日一回しか出ない。同じメッセージを再度表示させたいなら、/etc/update-motd.d/90-updates-availableに記述されている以下のコマンドを実行させる。

11
motdは一日一回だけメッセージを表示する仕組み

/usr/lib/update-notifier/update-motd-updates-available

具体的に、どのパッケージがアップグレードできるのかを表示させるには、

apt list --upgradable

とする。

 このような場合には、以下のコマンドを使ってパッケージのアップグレードを行なう。

sudo apt-get update
sudo apt-get upgrade
sudo apt-get autoremove

 最初のコマンドは、パッケージリストの更新、次のコマンドは、パッケージのアップデート作業、最後のコマンドは、不要になったパッケージの自動削除である。

11
ap-get upgradeコマンドを実行するだけで、必要な処理はすべて自動で行なわれる。ただし、実際の処理を開始する前に確認がある
11
アップグレードしたあと、パッケージを複数削除したあとは、不要なパッケージを削除させることができる

 最後のコマンドは、必ずしも実行する必要はなく、2番目のコマンドでアップグレード自体が行われる。しかし、前述のpurgeやupgradeサブコマンドの実行で、どこからも参照されなくなったパッケージは残ったままになる(必ず残るとは限らないが)ため、最後にapt-get autoremoveコマンドを実行して不要なパッケージを時々削除させるといいだろう。

 なお、似たようなサブコマンドにautocleanがある。こちらはパッケージのデータベースから不要な項目を削除するコマンド。パッケージのアップグレードや削除などが続いたときにときどき実行するといいだろう(実行にはsudoが必須)。

 ただし、上記のコマンドでアップグレードされるのは、アプリケーションや一部のディストリビューション関連のパッケージのみで、Linuxカーネルなどについては別のコマンドを利用する。

 次のWindowsアップグレードであるRS2でWSLも強化され、Ubuntuも14.10から16.10へと変更される予定だ。このあたりについては、RS2での強化点などを含めて次回解説する。

アスキー
もっと見る もっと見る

【あわせて読む】

    最終更新: 12月25日(日)10時00分

    【関連ニュース】

    【コメント】

    • ※コメントは個人の見解であり、記事提供社と関係はありません。

    【あなたにおススメ】