#初めに
初めて記事を投稿する。
Qiita記事作成に当たり、このサイトとこのサイトを参考にした。
wslの環境構築について、別の大学にある同じ研究室の後輩に教えるために作成した。
ちょくちょく内容を追加していくと思う。
そのため、本筋からずれることが多々ある。
ワタシハリナックスチョットデキナイので、嘘をつくことも多々ある。
指摘してくださると助かる。
後輩へ。分からないことがあればググれ。
君の分からない問題は、世界の誰かがすでに突破している問題だ。ググれば出る。
それと、ここで質問するとき本名は言わないでくれ。
Nortonなどのセキュリティソフトを入れている人は、ファイアウォール関連の問題が発生する可能性があるため、追記から読んだほうがいいと思う。
#目次
0. wslについて
0. wslのインストール
0. pythonのhello world
0. 追記
#wslについて
wsl(Windows Subsystem for Linux)は、文字通り、windowsマシン上で、linuxを動かすためのシステム。
windowsマシンから見て、別のマシン(仮想マシン)扱いになっている。
ROSなども普通に動く。
かなり便利。
####不便な点
wsl2(2021/04/19現在wsl最新)では、GUI関連がサポートされていない。そのため、自分でxserverなどを介して、GUIを動かせるように設定しなければならない。
ipアドレスの扱いに癖があり、TCP/IPなどで、windowsとwsl_linuxで通信させたいとき、wsl_linux側からでは、"localhost"でwindows側にアクセスできない。
色々詰んだ時、__ファイアウォール関連が原因__だったことが結構多い。ファイアウォールの注意喚起が起きたときは、脳死でokを連打しないようによく読む癖をつけたほうが良い。
####linuxについて
linux(linux系OS)は、windowsOSやmacOSと同じOSの一種である。
様々な種類(ディストリビューション)があり、ubuntuなどが代表的である。
linuxは、その名から分かるように、Linus氏が作成したunix系OSである。(macOSもunix系。)
オープンソースなものが多く、開発ガチ勢が良く使用している(気がする)。
windows派 vs mac派 の宗教戦争をしている間に、「僕はlinux派~」と割り込むと、双方から嫌われる可能性があるので注意しよう。
ROS(Robot Operating System)は、基本的にlinux系OS上でしか動作しないので、ロボットの開発・制御をしたいなら、linux一択みたいな風潮はある(気がする)。
####macユーザーの後輩へ
macOSは、先に述べた通り、linux同様、unix系OSである。したがって、これから言うことは嘘であるが、macを使用しているのなら、とりあえず、以下に示すwslを用いたlinux環境の構築は、もうできているものとして考えてもよい。(pythonのhelloworldらへんから試してみてくれ。)
しかし、細かいところで仕様が違うところがあるので、問題が発生したら、その都度調べてくれ。僕はmacを使ってないからわからん。
ただ、macユーザーはかなりの数がいるので、もし問題にぶつかっても、同じ問題を解決している人がネット上にきっと存在する。安心していい。
もし、macだけどどうしてもlinuxで開発したいというのなら、"仮想マシン"や"デュアルブート"で検索してみたらよい。
#wslのインストール
基本的に、windows公式のここに従えばよい。
__上記サイトを読むことを強く推奨する__が、めんどくさい場合は、以下のコマンドを、powershell(管理者権限)で実行すればよい。
powershell(管理者権限)で実行するとは、スタートボタン左クリックで出てくる"Windows PowerShell(管理者)"をクリックすると出てくる青い画面上で、コマンドを実行する、という意味である。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
上記コマンド実行後windowsマシン(パソコン本体)を再起動
その後、Microsoft StoreでLinux ディストリビューション(ubuntuのことと理解してよい。)をインストールする。
自分は、"ubuntu"を使用する。
Microsoft Storeの、"Ubuntu 20.04 LTS"(2021/04/19現在最新版)にした。
そして、起動する。この時、ubuntuのアカウントを作成する。
追記;2021/05/09
自作PCなどで環境構築している場合は、BIOSから、"Intel Virtualization Technology"の部分を有効にしないと、正しく動作しない場合があるらしい。
最後に、以下のコマンドを、同様にpowershell(管理者権限)で実行
wsl --set-default-version 2
wslのインストールはここで終わり。
以下確認
wsl -l -v
で
NAME STATE VERSION
* Ubuntu Running 2
のようになっていればよい。(stateは、別にRunningじゃなくてもよい。)
これで、windows上のターミナル(コマンドプロンプトでも、power shellでもどっちでもいい)で、"wsl"と入力すれば、ubuntuが動く。
最初にwslを起動するときは、起動に少し時間がかかり、また、ubuntuアカウントを作成する必要がある(とても簡単)。このサイトを参考に行うとよい。
以降の環境構築において、windows上の作業なのか、ubuntu上の作業なのかを、意識して作業するべき。
####便利ツール
以下のツールのインストールを強く勧める。
######windows terminal
Microsoft Storeで、"windows terminal"と検索すれば出る。
超便利なターミナル。
######Visual Studio Code (vsc)
エディタ。エディタは、各宗教にお任せするが、wsl+vscは良い。
公式サイトでインストールできる。
このサイトで、vscを入れるときの詳しい手順(必要なvscの拡張機能など)が説明されている。
vscをubuntu上で使うときは、リモートでwslにつないでいる扱いになっており、windowsアプデの後などに、参照パスが切れて開けなくなることがある。その時は、一回、windows側でvscを開き、そこから、wsl上のファイルを開けば、参照パスが通り、以降、wsl上でも開くようになる。
#pythonのhello world
"hello world"とは、プログラミング界隈におけるの"チュートリアル"の意味。
python(python3)をwsl上にインストールして、実際にコードを書いてみるところまでする。
この作業は、すべて、wsl上(ubuntu上)で行う。windows上ではないことを意識して行うように。
他の作業は、wslとwindowsの両方で作業が必要になることが多い。
作業場所は、自分で"workspace"などの名前のディレクトリを作成して、その中で行うのがマナーがいい。
ディレクトリの作成方法などの、__linuxコマンド__は、自分で調べて、使えるようになっておくべき。
以下のコマンドをwsl上で実行する。(コマンドは1行ずつね。)
コマンド間の日本語は、読まんでもいい。
sudo apt update
sudo apt upgrade
"sudo"で始まるコマンドは、"管理者権限で実行"みたいな意味。
"ほんとに実行しますか?"と聞かれるので、"y"(yesの意味)と打てばよい。
プログラムの世界では、祈ることが非常に重要視される。このおまじないも、祈りの1つ。
この2つのコマンドは、定期的に行っていいと思う。
sudo apt install -y python3
sudo apt install -y python3-pip
sudo apt install -y python3-dev
"-y"は、毎回、"y"って手打ちするのがだるいからつけただけ。
これから、色々なpythonパッケージをインストールすることになると思う。
その時、"pip"でインストールしたら、python内部の"site-package"内部に、
それ以外の方法でインストールしたら、"dist-package"内部に格納されるらしい。
sudo apt install -y python3-numpy
NumPyは、pythonを超すごい電卓にしてくれるライブラリ。
pythonが人気な理由の1つが、NumPyを使用できるから。
なくても動くが、np(NumPyのこと)がないpythonって、正直、意味わからんから、最初に入れておく。
pip install pylint
pylintは、pythonの文法をチェックしてくれるやつ。
なくても動くけど、なかったら、vscに怒られるので、最初から入れておく。
以上で、pythonの環境構築終わり。
以下、"hello world"を出力するプログラムを作成し、動作確認。
適当な場所で、以下のコマンドを実行。
code helloworld.py
"code"コマンドは、vscで編集するときに使用する
以下vsc内部でhelloworld.pyを以下のように編集
print("hello world")
保存後、wsl上で、以下のコマンドを実行
python3 helloworld.py
以下のような出力になれば、動作確認成功。
hello world
また、pythonには__対話モード__というものも存在している。
調べることをおすすめする。
以上で、pythonのことを__完全に理解した__と思う。
次の環境構築はこちら
#追記
wslからvscを開くときについて、セキュリティソフトによって生じる諸問題:
通常、vscをwslから開けるようにするには、まず、windows側にvscをインストールして、vsc内部から"リモートエクスプローラー"経由で、wsl内部のファイルを開けば、wslとvscにパスが通り、以降wslからvscを起動できるようになる。
この時、ファイアウォールの設定で、vscのアクセスを許可をする必要があるが、Nortonなどのセキュリティソフトを入れている場合、ファイアウォールの設定を、自分でいじれないという問題が報告された。
現在(2021/05/09)、この問題は解決していない。
考えられる解決策は、初めてvscを起動するときに、ファイアウォールのウィンドウがポップアップしてくると思うが、その時に、脳死でokしまくるのではなく、そこで、ファイアウォールのアクセスを許可するように気を付ける、ということくらいしか考えられない。
もしくは、セキュリティソフトをアンインストールすること。(個人的には、過去、あるセキュリティソフトについて、ライセンスが残っている状態で、うざくなったため、アンインストールした経験があるが、これといった問題は発生していない。そのため推奨できる手段ではあるが、責任は取らない。)