Windows 10で始めるBash (47) Ubuntuのパッケージを管理する

Windows 10で始めるBash (47) Ubuntuのパッケージを管理する

画像提供:マイナビニュース

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コマンドで利用できる主なコマンドだが、「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形式のパッケージ管理システムながらも、フロントエンドが異なるため、サポート後にお試しになる場合は注意してほしい。
(阿久津良和)