Windows上のBashシェル入門【Windows 10 Creators Update対応】(1)

Windows上のBashシェル入門【Windows 10 Creators Update対応】(1)

Bash on Ubuntu on Windowsとは? そのインストールと使い方

2017年4月6日 改訂(初版:2016/08/23)

Windows 10上で動作するBashシェルの基礎を理解・マスターすることをゴールとして、Bash on Windowsの概要から、インストール方法までを解説。また、よくある疑問をQ&A形式で短くまとめる。

亀川 和史
  • このエントリーをはてなブックマークに追加

 「WindowsにBashシェルが入る!」と、2016年8月2日に登場したWindows 10 Anniversary Updateで大きな話題となり、注目を集めてきた“Bash on Ubuntu on Windows”(以下、BoW)。このBoWのアップデート版が搭載されたWindows 10 Creators Update更新プログラム(手動インストール用)が2017年4月5日(日本時間では6日)に公開された。Windows Updateでの一般提供は、4月11日以降、順次、行われる予定となっている。図1はそのBoWの実行例だ。

図1 Windows上でBashシェルが動く!

 このBashシェル搭載は、特にWeb開発者やPython/Rubyなどの開発者らにとって大歓迎されているのではないだろうか。最近では、ノウハウや情報が豊富なBashシェルで作業するケースが多くなってきている。そんなBash環境利用のために、本当は使い慣れたWindowsを使いたくても、仕方なくMacやLinuxを使っていたという人も少なくないだろう。そういう人にとっては、このBoWがWindows回帰に役立つ可能性がある。

 では、BoWでどんなことができるのだろうか? 本稿ではまず、「BoWがWindowsにおいてどんな位置づけのものなのか」といった特徴や背景、内部構成の概要、BoWが動作する仕組みを紹介し、次に、一般的によくあるBoWに関する疑問をQ&A形式で簡潔にまとめる。さらに本稿後半では、BoWのインストールから、基本的な環境準備までを一通り説明する。本稿を読めば、BoWの基礎が最短・最速で学べるようになっている。

<目次>

 すでにBowを試したことがあり、今回のCreators Updateでどんな新機能が追加されたのかが気になる方も少なくないだろう。新機能については、「Bash on Ubuntu on Windowsの、Creators Updateでの強化点&新機能」で説明しているので、併せて参照してほしい。本稿は初心者もしくは再入門者向けの記事としてBoWの全体情報をまとめている。

▲目次に戻る

Windowsの開発ツールセット「Bash on Ubuntu on Windows」とは

BoW登場以前のWindowsの*nix環境

 WindowsでLinuxのツールを使う方法は、BoWが登場するまでにもいくつか用意されていた。

 このうち仮想化環境では、マシンリソースの消費やホストOSとのファイルのやりとりをシームレスに行えないという問題があった。

 また、Cygwinをはじめとするエミュレーション環境では、シームレスなやりとりはできるものの、Windowsとツール類を共存させた場合に、同名のコマンドが意図せず呼び出されてしまう、という問題があった。例えば、findというコマンドはLinuxにもWindowsにも用意されている。しかし、両者の引数および、コマンドの仕様は異なっており、同じように呼び出すことはできない。例えば環境変数PATHに対して(Windowsのパスよりも)先にCygwinのパスが定義されていた場合、Windowsのfindコマンドを呼び出そうとしてもCygwin側のコマンドが呼び出されてしまい、意図どおりの正確なコマンド実行ができないといった問題が発生する。

 かつてのWindowsには、POSIXOS/2といったサブシステムが提供されており、それぞれのサブシステムに準拠したアプリケーションを実行することができた(POSIXは再コンパイルが必要、OS/2は16bit版のコマンドラインアプリケーションがそのまま実行できた)。しかし、これらのサブシステムは様々な理由からWindows XPで廃止された(POSIX and OS/2 are not supported in Windows XP or in Windows Server 2003)。UNIX環境との相互運用を目的としてServices for UNIXSubsystem for UNIX-based Applicationsといったサブシステムが用意され、その上で動作するアプリーション(=UNIXで提供されているツールを、POSIXサブシステムを使って移植したもの)が提供されていた。しかし、提供当時のニーズやマイクロソフトにおける製品戦略などが徐々に変化してきたためと思われるが、だんだんと収束し、現在では提供されていない。

 これら従来のUNIX/Linuxツール使用環境に対し、最新Windows 10のBoWは、Linuxのツール(=厳密にはLinuxディストリビューションの一つであるUbuntu上で動作可能なツール)をWindows上でそのまま使えるようにするために、仮想化環境でもエミュレーション環境でもコンテナーでもない、新しいサブシステムとして導入されたのだ。実利用において厳密なBoWの内部仕様を理解する必要はあまりないと思われるが、参考知識として、新サブシステムの内容と、Bashシェルが動作する仕組みを簡単に示しておこう。

BoWを支える新サブシステム「WSL」

 現在のWindowsはもともと、マイクロカーネルに、複数のサブシステムが共存できるアーキテクチャだ。WindowsのGUIはWindowsサブシステムというサブシステムで動いているし、前述のとおり、かつてはPOSIXOS/2といったサブシステムが提供されていた。

 今回、BoWのために新しく作られたサブシステムは、Windows Subsystem for Linux(以下、WSL)と呼ばれている。WSLはPOSIXやOS/2サブシステムとは異なり、Linux互換環境を提供するlxss.syslxcore.sysという2つのカーネルドライバーで実装されている(ちなみに「LX」は「Linux」を意味する省略語)。WSLでは、これら2つを合わせてPicoプロバイダードライバーと呼んでいる。

 WSLの仕組みについて本格的に説明すると文章がかなり長くなってしまうので、以下ではWSLの大まかな概要のみを簡単に示す。ちなみに英語になるが、開発チームがWSLについて紹介しているビデオが公開されているので、詳細を知りたい場合は「Learn more about Bash on Ubuntu on Windows and the Windows Subsystem for Linux」に掲載されている各ビデオを参照してほしい。

 WSLは、図2に示すような複数のコンポーネント群で構成されている。前述のlxss.syslxcore.sysは、この図ではLXSSLXCoreというコンポーネントとして表現されている。この図の内容・意味については次節で説明する。

図2 WSL(Windows Subsystem for Linux)のコンポーネント構成と、Bashシェル(BoW)が動く仕組み

Windows Subsystem for Linux Overview – Windows Subsystem for Linux」から「Figure 1: WSL Components」の図を引用(画像は独自に拡張して再作成)。

Bashシェルが動作する仕組み

 WSLによりBoW(=Windows上で動くUbuntuのBashシェル)が実現するわけだが、その仕組みや処理の流れは前掲の図2で示されているので、ここではその図の内容を一通り説明しよう。

 図2を見ると、ユーザーモード(=通常のアプリケーションとして動作するもの)内に「bash」と書かれたコンポーネントが2つあるのに気付くだろう。左上にあるBash.exeは「Microsoft Bashランチャー」というアプリケーション名のコンソールウィンドウ(=ターミナル)で、Windows上でユーザーが入力したコマンドを受け付けてBashシェルに渡し、またBashシェルの出力をユーザーに表示する。当然ながらBashシェルの本体は、Linuxインスタンス(Ubuntu)上にある/bin/bashの方である。

 BoWインストール時には、Bash.exeにより処理が実行開始されると、黒色の矢印で示されている COM の流れでWin32プロセスであるLXセッション・マネージャー・サービスLX Session manager service)が仲介して、緑色矢印の ioctl の流れでカーネルモード(=Windowsカーネル側)で動作するPicoプロバイダードライバーがその処理を実現する形となっている。また、紫色矢印の Bus の流れで、Windows上で動くLinuxインスタンス(Ubuntu)が生成(init)・管理され、さらに青色矢印の fork の流れで、Linuxインスタンス(Ubuntu)上の/bin/bashPicoプロセス(=LinuxプログラムをWindows OS上でそのまま実行できるプロセス)として生成(fork)される。

 また、BoW利用時に/bin/bash上で処理が実行されると、赤色矢印の syscall の流れで、Linuxのシステムコール(=WindowsでいうAPIのようなもの)が発行され、それをPicoプロバイダードライバーが処理する。Picoプロバイダードライバー内部では、システムコールをフックして、Windowsに相当するAPIがある場合はWindows APIで処理を行い、Windows APIに存在しないシステムコールはLinuxカーネルが(つまりWSL内部だけで)処理する形になる。

なぜBoWが必要だったのか

 ところで、なぜBoWが提供されるようになったのだろうか? あくまでも筆者の想像だが、「オープンソース化の推進」と「クロスプラットフォームの推進」が大きな要因だったのではないかと考えている。

 以前から多くのプロダクトがオープンソースで提供されていたが、ここ数年、特に企業が開発ツールやライブラリをオープンソースとして提供する例がさらに多くなってきた。そしてそれらはLinuxやMacを前提としているものが多く、Windowsは対応されたとしても後から、という状況もしばしば見られた。

 前述のように、UNIX互換環境や仮想化環境で使うという方法もあるが、再コンパイルや、システムリソースの問題、前述したようなWindowsとの共存の問題も発生するため、「WindowsにLinux互換のサブシステムを作って動かせばいいのではないか」という発想になったのではないかと考えている。

 2011年にMS Researchが『DrawBridge』という論文で「Windows以外のシステムを実行する軽量なサブシステム」を実現する仕組みを発表している。このDrawBridgeがBoWの原型になったと考えられる。

 以上、BoWの特徴や仕組み、登場の背景を説明した。とはいっても、「WindowsでBashが動く」ということについて、依然としてさまざまな疑問が残っているのではないだろうか。インストールや使用方法の説明に入る前に、前提知識として、特によくある疑問をQ&A形式で簡単にまとめておこう。

Bash on Ubuntu on Windowsに関するQ&A

▲目次に戻る

Q: PowerShellはどうなるの? Windowsの管理もBash?

A: BoWはあくまでも開発ツールセットの一つとして提供されている。現時点において、Windowsの管理はあくまでもPowerShellやコマンドプロンプトで行う。
 ちなみに2016年8月19日、PowerShellが.NET Coreを使用したオープンソースとして公開された。恐らく、マイクロソフトが提供するクロスプラットフォーム向けのツールでは、そのオープンソース版のPowerShellが活用されていくことになるだろう。

▲目次に戻る

Q: 運用サーバーとして使える?

A: ライセンスとサポートの問題から使用できない。BoWではnginxやMySQLといった、サーバー機能のアプリケーションを実行することはできるが、あくまでも「クライアントOSにおける、開発ツールセットの一つ」という位置づけとなっている。
 以下の公式ブログでも「サーバープラットフォームではない」と明言されている。

This is not a server platform upon which you will host websites, run server infrastructure, etc.

▲目次に戻る

Q: Windows Server 2016にもリリースされるの?

A: 現時点において、クライアントOSであるWindows 10 64bit版にのみリリースされている。
 以下のMSDNページでも「WSLはサーバー製品では利用できない」と言及されている。

Windows Subsystem for Linux will be available in desktop versions of Windows.
WSL is NOT a server technology and so will not be available on Server SKU's.

▲目次に戻る

Q: 動かないものがあった場合はどうすればいいの?

A: 機能上のバグに関してはGitHubのissue、アイデアに関してはUserVoiceに、いずれも英語で書いてほしい。UserVoiceに投票する前に、既存のアイデアがないか、まずキーワードで検索して、似たアイデアがあった場合、そのアイデアに[Vote]ボタンを押して投票しよう。Voteの数が投票数となっており、Vote数が多いアイデアに関しては、開発チームにおいて優先的に実装する目安となっている。
 投票数には上限が設定されているが、開発チームが開発終了などの理由でクローズしたアイデアに関してはVoteした数がユーザーに戻され、別のアイデアに投票できる。Voteおよびアイデアを投稿する際にはGoogleアカウントかFacebookアカウントが必要になる。

▲目次に戻る

Q: Ubuntuで動いているパッケージを使いたいけど、再コンパイルが必要?

A: UbuntuのELF64バイナリがそのままWindows上で実行されるため、再コンパイルは不要だ。UbuntuのパッケージもCanonicalのサーバーからUbuntuの64bit版パッケージを取得しているし、非公式なリポジトリ(PPA:Personal Package Archive)を指定しても問題ない。もちろん、非公式リポジトリを使用する場合、提供元ベンダーおよび、サーバーが信頼できるかどうかの判断は使用者に委ねられる。

▲目次に戻る

Q: どんなLinuxソフトでも動くの?

A: Ubuntuで提供されている全てのパッケージが動作するわけではない。WSLに実装されているシステムコールの範囲で動作するため、実際にパッケージをインストールしないと、動くかどうかは分からない。例えば執筆時点において、標準パッケージに含まれるコマンドでもshutdownのように実行できないコマンドがある。
 (繰り返しになるが)BoWは開発ツールセットの一つとして開発されているため、開発ツールセットおよび、サービスに必要なシステムコールの実装が優先されているようだ。

▲目次に戻る

Q: Bash内からWindowsソフト(.exeファイル)も実行できるの?

A: Creators Updateの新機能で、WindowsとBoWのコマンドの相互運用が強化された。これにより、BoWからWindowsプログラムを呼び出せるようになった。Bashを起動すると、Windowsに登録されている環境変数PATHが自動的にBoW側にも反映されるため、Windowsプログラムを呼び出すことも可能だ(なお、拡張子の.exeを含めて呼び出す必要があるので、例えばファイル内からテキストを検索するためのコマンドの名前はfind.exeとなり、Linuxが提供している同名で別機能のfindコマンドが意図せず呼び出される問題も起きない)。また逆に、WindowsからBash上のLinuxアプリケーションを呼び出して、BoWの標準出力をWindows側でキャプチャすることもできるようになった。具体的な方法に関しては「Bash on Ubuntu on Windowsの、Creators Updateでの強化点&新機能」で説明しているので、そちらを参照してほしい。

▲目次に戻る

Q: Windowsのログオンユーザーが使えるの?

A: WindowsのログオンユーザーとBoWのユーザーは無関係に管理される。BoWインストール時にBoW用のユーザーを作成する。

▲目次に戻る

Q: 日本語ファイル名が使えるの?

A:コンソールで日本語の使用は可能だが、BoWで提供されているコマンドが日本語ファイル名を扱えるかどうかは、Ubuntuで提供されているパッケージで日本語ファイル名が扱えるかどうか、という点に依存する。

▲目次に戻る

Q: 空白を含むファイル名は使えるの?

A: こちらも日本語ファイル名と同様、BoWで使用するコマンドに依存する。しかし、LinuxをはじめとするUNIX系ではあまり空白をファイル名として使用しないため、Windowsで作られた空白を含むファイル名をBoWに渡さない方がよい。

▲目次に戻る

Q: Windowsってパス名260文字までだから、長いファイル名が使えないのでは?

A: もともとWindowsが標準で使用しているNTFSというファイルシステムでは、最大64KB(UTF-16で3万2767文字)までのパス名をサポートしており、Win32のUnicodeアプリケーションであれば長いパス名を使用できた(本稿でいう「パス名」とは、ドライブ名やフォルダー名、ファイル名を\で連結して並べたもののこと)。しかし、Windows 95系列との互換性のため、ほとんどのアプリケーションが260文字を上限にしている。.NET Frameworkでも、バージョン4.6.1までは、もしくはAnniversary Update以降をインストールしていないWindows 10では、260文字が上限となる。
 WSLではNTFSの上限までの長さのパス名が使用できる。

▲目次に戻る

Q: どこにインストールされているの?

A: 隠しフォルダー%LocalAppData%\LxSSにインストールされている(Windowsエクスプローラーの[フォルダー オプション]ダイアログで[保護されたオペレーティング システム ファイルを表示しない (推奨)]のチェックを外さないと表示されない)。このフォルダーはWindowsのログオンユーザーごとに生成されているため、複数のユーザーでBoWを使用する場合、ユーザーごとにBoWやUbuntuパッケージのインストールが必要になる。
 標準では%LocalAppData%はC:ドライブにあるので、C:ドライブの容量不足には注意が必要だ。
 しかし、隠しフォルダーとなっていることからも分かる通り、BoW開発チームはこのフォルダーをWindowsのツールで操作することは意図していない(参考:「チームブログ:Do not change Linux files using Windows apps and tools(英語)」)。インストールフォルダー内はBoWからのみ操作してほしい。

▲目次に戻る

Q: セキュリティ

A: 不正な通信を遮断するためにはWindowsの[セキュリティが強化された Windows ファイアウォール]で行う(ウィンドウを起動するにはwf.mscコマンドを実行)。ファイアウォールはWindowsと共有するため、BoW側でiptablesなどを設定する必要はない。BoW側で使用しているポートにアクセスできないといった場合は、まずはWindowsのファイアウォール設定を見直してほしい。
 BoW固有の注意点として、SSH(Secure Shell)サービスがWindowsで実行されており、既定では全てのネットワークで外部からの通信を受け入れる設定になっている。BoWにSSHでログインする必要がなければ[セキュリティが強化された Windows ファイアウォール]でSSH Server Proxy Serviceを無効にした後、[コンピューターの管理](compmgmt.mscコマンドで起動)でSSH Server BrokerSSH Server Proxyを停止する。コマンドで行う場合、「管理者として実行」したPowerShellから以下のコマンドレットを実行して、ファイアウォールルールの無効化および、サービスを停止すればよい。ただし、第2回で紹介する、Visual Studioを使用した、リモートデバッグ時にはsshサービスが必要になるので、リモート開発を行う場合は無効にしてはならない。
Disable-NetFirewallRule -Name "SshProxy-Service"
Stop-Service -name SshProxy
Stop-Service -name SshBroker

▲目次に戻る

Bash on Ubuntu on Windowsのインストール

 さて、BoWに関する必要十分な基礎知識が備わったところで、ここからは実践編としてBoWのインストールや使用方法の説明に入ろう。なお、すでにインストール済みで使用中の方はアップデート方法の説明までスキップしてほしい。

 BoWを使用するには、事前に64bit版のAnniversary Update以降のWindows 10をインストールしている必要がある(つまりWindows 10を最新版にアップデートすればよい)。Anniversary Update以降をインストールしていれば、BoWは64bit版のWindows 10のHome/Professional/Enterpriseの全エディションで使用できる。

[準備]開発者モードの有効化

 まず、Windowsを開発者モードに変更する。これには、Windowsの[スタート]メニューの[設定]から[更新とセキュリティ]を選び、左側の[開発者向け]タブを選択する(図3)。

図3 [設定]-[更新とセキュリティ]の[開発者向け]タブ

 次に、図3の[開発者モード]ラジオボタンを選択すると、開発者向け機能を使用するかどうかを確認するメッセージが表示されるので(図4)、[はい]をクリックする。

図4 [開発者向け機能を使う]確認ダイアログ

 これで準備は完了だ。

WSLのインストール

 次に、管理者モードでPowerShellウィンドウを起動し、以下のコマンドレットを実行する(コマンド実行中に再起動を要求されるので、Windows 10を再起動する)。

PowerShell
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
リスト1 WSLを有効にするためのコマンドレット

BoWの初期設定

 再起動後、[スタート]メニューから[bash]を実行する(図5)。

図5 [スタート]メニューで「bash」を検索したところ

図5 [スタート]メニューで「bash」を検索したところ

 これにより、bash.exeが実行されてウィンドウが起動する。図6のように「ベータ機能であること」と「ライセンス条件に関する情報」が表示され、続行するためにはyキーを押すことが求められる。ここでyキーを押すと使用許諾条件に同意したことになり、Ubuntuパッケージのダウンロードが開始される。ダウンロード完了後に、Windowsファイルシステム上にBoWが展開される。

図6 BoWのロケールを指定
図6 BoWのロケールを指定

 展開終了後、図6のようにBoWのロケールをWindowsと一致させるかの問い合わせが行われる。日本語でBoWを使用する場合は、“y”を入力する。ディスク容量が少ない場合や、英語ロケールで使用したい場合は(コラム参照)、“n”を入力して英語ロケールを使用する。

【コラム】英語環境でBoWを使用したい場合

 現時点のBoWはベータということもあり、日本語ロケールでは表示が欠けるなどの問題がある。この場合、英語ロケールにすることで問題を回避できる。もちろん、インストール後のUbuntuを手動で英語ロケールに変更することもできるが、図6に示したようにインストール時にロケールを指定した方が簡単だ。

 その後、図7のように表示されるので、BoW用に独自のユーザー名とパスワードを入力する。なお、Windowsのユーザー名およびパスワードと一致させる必要はない。

図7 BoW用にユーザー名とパスワードを指定
図7 BoW用にユーザー名とパスワードを指定

 パスワードを入力すると準備完了だ。しばらく待つと図8のようにBashシェルが起動した状態になるが、BoWの初期設定が完了した段階で[Bash on Ubuntu on Windows]というショートカットが[スタート]メニューから利用できるので、現在のbash.exeウィンドウは一度、終了する。

図8 Bashシェルが起動
図8 Bashシェルが起動

 ちなみに、図8では/mnt/c/Windows/System32というディレクトリが選択されており、BoW上でWindowsのシステムフォルダーがカレントディレクトリとなっている状態だ。このディレクトリパスから分かるように、BoWからWindowsファイルシステムにアクセスしたい場合には、cd /mntコマンドでLinuxのマウントディレクトリに移動したうえでlsコマンドを実行すればよい。マウントされているWindowsのファイルシステム上のドライブが列挙されるので、そこからたどって目的のディレクトリに移動する。また、BoWユーザーのホームディレクトリに移動したい場合には、単にcdとコマンド入力すればよい。

【ヒント】BoWが正常にインストール完了しない場合/BoWの再構築

 BoWのインストールが完了しない場合は、セキュリティソフトが影響している可能性がある(特にカスペルスキーとBoWは相性が悪いようだ)。その場合には、いったんセキュリティソフトを終了してみてほしい。これで解決する場合がある。

 また、BoW環境をゼロから再構築したい場合は、PowerShellもしくはコマンドプロンプトで下記のコマンドを順に実行するとよい。このように簡単なコマンド実行だけで、Linux環境を再構築できるのもBoWの魅力である。

  • (1)BoWをアンインストール: lxrun /uninstall /full
  • (2)BoWを再インストール: lxrun /install

▲目次に戻る

[旧バージョンをインストール済みの方のみ]Bash on Ubuntu on Windowsのアップデート

 Windows 10を古いバージョンから新しいバージョンに(執筆時点ではAnniversary UpdateからCreators Updateに)アップデートしても、インストール済みのBoWは最新版に更新されない。しかもUbuntuの標準アップグレード方法はサポートされていないため、上記のlxrun /uninstall /fullコマンドで、一度、アンインストールしてから、lxrun /installコマンドで再インストールを行う必要がある(参考: 「WSL adds Ubuntu 16.04 Xenial support(英語)」)。

 もちろん、これらのコマンドを実行するとBoWのホームディレクトリに格納しているファイルも消えるため、SSHの秘密鍵などのBoWにしかないファイルは事前にバックアップしておく必要がある。

 前述したとおり、エクスプローラーをはじめとするWindowsのツールでBoWのフォルダーの操作を行ってはならない。よって、BoWのターミナルからWindowsのフォルダーにコピーして、Windowsのツールを使用してバックアップの採取を行う必要がある。

BoWの起動(次回以降の使い方)

 次回以降のBoWの起動では、[スタート]メニューに登録されている[Bash on Ubuntu on Windows]をクリックして実行する(図9)。

[スタート]メニューに登録されている[Bash on Ubuntu on Windows]をクリック
図9 [スタート]メニューに登録されている[Bash on Ubuntu on Windows]からBoWを起動したところ

Ubuntuパッケージの導入

▲目次に戻る

基本的な方法

 BoWはUbuntuそのものなので、パッケージのインストール/更新/削除はapt-getコマンドで実行可能だ。apt-getの使い方は、「公式ページ:AptGet/Howto(英語)」を参照してほしい。本稿ではapt-getコマンドの代わりにaptコマンドを使っているが、使い方はほぼ同じである(Ubuntu 16.04からはaptコマンドの利用が推奨されている)。

 ただし、全てのパッケージがBoWで動作可能ではない。サポートしているシステムコールによっては動かないものがあるのだ。

 だからといってすぐに諦めないでほしい。昨日は動かなくても、最新のInsider Previewでは動作可能になっている場合があるからだ。例えば、Creators Updateではサポートされるシステムコールが増えたため、Node.jsやHaskellといったソフトウェアが実行可能になった。

 代表的なパッケージのインストール方法を簡単に紹介してこう。ちなみに以下でPythonのインストール方法を省略している理由は、Ubuntu 16.04からPython 3が標準でインストールされているからである。

▲目次に戻る

Git

 Gitは公式パッケージとPPA(パーソナル・パッケージ・アーカイブ)のいずれかからインストールが可能だ。

 例えばUbuntuの公式パッケージからインストールするには、以下のコマンドを実行すればよい(記事執筆時点でバージョンは2.7.4)。

Bash
sudo apt install -y git
リスト2 GitをUbuntu公式サイトからインストールするためのコマンド

 もしくはPPAを使用して、最新版パッケージをインストールするには、以下のコマンドを実行すればよい(記事執筆時点で2.11.0)。

Bash
sudo add-apt-repository ppa:git-core/ppa
sudo apt update
sudo apt upgrade
sudo apt install -y git
リスト3 PPAを使用してGitの最新版をインストールするためのコマンド

▲目次に戻る

Node.js

 Node.jsも公式パッケージもしくはプライベートリポジトリからインストール可能だ。

 Ubuntuの公式パッケージからインストールする方法は以下の通り(記事執筆時点で4.2.6)。

Bash
sudo apt install -y nodejs
リスト4 Node.jsをUbuntu公式サイトからインストールするためのコマンド

 NodeSourceの配布サイトから、最新版パッケージをインストールするには以下のコマンドを実行する(記事執筆時点で7.7.3)。

Bash
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt install -y nodejs
リスト5 nodesourceからNode.jsの最新版をインストールするためのコマンド

▲目次に戻る

nginx

 最近ではApache httpdに代わってWebサーバー「nginx」が人気を博している。そのnginxのUbuntuパッケージをインストールしてみよう。具体的にはリスト6の手順で、aptのパッケージリストを更新してから、nginxパッケージをインストールする。

 nginxやApache httpdは既定で80/tcpを使用する。WindowsでIISやSkypeといった80/tcpを使用するアプリケーションを起動していると使用できなくなるので、注意してほしい。

Bash
sudo apt update
sudo apt install -y nginx
リスト6 nginxをインストールするためのコマンド

▲目次に戻る

Ruby

 スクリプト言語として人気の高い、RubyをUbuntuパッケージからインストールする方法を紹介する。以下のコマンドでRuby 2.3(執筆時点)がインストールされる。

Bash
sudo apt update
sudo apt install -y ruby
リスト7 Rubyをインストールするためのコマンド

▲目次に戻る

PHP

 WordPressをはじめ、世界の多くのブログエンジンおよびCMSの開発言語であるPHPをUbuntuパッケージからインストールする方法を紹介する。以下のコマンドでPHP 7.0(執筆時点)がインストールされる。

Bash
sudo apt update
sudo apt install -y php
リスト8 PHPをインストールするためのコマンド

▲目次に戻る

Java

 オラクル(Oracle)から配布されているJDKもPPAからインストールが可能だ。執筆時点の最新版であるJDK 8をインストールする方法を紹介する。最後のapt installコマンドを実行すると、ライセンス同意画面が表示される。コンソールに表示されるOracle Binary Code licenseに同意すると、インストールが開始される。

Bash
sudo add-repository ppa:webupd8team/java
sudo apt update
sudo apt install -y oracle-java8-installer
リスト9 Javaをインストールするためのコマンド

▲目次に戻る

Go(golang)

 グーグル(Google)が作ったプログラミング言語Gogolangとも呼ばれる)をインストールする方法を紹介する。GoはDockerを作った言語としても知られている。

Bash
sudo apt update
sudo apt install -y golang
リスト10 golangをインストールするためのコマンド

▲目次に戻る

MySQL

 多くのサービスで使われているRDBMSであるMySQLもインストールできる。

Bash
sudo apt update
sudo apt install -y mysql-server
リスト11 MySQLをインストールするためのコマンド

▲目次に戻る

まとめ

 いかがだっただろうか? BoWを使用できるようになったことで、従来のようにWindows上でLinux仮想化環境を構築したり、別途Linuxマシンを用意したりすることに比べれば、非常に低コストでLinux環境をWindowsだけで完結させられる可能性が見えてきた。

 とはいっても、前述のようにまだまだ足りない機能やバグもあるのは事実である。だが現状でも、Linuxでしか動かなかった数多くのツールをWindows上でそのまま動かせるようになっており、例えば「Linux用のバイナリを生成するためのビルドエージェントを実行する」といった用途においては非常に便利に活用できるだろう。

 次回は、より実践的な内容として、BoWとWindowsでファイルシステムを上手に相互運用するためのヒントや、BoWを活用してクロスプラットフォームなASP.NET Core開発やLinuxアプリケーションの開発&デバッグを行う方法を説明する。

1. 【現在、表示中】≫ Bash on Ubuntu on Windowsとは? そのインストールと使い方

Windows 10上で動作するBashシェルの基礎を理解・マスターすることをゴールとして、Bash on Windowsの概要から、インストール方法までを解説。また、よくある疑問をQ&A形式で短くまとめる。

2. Bash on Ubuntu on Windowsを使って「開発」をしてみよう

WindowsとBoW(Bash on Windows)の間でファイルシステムを上手に相互運用するためのヒントや、BoWを活用してクロスプラットフォームな開発を行う方法を説明する。

3. Bash on Ubuntu on Windowsの、Creators Updateでの強化点&新機能【Insiders Preview版】

あと1~2カ月でリリースされると見られるWindows 10 Creators Updateで、Bash on Windowsはどう進化するのか? 最新Insider Previewの内容で強化点と新機能をいち早く知っておこう。

イベント情報(メディアスポンサーです)

Twitterでつぶやこう!


Build Insider賛同企業・団体

Build Insiderは、以下の企業・団体の支援を受けて活動しています(募集概要)。

ゴールドレベル

  • グレープシティ株式会社
  • 日本マイクロソフト株式会社