雀巽の日記帳

雀巽が綴る日常の記録

Xubuntu on VMware on Windows 10 による開発環境構築

openSUSE を使いはじめて1年半近く立ちました。

OS 自体には概ね不満はなく、デザインとかはかなり気に入ってるのですが、 超が付くほどのライトユーザーなので、困ったときに情報が簡単に見つかる Ubuntu にしたいなぁと最近考えていました。

というわけで、openSUSE でも使っていた Xfce をデスクトップ環境に採用したオフィシャルフレーバーの Xubuntu を導入してみることにしました!

ユーザー数は正義。

インストール

オフィシャルサイトから ISO をダウンロード。

xubuntu.org

今回導入するのは Xubuntu 18.04 LTS

VMware にぶち込んだところ、なんと Easy Install なる機能が使えるとのこと。 そう!こういうユーザー数が多いからこそ受けれる恩恵、まさにこれを待っていたのだ!

ということで、指示に従いサクサクインストール。 注意すべき設定値は以下の通り。

  • Location: C:\Users\necojackarc\Virtual Machines\Xubuntu
  • Disk Capacity: Store virtual disk as a single file
  • Maximum disk size: 30 GB
  • Memory: 2GB
  • Processors: 2

何も考えずに進めると OneDrive 内に VM が作られる悲劇が起きるので注意すること。 また、デフォルトだとディスクを分割して保存しているようになっているが、パフォーマンスが落ちるのでモノファイルに変更。 メモリやプロセッサはハードウェアに合わせて適当に設定。

また、VMware Knowledge Base に従い VMware Tools の更新も行っておく。

キーリピート

デフォルトだと遅すぎて死ぬので、Settings -> Keyboard を開き、Typing Settings を以下の値に変更。

  • Repeat delay: 300
  • Repeat speed: 80

これでひとまず生命の危機は去りました。

自動ログイン

LightDM というものが使われているらしいので、LightDM - Debian Wiki に従い自動ログインを有効化。

sudo vi /etc/lightdm/lightdm.conf

で、設定ファイルを開き(デフォルトだとファイルはなかった)以下の設定を追加。

[Seat:*]
autologin-user=necojackarc
autologin-user-timeout=0

タイムゾーン

サーバーのタイムゾーンUTC+0 であることが多いので、開発環境もそれに合わせておく。

sudo dpkg-reconfigure tzdata

を実行し、None of the above -> UTC を選択。

日本語入力 (fcitx-mozc)

やはり日本語ネイティブとしては日本語入力ができたほうが便利なので、fcitx-mozc を導入しておく。

  1. Settings -> Language Support を開く
    • The language support is not installed completely と出たらとりあえず Install しておく (しておかないと Language Support を開くたびに出続ける)
  2. Install / Remove Languages -> Japanese にチェックを入れ Apply
    • Applyすると、デフォルトで fcitx と fcitx-mozc がインストールされる
  3. Settings -> Language Support を一旦閉じて再度開くと Keyboard input method system に fcitx が追加されているので、それを選択し Close し Xubuntu を再起動する
  4. Panel に Keyboard アイコンが出ているので、それをクリックし Configure を開く
  5. + を押し、Only Show Current Message のチェックを外すと Mozc が選択可能になるので、それを選択し OK をクリックし設定終了

これで Ctrl + Space で Mozc への切り替えが可能となり、日本語入力を使用できる。

CLI

面倒臭がりなので、デフォルトで入ってる Terminal Emulator を利用する。 Ctrl + Alt + T で起動できる。

  • Color: Edit -> Preferences... -> Colors -> Presets から Solarized (dark) を選択
    • Palette の一番左下の色を「Red:0, Green: 108, Blue: 136 (#006c88)」に変更 *1
      • Show bold text in bright colors は ON のまま
    • Custom colors は Cursor / Text selection / Bold text 全てにチェックを入れる
  • Font : Edit -> Preferences... -> Appearance-> Font から Monospace / Regular / 11 を選択

以下のとおり、開発に最低限必要なライブラリを導入する。

sudo apt update
sudo apt install exuberant-ctags git tmux xsel curl direnv dmenu

dmenu については、Win + Space で起動するように、以下の設定をしておく。

  • Menu -> Settings -> Settings Manager -> Keyboard -> Application Shortcuts -> Add を選択
    • Command に dmenu_run を入力
      • Command Shortcut として Win + Space (Super + Space) を入力

GitHub の設定を Generating a new SSH key and adding it to the ssh-agent - GitHub Docs に従い行う。 また、./ssh/config には以下のセクションを追加しておく。

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/github/id_rsa

設定がうまくいってるかの確認は $ ssh -T github.com を叩いてみると良い。

最後に、CLI の設定ファイル一式を以下に従い導入する。

github.com

Vim

Vim の最新版を公式推奨方法通りに、GitHub ソースからビルドする。 ソースは /usr/local/src に配置しておく。

cd /usr/local/src
sudo git clone https://github.com/vim/vim.git
cd vim/src
sudo make distclean  # if you build Vim before
sudo make
sudo make install

PythonLua などを有効化したい場合は configure を実行する必要があるが、 そういったプラグインは現状使用していないのでオフィシャルガイド通りで問題なかった。

ripgrep

便利高速 grep ツール。Vim からも利用しているので導入する。

github.com

最新バージョンの deb からインストール。

curl -LO https://github.com/BurntSushi/ripgrep/releases/download/0.8.1/ripgrep_0.8.1_amd64.deb
sudo dpkg -i ripgrep_0.8.1_amd64.deb
rm ripgrep_0.8.1_amd64.deb

Go

公式 に従い、Go を導入。GHQ の導入に必要です。

sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt update
sudo apt upgrade
sudo apt-get install golang-go

GHQ

Git リポジトリの管理はコレ無しじゃやっとれん!

github.com

go get github.com/motemen/ghq

fzf

GHQ と fzf を組み合わせるとメッチャ快適。ちなみにバックエンドは rg に差し替えてます。

github.com

git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install

インストール時に聞かれる設定に関しては、

  • fuzzy auto-completion: y
  • key bindings: y

と両方 ON にしておく。

tig

Git の CLI ツール。インタラクティブで使いやすい。

github.com

sudo apt install tig

rbenv & nodenv & pyenv

現状 Ruby & JavaScript がメインの開発言語の人なので、この2つは予め入れておく。 pyenv は AWS CLIPython で動作しているのでそれ用。

git clone https://github.com/rbenv/rbenv.git ~/.rbenv
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
sudo apt install autoconf bison build-essential libssl-dev libyaml-dev libreadline-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm5 libgdbm-dev

git clone https://github.com/nodenv/nodenv.git ~/.nodenv
git clone https://github.com/nodenv/node-build.git $(nodenv root)/plugins/node-build

git clone https://github.com/pyenv/pyenv.git ~/.pyenv
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv

AWS CLI

pyenv で最新の Python を入れ、それを global にしておく。

pyenv install -l # check the latest version
pyenv install 3.6.5
pyenv global 3.6.5
python -V # check if it's 3.6.5
pip install awscli --upgrade --user
aws --version

Yarn

公式サイトに従いインストール。

yarnpkg.com

オプションを付けないと nodejs も入ってくるけど、気にせず入れとく。

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update
sudo apt install yarn

PostgreSQL

Xubuntu 18.04 では PostgreSQL 10 がデフォルトになっているが、現状 9.6 を利用しているのでそちらを導入する。

askubuntu.com

基本的に PostgreSQL は backward-compatibility がしっかりしている(気がする)ので、最新版を入れておく。

sudo apt install postgresql

導入後の設定は Gist にまとめたのでそちらを参照のこと。

また、うっかり先に 10 をインストールしていた場合「Cannot connect to postgresql on port 5432」などのエラーが出るようになるので、その場合は一回スッキリ全部削除してから入れ直すとうまくいく。

sudo apt remove --purge postgresql*

askubuntu.com

Redis

Redis はそのまま入れただけだと、起動時に自動スタートしないので、以下を参考に導入する。

medium.com

sudo apt install redis-server
sudo update-rc.d redis-server enable
sudo update-rc.d redis-server defaults

確か update-rc.d は以前の名残で、現在はこちらを使っても systemctl にバイパスされるようになっていたはず。 再起動して redis-cli を叩いたところ、無事接続できたので気にせず update-rc.d で設定しておく。動くなら良し!

Google Chrome

Chrome を直接仮想マシンXubuntu から開くことは正直ないのですが、Ember のテストの実行などで必要だったりします。 というわけで、UbuntuUpdates.org の 3rd Party Repository: Google Chrome に従い導入しておきます。

wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - 
sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
sudo apt update 
sudo apt install google-chrome-stable

ネットワーク設定

Windows (Host) から Xubuntu (Guest) に localhost でアクセスできるよう、一部のポートをフォワードする。

詳細については openSUSE の設定について書いた以下の記事を参照のこと。

necojackarc.hatenablog.com

C:\ProgramData\VMware\vmnetdhcp.conf

# Xubuntu
host VMnet8 {
    hardware ethernet 00:0c:29:c6:4f:ec;
    fixed-address 192.168.221.130;
}

C:\ProgramData\VMware\vmnetnat.conf

[incomingtcp]
:
# Xubuntu
1080 = 192.168.221.130:1080
3000 = 192.168.221.130:3000
3002 = 192.168.221.130:3002
4200 = 192.168.221.130:4200
7020 = 192.168.221.130:7020
7357 = 192.168.221.130:7357
8080 = 192.168.221.130:8080

ファイアウォールの無効化

sudo ufw status verbose で確認したところ、元々 Status: inactive だったため設定不要。 仮に有効になっていた場合は、sudo ufw disable で無効化できるとのこと(未検証)。

おわりに

あとは各々のプロジェクトが動くようにそれようの設定を進めるだけ!以上!

しばらく触ってみて、やっぱり XubuntuUbuntu の知見がほぼそのまま使えるのが良いな、となりました。

ライトユーザーは、おとなしくメジャーなの使っておけば良いのだ!というお気持ちです。

楽ちんだー!