WindowsでLinuxコマンドを使えるようにした (WSLでUbuntuを使う)
ITエンジニアであれば、Unixのコマンドを使いたくなる場面は多々あるものです。macOSであれば、2001年のMac OS Xの登場以来、Unixコマンドを使えるようになっていました(Terminalソフトを起動するだけで)。一方のWindowsはというと、仮想環境を用意して・・・と、ITエンジニアならそのくらいやりなさいと言われるかもしれませんが、ともかく手間がかかるものでした。
しかし、とうとうWindowsでもUnixコマンドを使えるようになりました。その仕組みは WSL (Windows Subsystem for Linux)と名づけられています。Windows 10が Fall Creators Update (version 1709) になってからのことです。macに遅れること実に16年。。。
では、そのちょっとした導入顛末をささやかに公開することにいたしましょう。
WSLを有効化する
デフォルトではWSLは無効になっていますので、まずは有効化しなくてはなりません。「Windows の設定」画面の検索枠で「Windows の機能」と入力すると「Windows の機能の有効化または無効化」が候補として現れますので、それをクリックします。
検索枠に入力するときにちょっとしたコツがあります。「Windows」の後ろに半角スペースを1個入れてあげなくてはなりません。でないと、目的の候補は現れないのです。英語の名残なのでしょうか。
「Windows の機能の有効化または無効化」の小窓が開きますので、その中から「Windows Subsystem for Linux」を探して、チェックを入れましょう。そして「OK」ボタンですね。これでWSLが有効になります。
Ubuntuのインストール
私のWindows 10はversion 1903 (May 2019 Update)にしたばかりなのですが、1903からはWSLの有効化だけでUnixのコマンドが使えるようになるのだと勘違いをしていました。Windows Power Shellでwslとコマンドを打ってみると、「Windows Subsystem for Linux には、ディストリビューションがインストールされていません」と怒られてしまいました。4949...(/_;)
でもその後に続けて「ディストリビューションは Microsoft Store にアクセスしてインストールすることができます」とフォローしてくれています。
Windows 10の左下のアイコン(名前がわかりません!)をクリックするとメニューが開くので、「Microsoft Store」を探してクリックします。
Microsoft Storeの画面になりますが、よくわからなったので、とりあえず「wsl」と枠内にタイプしてみると「Windows で Linux を実行するアプリを入手する」という候補がトップに現れました。これだ!ということでクリックします。
ほぉ〜。UbuntuやSUSE Linuxなどが見つかりました。今回はUbuntuをクリックしてインストールに進みます。
入手ボタンをクリックします。
インストールが終わると、Windowsの通知機能が右下に現れますので「スタートにピン留め」をクリックします。
すると、Windows 10の左下のアイコン(名前はスタートメニューボタンなのかも)のところから「Ubuntu」を起動できるようになるのです。
UbuntuアイコンをクリックするとUbuntuが起動すると期待しましたが、初回の起動時だと、まだインストールが完了していないようです。Wait a few minutes...です。
とうとう最後のプロセスです。画面4行目で「Enter new UNIX username」とユーザ名を求められるので、タイプします。また、続く2行でパスワードを求められますのでそれぞれタイプします。そして待ちに待った「Installation successful!」の文字!うれしいですね!
gccを使えるようにする
今回、WSLを使う一番の目的は、gccを使うことです。私は大学でC言語の授業をしていますが、大学のPC環境でCプログラミングの実習をするには、VM Ware Playerの中でUbuntuを使うか、WindowsでVisual Studio Communityを使うかあたりの選択になります。前者は時々フリーズしたり、作ったプログラムを保存できなかったりと不具合があり、後者は戦車で駄菓子屋に買い物に行くかのような状況です。学生さん1人に割り当てられたドライブ容量は半年もしないうちにいっぱいになってしまいます。
いずれにしても、ピカピカの一年生にとってはどちらもハードルが高いことを実感しています。大学のWindows 7もいずれ10にUpgradeしてもらえるはずだから、その際はWSL環境がいいんじゃないかなと思ったりしています。
そんなことが脳裏をよぎる中、gccとコマンドを打ってみました。そのときのスクリーンショットが無いのですが、確か "Command not found" のようなつれない表示になったような気がします。
Ubuntuですと "sudo apt install build-essential" というコマンドでCの開発環境をインストールできるようですが、しかし、これが errorを吐きまくってうまくいきませんでした。ここでWSLの夢は露と消えたかと思いました。
困ったときは、ggるですね。すると「Windows Subsystem for Linuxをインストールしてみよう!」という記事が見つかり、そこにバッチリ書いてありました。どうもありがとうございます!
デフォルトでは海外サーバーにリポジトリのデータを取りに行ってしまいます。これだと通信速度が遅くなってしまうので、日本のサーバーに切り替えます。次のコマンドを入力して、切り替えてください。
sudo sed -i -e 's%http://.*.ubuntu.com%http://ftp.jaist.ac.jp/pub/Linux%g' /etc/apt/sources.list
そして、上述の
sudo apt install build-essential
を実行しましたところ、gccがインストールされました。gcc --version コマンドで gccのバージョンが確認できます(gccが使えるようになったということです)。
試しに、"Hello, World!"と画面表示するサンプルプログラムをviで作成し、hello.cというファイル名で保存しました。gccコマンドでhello.cをコンパイルしてみると、見事に実行ファイル a.out が作成されました。a.outを実行してみると、これまた見事に "Hello, World!"と画面に表示されました。Cの実習用環境はこれで十分そうですね。
あれ、Windows側にはどうやって ソースファイル(ここではhello.c)を渡したらいいんだろう? ...
Windowsとファイルを共有する方法 (追記)
WSL環境のUbuntuを操作している状態で、現在のディレクトリ(カレントディレクトリ)をExplorerで開くことができます。次のコマンドを実行し、数秒待つとExplorerが起動します。(ExplorerはInternet Explorerのことではありませんから。念のため。)
explorer.exe .
コマンドを実行し、Explorerが起動した様子が下のスクリーンショットです。Explorerを使えば、ソースファイル(ここでは hello.c)をWindows側の適当なテキストエディタで開いて編集できますね。
実際に、Windows側のテキストエディタでhello.cを編集し「Good-bye!!」と表示できるようにしてみました。コンパイルして実行すると、「Good-bye!!」も表示できています。
これでWindows 10をC言語の実習環境として使えますね。よかった(^.^)ホッ..
この記事が気に入ったらサポートをしてみませんか?