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」はパッケージの更新を実行する。
従来のUbuntuは「apt-get」「apt-cache」コマンドを使ってパッケージの更新を行ってきた。筆者も指に慣れているのはこちらのコマンドだが、最近は各コマンドの作業内容を統合したaptが用いられ始めている。パッケージの新規インストールは「install」、アンインストール時は「remove」、完全削除は「remove --purge」とオプションを追加しなければならない。purgeコマンドの有無は設定ファイルを削除するかしないかの違いだ。removeコマンドだけで実行した場合、関連する設定ファイルはそのまま残して、パッケージを再インストールする際などに流用できる。
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」を試してほしい。強制的に依存関係を解消するため、正しく動作することもある。
BUWを使う上で覚えておきたいのが、「clean」「autoclean」コマンドだ。どちらもキャッシュ上にあるパッケージを削除するコマンドだが、前者はキャッシュとして用いられる「/var/cache/apt/archives」内のdebファイルをすべて削除し、後者は取得したdebファイルから利用していない=未インストールのものだけを削除する。基本的には定期的にautocleanコマンドを実行した方が確実だが、2-in-1 PCなどストレージ容量が足りない環境の場合は、cleanコマンドでも構わない。
2017年9月リリース予定のWindows 10 Fall Creators Updateでは、Ubuntuの代わりにopenSUSEやFedoraがWSL上で動作する。だが、両者はいずれもrpm形式のパッケージ管理システムながらも、フロントエンドが異なるため、サポート後にお試しになる場合は注意してほしい。