Windows で Linux 環境を作る
- 公開日:
- 更新日:
ソースは Windows で編集して、アセットコンパイル関連は Linux にやらせるという環境を作りました。
WSL のインストール
Microsoft の記事があるので、手動インストールの手順通りに実行します。
但し、Webpack の watch を実行する環境が欲しい場合は、手順 5 の「WSL 2 を既定のバージョンとして設定する」を飛ばしましょう。
また、手順 6 では Debian あたりをオススメします。この記事では Debian をインストールしている前提で説明しています。
Ubuntu は全部入りといった感じで、インストールすると 2.2GB ぐらいになるので重いです。最も軽いのは Alpine WSL(182MB ぐらい)ですが、nodebrew 入れても node 動かなかったので諦めました。
環境を整える
パッケージの最新化
$ sudo apt update
$ sudo apt upgrade
vi が使いにくい
sudo vi
したときに方向キーで移動したり、空行を削除したりといったことができないっぽいので、新たに vim をインストールします。
$ sudo apt install vim
インストールしたら、vi でも vim でも新たにインストールした vim が動きます。これで wsl.conf などの sudo しないと編集できないファイルでも、思い通りの挙動になります。
$ # どっちでもよい
$ sudo vi /etc/wsl.conf
$ sudo vim /etc/wsl.conf
自動マウントの無効化
デフォルトで C や D ドライブがマウントされますが、不要な場合は設定ファイルを作って無効化できます。
$ sudo vi /etc/wsl.conf
vim エディタが起動するので、i
キーを押して insert モードにします。
以下のように入力して、esc
キーで insert モードを終了し、:wq
と入力すると保存できます。
[automount]
enabled=false
wsl.conf の内容は WSL の再起動後に反映されるので、exit
でログアウトしてから、ディストリビューションを終了して再起動します。
$ exit
PS C:\Users\hoge> wsl --shutdown
PS C:\Users\hoge> wsl
これでログインしたときに居るフォルダが /mnt/c/Users/hoge$
ではなく ~$
になるかと思います。自動でドライブがマウントされていたフォルダは空になります。
$ ls /mnt/c
$ ls /mnt/d
Windows の環境変数を引き継がない
echo $PATH
してみると、Windows から引き継がれた環境変数 PATH の内容がずらずらと出てきます。自動マウントの無効化の要領で、wsl.conf ファイルに以下を追記すると、環境変数を引き継がなくなります。
[interop]
appendWindowsPath=false
Windows と Linux 間のファイル共有
HDD に新たにパーティションを切って、そのドライブとだけ Linux 環境からもアクセスできるようにします。/etc/fstab
というファイルに追記することで、好きなドライブを自動でマウントさせることができます。
fstab の設定を書くにあたって、自分の ID を調べておきます。
$ whoami
hoge
$ id hoge
uid=1000(hoge) gid=1000(hoge) 以下略
uid と gid を控えておいて、fstab に追記します。
$ vi /etc/fstab
$ # /etc/fstab に追記
W: /mnt/wsl drvfs defaults,metadata,uid=1000,gid=1000,umask=022 0 0
W: の部分は切ったパーティションのドライブレターに合わせます。マウント先のフォルダは勝手に作られていると思いますが、もしなければ作ります。
$ cd /mnt
$ ls
$ sudo mkdir wsl # wsl フォルダがなければ
これでディストリビューションを再起動すると、/mnt/wsl
に W ドライブの内容が確認できます。毎度 cd /mnt/wsl するのは怠いので、ホームフォルダにシンボリックリンクを作成しておくと便利です。
$ cd ~
$ ln -s /mnt/wsl wsl
消したくなったら unlink wsl
で消えます。
nodebrew のインストール
Debian には curl も wget もないようなので、前者をインストールします。
$ sudo apt install curl
nodebrew のリポジトリにインストール方法が載っているので、実行します。
$ curl -L git.io/nodebrew | perl - setup
export~ と表示されるので、実行します。その後に $PATH を見ると、.nodebrew を含んだパスが見られます。
$ export PATH=$HOME/.nodebrew/current/bin:$PATH
$ echo $PATH
/home/hoge/.nodebrew/current/bin: ...
一度 WSL を再起動すると、export したパスが消えてしまうので、nodebrew が実行できなくなってしまいます。
$ exit
PS C:\Users\hoge> wsl --shutdown
PS C:\Users\hoge> wsl
$ nodebrew
-bash: nodebrew: command not found
起動するたびにいちいち export ~ を実行するのは面倒なので、.profile というファイルに追記しておきます。するとシェルの起動時に勝手に実行してくれます。
$ cd ~
$ vi .profile
$ # .profile に追記
export PATH=$HOME/.nodebrew/current/bin:$PATH
nodebrew で node をインストール
安定版をインストールします。
$ nodebrew install stable
インストールしたら、使うバージョンを指定します。
$ nodebrew use stable
node, npm, npx のバージョンを表示してみます。この記事を書いた時点での安定版のバージョンなので、異なるバージョンが表示されるかもしれません。
$ node -v
v14.16.0
$ npm -v
6.14.11
$ npx -v
6.14.11
特定のバージョンをインストール
昔に作ったスクリプトを動かしたいなどの理由で、古いバージョンが必要になるかもしれません。その場合は、以下のコマンドでインストール可能なバージョンを調べます。
$ nodebrew ls-remote
バージョンを指定してインストールします。
$ nodebrew install v12 # v12 の最新(v12.21.0)をインストール
$ nodebrew install v12.20 # v12.20 の最新(v12.20.2)をインストール
$ nodebrew install v12.20.0 # v12.20.0 をインストール
nodebrew ls
でインストールしたバージョンを一覧表示できます。その中から使うバージョンを指定します。バージョン指定のルールはnodebrew install
と同じです。
$ nodebrew ls
v12.20.0
v12.20.2
v12.21.0
v14.16.0
current: v14.16.0
$ nodebrew use v12
use v12.21.0
参考文献
- https://taroosg.io/nodejs-install-at-ubuntu
- https://blog.orz.at/2018/08/05/windows10-wsl/
- https://www.atmarkit.co.jp/flinux/rensai/linuxtips/095uidgid.html
- https://www.atmarkit.co.jp/ait/articles/1806/08/news042.html
- https://gist.github.com/uta8a/db8b446f14e08ede7319dead6b7ef9ec
- https://did2memo.net/2015/12/23/ubuntu-vim-install/
- https://qiita.com/SUZUKI_Masaya/items/1fd9489e631c78e5b007
- https://uxmilk.jp/8318
- https://techracho.bpsinc.jp/hachi8833/2019_06_06/66396