9
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【2020年版】Tips:Macと近しい環境をWindows10で安直に実現する(wsl+vscode+homebrew)

Last updated at Posted at 2020-04-04

三行で。

Macと近しい環境をWindows10に安直に実現するには、2020年時点では、以下の手順がおすすめと考える。

  • wsl/wsl2を導入し、お好きなlinuxをwindows storeから導入する(以下では、ubuntu)。
  • vscodeに「Remote Development」を導入し、お好きなlinuxをディフォルトのシェルとする。
  • homebrewをlinuxに導入し、Macと同様にツール管理できるようにする。

以下、若干手抜きしているけれども、少なくともwsl2+ubuntuの場合は全手順を書いたと思うので、自宅でMac・職場でwindows(またはその逆)など、windowsに不慣れな方向けの記事だとしておく。あとついでに噂のvlangも入れている。

回線速度が遅くなければ、この手順は、30分から1時間で終えられるはず。
導入後の様子(左がvlang、右がgolang。vscode内で編集から実行まで完結できる。):
vgo.PNG

より入門的な記事の紹介

wslとwsl2で手順は同じ。wslの導入からvscodeのインストールまでについては以下の記事をご参考のこと(remote WSLの扱いのみ、私の場合は少し異なる)。
【Remote - WSL】VScodeの新機能でWSL上にローカル開発環境を構築する  ★1

その他、最近はwsl入門記事、vscode入門記事が多いので、適宜参考のこと。

本手法の良い点

利点1 windowsとmacで、vscode経由で概ね同じショートカットが使える
windowsの場合、ctrl+,で設定を開く、ctrl+@でシェルを開く。Macの場合はCommandキーですね。

利点2 windows OSに特殊な設定をせず環境が汚れにくい
共にwindowsから見て1アプリにすぎない、wsl向けlinuxアプリとvscodeを使うため、仮にlinux環境が汚れた場合でも、単にアプリをインストールし直すだけで良い。そのため、windows10でいろいろなアプリをインストールしまくっているとパフォーマンスが低下するといったこと(=>私は経験済)がほぼくなると期待する。

なお、私、最近wsl2を使い始めたところ:

> wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-18.04    Stopped         1
  Debian          Running         2

ubuntu前提の導入手順

① linuxアプリ(ubuntu)の導入

省略(上の★1の記事をご参考ください)

私の場合、以下のバージョンのubuntu :

/$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS"

なお、homebrewのためにシェルの設定(~/.bash*)を多少なりともいじくることになるので、以下の作業はlinuxの導入直後に行うのがお勧めだ。初めに必要なアップデートを行っておこう。
ubuntuでは:

sudo apt update
sudo apt upgrade

② vscodeのディフォルトシェルをlinuxに設定

a.Remote Development(リンク )をvscodeに導入

b.「設定」を開き、settings.jsonを編集する。

「設定」のショートカット : ctrl+,
デフォルトの起動するターミナルをdebianにする

settings.json
{
//お好みでフォント等の設定
    "editor.fontSize": 18,
    "editor.tabSize": 2,
    "editor.fontFamily": "'Fira Code' ",
    "workbench.statusBar.visible": false,
    "editor.minimap.enabled": false,
//自動保存の仕方を設定
        "files.autoSave": "onFocusChange",
// デフォルトの起動するターミナルをubuntuにする
    "terminal.integrated.shell.windows": "ubuntu.exe",
    "terminal.integrated.shellArgs.windows": ["run", "/bin/bash"],

//その他、拡張機能向け設定
  //例 ファイルをセーブするごとにコードを整えてくれる
    "editor.formatOnSave": false,
  //例 ペーストしたときにコードを整えてくれる
    "editor.formatOnPaste": true,
}

ここで、vscodeを再起動等する。

③ homebrewを①のlinuxにインストール

a.vscodeを立ち上げシェルに入り、homebrewを導入。

linuxのシェルは、ctrl+@で立ち上げる。curl経由で、homebrewを取得。

homebrewの起動準備

sudo apt install linuxbrew-wrapper build-essential

※(debian等の場合、現時点では、linuxbrew-wrapperがないので各自対応のこと。)

homebrew杯かのようにcurl経由で入れる。
※他OSでcurlがない人はあらかじめsudo apt install curl 等すること(委細は公式サイトを参照のこと)。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

b.brew doctorを参考に、不足点を補う

Macとlinux間の差異を吸収して、各種ツールの導入を可能とするhomebrewには、やはり、環境ごとの設定が付きまとう。環境の不備は、brew doctorすると指摘してくれる。便利。
wsl2上のubuntuでlinuxbrew-wrapperを入れた後にbrew doctorしてみたところ、以下を実行せよとのことなので素直に従い、シェルを再起動。

echo 'export PATH="/home/linuxbrew/.linuxbrew/bin:$PATH"' >> ~/.bash_profile

なお、初期設定のwsl上のubuntuでは、brewで入れたツールにパスを通すには、都度source ~/.bash_profileでアクセスする必要がある。

brewを普段使いするには、.bashrcの方に上の設定を追記するなどにしておこう。

echo 'export PATH="/home/linuxbrew/.linuxbrew/bin:$PATH"' >> ~/.bashrc

c.brewでツールを入れる

Go言語を入れる場合には、brew install goなど。
パスが通っていれば、ツールにアクセスできる。例:

$ go version
go version go1.14.1 linux/amd64

終わりに

apt経由で入れたパッケージを確認する

詳しくは、aptコマンドチートシートを参考に。

ここでは、sudo dpkg -lコマンドのみを紹介。
ずらーっと出てくるので、grepで絞り込む

~$ sudo dpkg -l | grep gcc
ii  gcc                            4:7.4.0-1ubuntu2.3                  amd64        GNU C compiler
ii  gcc-7                          7.5.0-3ubuntu1~18.04                amd64        GNU C compiler
ii  gcc-7-base:amd64               7.5.0-3ubuntu1~18.04                amd64        GCC, the GNU Compiler Collection (base package)
ii  gcc-8-base:amd64               8.4.0-1ubuntu1~18.04                amd64        GCC, the GNU Compiler Collection (base package)
ii  libgcc-7-dev:amd64             7.5.0-3ubuntu1~18.04                amd64        GCC support library (development files)
ii  libgcc1:amd64                  1:8.4.0-1ubuntu1~18.04              amd64        GCC support library
~$ sudo dpkg -l | grep make
ii  make                           4.1-9.1ubuntu1                      amd64        utility for directing compilation
ii  rake                           12.3.1-1ubuntu0.1                   all          ruby make-like utility
ii  xxd                            2:8.0.1453-1ubuntu1.3               amd64        tool to make (or reverse) a hex dump

お、gccとmakeがすでに入っているからvlangも入るね(=>これが書きたかった)。

vlangをついでにインストールしてみる(趣味)。

git clone https://github.com/vlang/v.git
cd v/
make

brew経由で入れたパッケージを確認する。

留意点

同様にcurl経由で入れるツールとの整合性確保には留意しよう。

私の場合、JVM言語の管理ツールsdkmanも使うのだが、homebrew->sdkmanの順に入れると問題は起きない。

確認:

 tail ~/.bashrc 
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi
export PATH="/home/linuxbrew/.linuxbrew/bin:$PATH"
#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="/home/k/.sdkman"
[[ -s "/home/k/.sdkman/bin/sdkman-init.sh" ]] && source "/home/k/.sdkman/bin/sdkman-init.sh"

おまけ

(お好みで)ホームフォルダを変更しておくのも良いかな、思ったのだが、、以下のやり方ではgitやsdkmanに影響が出る模様(sudoが要求される)。こちら良い方法をそのうち模索。

------たぶんダメなやり方-------
cドライブ直下のubuntu_homeディレクトリをubuntuのホームとする場合、初めにディレクトリを作成し.bashrcなどをコピーしておく。

mkdir /mnt/c/ubuntu_home
sudo cp -r ~/. /mnt/c/ubuntu_home

/etc/passwdにあるユーザー名(YourUserName)のホームフォルダを以下のように書き換える(sudo vi /etc/passwdなど)。

YourUserName:x:1000:1000:,,,:/mnt/c/ubuntu_home:/bin/bash

再起動後、cdして、ホームフォルダが変更されていることを確認しておく。

なお、変更後も、もとの/home/YourUserNameは存在する。
紛らわしい場合、/home/YourUserName配下のファイルをrm -f /home/YourUserName/*で消してしまっでも良い。

9
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?