LoginSignup
26
34

More than 5 years have passed since last update.

【永遠にWIP】Bash on Ubuntu on Windows の 環境整備等あれこれ Ver. 20170505

Last updated at Posted at 2017-04-07

はじめに

  • Bash on Ubuntu on Windowsの、Creators Updateでの強化点&新機能【Insiders Preview版】 - Build Insider
  • 上記記事を見ててBoWのインストール、アンインストールを繰り返したり、環境を作り直したりしまくったので、ここにメモを残しておく。
  • Versionは Windows 10 Pro ver 1703(Creators Update) 適用後です
  • 前述記事で「Bash on Ubuntu on Windows」をBoWと略していたので、この記事も同じように略していく
  • BoWの下にあるシステムを「Windows Subsystem for Linux (beta)」といいますが、これもこの記事内は「WSL」と表記します(一部題名とか除く)

Windows Subsystem for Linux (beta) の有効化

  • 「コントロールパネル>プログラムと機能>Windowsの機能の有効化または無効化」を選び
    • 「Windows Subsystem for Linux (beta)」を有効化しておく。これをしておかないと、BoWを入れる下地ができないので…
    • 最初の1回は、有効化と同時にBoWのインストールが走るはずです

BoW 自体 の インストール

  • powershell上で下記コマンドを実行(コマンドプロンプトでもいいかもしれない)
lxrun /install
  • インストール時にデフォルトユーザ名とそのパスワードの設定を求められるので適宜設定する。
  • 下記のようなログが出る
PS> lxrun /install
-- ベータ機能 --
これにより Windows に Ubuntu がインストールされます。Ubuntu は Canonical によって配布される製品であり、
次のサイトに示される条件に基づいてライセンスされています。
https://aka.ms/uowterms

続行するには、"y" を入力してください: y
Windows ストアからダウンロードしています... 100%
ファイル システムを展開しています。この処理には数分かかります...
Ubuntu のロケールを Windows のロケール (ja-JP) と一致するように設定しますか?
既定のロケールは en_US です。
続行するには、"y" を入力してください: y
既定の UNIX ユーザー アカウントを作成してください。ユーザー名は、Windows のユーザー名と一致する必要はありません。
詳細: https://aka.ms/wslusers を参照してください
新しい UNIX ユーザー名を入力してください: hoge
新しい UNIX パスワードを入力してください:
新しい UNIX パスワードを再入力してください:
passwd: password updated successfully
インストールが正常に終了しました
PS>

BoW環境整備系

  • BoW自体をインストールしたら、WinキーからBoWを立ち上げるか、コマンドプロンプト等から bash コマンドでログインして使用する。

ノンパス設定 sudo

  • 取りあえずはsudoのノンパスで使えるようにsudoers に追加する
sudo bash -c "echo \"[デフォルトユーザ名] ALL=(root) NOPASSWD: ALL\" >> /etc/sudoers.d/nonpass_sudo"
sudo chmod 0440 /etc/sudoers.d/nonpass_sudo
sudo visudo -c
  • 最後の sudo visudo -c にてエラーが出なければOK。壊れたらインストールからやり直し

git 導入

sudo apt-get install git -y
  • BoW for Creators update だとデフォルトで git 2.7.4 が入っている模様だが、後述の手順で必須になりそうなので念の為。

pyenvやrbenvを導入して言語環境を整える

  • ベースは Ubuntu 16.04 の為、python系やruby系のツールを利用しようとすると一部バージョン問題が出てきてしまう。その対処として pyenv rbenv を導入して補完していく。

pyenv の install

  • pyenvは pyenv-installer という公式インストールスクリプトが存在するので活用する
  • apt-getで入れている依存ライブラリは適当です。後から増減するかもしれません
sudo apt-get install -y gcc make openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev
curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
vim ~/.bashrc
  • 下記を ~/.bashrc に追記する
PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
  • 設定が終わったら、実際に pyenv を動かしてみる
pyenv install 2.7.13
pyenv global 2.7.13

rbenvの install

  • rbenvも rbenv-installer という公式インストールスクリプトが存在するので活用する
  • apt-getで入れている依存ライブラリは適当です。後から増減するかもしれません
sudo apt-get install -y gcc make autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-installer | bash
vim ~/.bashrc
  • 下記を ~/.bashrc に追記する
PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
  • 設定が終わったら、実際に rbenv を動かしてみる
rbenv install 2.3.4
rbenv global 2.3.4
mkdir -p "$(rbenv root)/plugins"
git clone https://github.com/rkh/rbenv-update.git "$(rbenv root)/plugins/rbenv-update"

アプリケーション/ミドルウェアインストール

ansible

  • ansibleの動作にはpyenvとは別にどうやらシステム自体にもpythonが入っていることが必須の模様
    • 無いと 'MODULE FAILURE' といわれてこけました
  • アプリケーションのインストール後は pyenv rehash を忘れずに。
sudo apt-get install -y python
sudo apt-get install -y libffi-dev
pip install ansible
pyenv rehash
  • 確認コマンド
ansible all -i localhost, -c local -a 'uname -a'

localhost | SUCCESS | rc=0 >>                                                                            
Linux xxxxx 4.4.0-43-Microsoft #1-Microsoft Wed Dec 31 14:42:53 PST 2014 x86_64 x86_64 x86_64 GNU/Linux  

nginx

  • ごく普通に。
sudo apt-get install nginx
sudo service start nginx

curl http://127.0.0.1/

mysql

  • ごく普通に…
sudo apt-get install mysql-server
sudo service mysql start

mysql -u root -p -h localhost

scala/sbt

  • scala は どこかの誰かさんがscalaインストールshをgistに上げていたので、そのまま使う
  • scala インストール前にjdkがいるようなので、インストールsh実行の前に入れておく
sudo apt-get install -y openjdk-9

curl -L https://gist.githubusercontent.com/DanielGGordon/160c32f42f233a4025ce33ee5f4a40f2/raw/3f85a9f5dcbfe5d86552f3ca495b420bc7e5e6d3/updateScalaVersion | sudo bash
  • sbt は公式に ubuntuでのインストール手順があるので従う
echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823
sudo apt-get update
sudo apt-get install sbt

jenkins

  • 公式にubuntuでのインストール方法が記述されているので従う
  • 多分、別途jdkいりますが、それは各自入れましょう
wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins

sudo service jenkins start

curl http://127.0.0.1:8080/login

zsh

  • 普通にapt-getで入りはする。zshの設定は多種多様にわたるような上、自分自身zsh詳しくないので、その後の設定は他の方に任せます
sudo apt-get install -y zsh

その他BoW上で動作する/しない アプリケーションとか

  • apt経由で入れるdocker
    • インストール自体は成功して sudo service docker start が通ったように 見える が、実際は動いてなさそう
    • 素直にdocker for windowsへGoですかね…
  • ssh

    • リモートへのsshは普通に通る ssh -T git@github.com は普通に通りました
    • localhostへのsshはなぜか失敗する
      • sudo service ssh start してsshd上げても変わらず。何かあるんだろうか?
  • その他メジャーアプリ試されたいが、あまり興味なし

    • tmux、apache、postgresql、nodejs あたり?

BoW自体のアンインストール

  • powershell上で下記コマンドを実行(コマンドプロンプトでもいいかもしれない)
lxrun /uninstall /full
  • 下記のようなログが出る
PS> lxrun /uninstall /full
これにより Windows 上の Ubuntu がアンインストールされます。
Ubuntu 環境およびすべての変更内容、新しいアプリケーション、およびユーザー データが削除されます。
続行するには、"y" を入力してください: y
アンインストールしています...
PS>

所感

  • 「BoW自体を壊しても、WSL内のBoW自身の全消去→再構築だけで対応可能」 って実はものすごい事なのではないでしょうか

    • 「あー、ローカル環境汚くしたのできれいにしなきゃな…」というのが気軽にできるのはBoWやWSLの強みなのかなーと、要・構築スクリプトではあるのですが。
  • あと、MSの言い分をまともに受けるのであれば、「各ミドルウェアの導入手順」については「純粋なUbuntu 16.04のOS上」でもほぼ同じ手順で導入可能 な筈。実際、いくつかのインストール手順は「 Ubuntu上で実行されること前提のスクリプト 」を使ってインストールを行っています。

  • あとは WindowsアプリやIDE(IntelliJとか)との連携がどれだけスムーズ か、によってWSLやBoWの評価が変わりそうです。この辺は開発体験の向上や作業効率の向上に直結しますからね。その辺はまだ Beta 状態なので結論出すにはまだ早いんですが。

  • でもMacOSのTerminalから展開されるローカル環境に勝てるか?と言われると、微妙な感じは受けるので、マカーの皆さんはまだMacOSで頑張る でいいんじゃないかな!

参考記事まとめ

26
34
0

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
26
34