Windows 10 Anniversary UpdateからサポートしたWSL(Windows Subsystem for Linux)。その結果としてWindows 10上でもBUW(Bash on Ubuntu on Windows)が動作し、各種Linuxコマンドが利用可能になった。本連載ではWSLに関する情報や、Bashから実行するシェルスクリプトを紹介する。

Ubuntuのパッケージを管理する

BUWはLinuxディストリビューションのUbuntuを用いているため、debパッケージ管理が欠かせない。そこで今回はその管理をご紹介しよう。Linuxディストリビューションの多くはソフトウェアの導入を用意にするため、パッケージ管理システムを用いている。例えばRed Hat Enterprise LinuxやFedoraはRPM(RPM Package Manage)だが、UbuntuはDebian GNU/Linuxに類するため、deb形式となる。コンパイル済みのバイナリデータや関連ファイルなどを圧縮し、フロントエンドとなるapt(Advanced Packaging Tool)コマンドで操作する仕組みだ。

インストール済みパッケージを更新する時は「sudo apt update && apt upgrade -y」と実行する。sudoコマンドはユーザーが別のユーザー権限でコマンドを実行する際に使用し、aptコマンドはdeb形式のパッケージを操作するコマンド。そして「update」はパッケージの一覧情報を更新し、「upgrade」はパッケージの更新を実行する。

「apt」コマンドを用いたパッケージ情報の更新と、パッケージのアップグレード実行例

従来のUbuntuは「apt-get」「apt-cache」コマンドを使ってパッケージの更新を行ってきた。筆者も指に慣れているのはこちらのコマンドだが、最近は各コマンドの作業内容を統合したaptが用いられ始めている。パッケージの新規インストールは「install」、アンインストール時は「remove」、完全削除は「remove --purge」とオプションを追加しなければならない。purgeコマンドの有無は設定ファイルを削除するかしないかの違いだ。removeコマンドだけで実行した場合、関連する設定ファイルはそのまま残して、パッケージを再インストールする際などに流用できる。

パッケージのインストールは「sudo apt install {パッケージ名}」と実行する

削除時は「--purge」オプションを付与すれば、設定ファイルなども含めて完全削除する

こちらはパッケージ情報を表示させる「show」コマンドを実行した例

LinuxディストリビューションもWindows 10のAnniversary Update、Creators Updateと同じく定期的にアップグレードを行ってきた。こちらの更新を行うのが「full-upgrade(dist-upgrade)」コマンドだ。ただし、Linuxディストリビューションのデザインによってパッケージが削除される可能性もあるので、その際は事前に新バージョンの情報収集を行ってから実行することをお薦めしたい。一連のコマンドをまとめると以下のとおりだ。

コマンド 内容
apt list {パッケージ名} 指定したパッケージの一覧表示
apt search {キーワード} キーワードを元にパッケージの説明を検索
apt show {パッケージ名} 指定したパッケージの詳細を表示
apt install {パッケージ名} パッケージのインストール
apt remove {パッケージ名} パッケージのアンインストール
apt autoremove 自動インストール後に不用となったパッケージの削除
apt update 利用できるパッケージ情報の更新
apt upgrade 既存パッケージのアップグレード
apt full-upgrade パッケージ削除も伴うディストリビューションアップグレード
apt edit-sources ソース情報ファイルを編集


これらがaptコマンドで利用できる主なコマンドだが、「edit-sources」はリポジトリ情報の編集時に用いるため、通常は使用する機会は少ないものの、非公式パッケージが必要になった際は、こちらでリポジトリを追加すればよい。また、「autoremove」は文字どおり依存関係にあったパッケージが自動インストールされた後、現時点で不用なったパッケージを削除するコマンドだ。

Linuxディストリビューションの多くは、「Aというコマンドを使うためにBというコマンドもしくはライブラリが必要」と依存関係が発生する。Windowsなどにおける動的リンクを想像すると分かりやすいだろう。ただし、パッケージの更新タイミングや非公式リポジトリを試用している際、パッケージの依存関係が解決できないトラブルに見舞われた場合は、「apt -f install」を試してほしい。強制的に依存関係を解消するため、正しく動作することもある。

「/var/log/apt/history.log」の内容をビューアーで開くと、aptコマンドの使用履歴が確認できる

BUWを使う上で覚えておきたいのが、「clean」「autoclean」コマンドだ。どちらもキャッシュ上にあるパッケージを削除するコマンドだが、前者はキャッシュとして用いられる「/var/cache/apt/archives」内のdebファイルをすべて削除し、後者は取得したdebファイルから利用していない=未インストールのものだけを削除する。基本的には定期的にautocleanコマンドを実行した方が確実だが、2-in-1 PCなどストレージ容量が足りない環境の場合は、cleanコマンドでも構わない。

「autoclean」コマンドを実行すれば、インストールしていないdebファイルを削除できる

2017年9月リリース予定のWindows 10 Fall Creators Updateでは、Ubuntuの代わりにopenSUSEやFedoraがWSL上で動作する。だが、両者はいずれもrpm形式のパッケージ管理システムながらも、フロントエンドが異なるため、サポート後にお試しになる場合は注意してほしい。