はじめに
10年以上使ってきた Windows + Cygwin 環境から,Windows System for Linux (WSL) に移行した私的備忘録です.設定の概要は以下の通り.
- Windows 10 April Update 2018 環境です.
- ターミナルとして mintty (wsltty) を利用します.
- cygstart に相当するコマンドを導入します.
- X11 環境は導入しません.CUI なものだけです.
- TeXLive を導入します.
なお,cygstart は MacOS の open と同様のコマンドです.詳しくは
辺りをご覧ください.
1. WSL の有効化
Windows の設定 ⇒ アプリ ⇒ 関連設定:プログラムと機能 ⇒ Windows 機能の有効化または無効化 と辿り,Windows Subsystem for Linux にチェックを入れて導入します.インストール後に再起動を要求されます.
画面イメージ等は
の前半部分を参照してください.なお,本導入記録の前半部分はほぼ上のページそのままです.
2. Ubuntu の導入
Microsoft Store の検索で「WSL」と指定することで,
C:\ Linux on Windows? 本当です。
って出てくるので「アプリを入手する」をクリックすると,いまのところ,
- Ubuntu
- openSUSE Leap 42
- SUSE Linux Enterprise Server
- Debian GNU/Linux
- Kali Linux
が出てきます.あれ,Fedora はまだなんですね.RedHat 系の方が好きなんですが…….シェアが最も高いのはたぶん Ubuntu なんだろうなぁ……,クライアントとしての利用だしなぁ……と諦めて,今回は Ubuntu を使うことにします.
Ubuntu を選択して「入手」を選ぶと,あっという間にスタートに Ubuntu が現れます.
3. Ubuntu の起動
スタートメニューから Ubuntu を起動すると,コマンドプロンプトが起動し,初期設定が始まるのですが,これがしばらくかかります.終了後ユーザー名とIDを効かれるので,適当にこれを入力すると,プロンプトが表示され,準備完了です.
う~ん.楽ですねぇ…….
4. TimeZone の変更
初期状態だと(たぶん)UTC なので,TimeZone を Tokyo に変更します.Ubuntu のお作法だと,
$ sudo dpkg-reconfigure tzdata
でいけるみたいですね.
5. アップデート
$ sudo apt update $ sudo apt upgrade -y $ sudo apt autoremove
のようにして,Ubuntu に導入されている各パッケージを最新のものに更新します.かなり大量にアップデートがかかるので,結構時間がかかります.コーヒーでも飲みながら待つことにします.
6. Ubuntu.ja リポジトリの追加
$ wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add - $ wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add - $ sudo wget https://www.ubuntulinux.jp/sources.list.d/xenial.list -O /etc/apt/sources.list.d/ubuntu-ja.list $ sudo apt update $ sudo apt upgrade $ sudo apt autoremove
Ubuntu を日本語環境で使うには Ubuntu Japanese Team の成果物に頼る方が簡単そうなので,そのリポジトリを導入しておきます.なお,Ubuntu Japanese Team のページは以下の通りです.
6. Zsh のインストール
Zsh は初期状態だと入ってない(tmux は入ってるのに……)ので,別にインストールしないといけません.
$ sudo apt install zsh -y
また,Zsh の便利な設定をまとめて導入できる Prezto ど導入します.WSL への導入は初めてなので,色々個人的なカスタマイズをしたものをいきなり導入せず,まずはオリジナルのものを入れてみました.
$ zsh This is the Z Shell configuration function for new users, zsh-newuser-install. You are seeing this message because you have no zsh startup files (the files .zshenv, .zprofile, .zshrc, .zlogin in the directory ~). This function can help you with a few settings that should make your use of the shell easier. You can: (q) Quit and do nothing. The function will be run again next time. (0) Exit, creating the file ~/.zshrc containing just a comment. That will prevent this function being run again. (1) Continue to the main menu. (2) Populate your ~/.zshrc with the configuration recommended by the system administrator and exit (you will need to edit the file by hand, if so desired). --- Type one of the keys in parentheses ---q $ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto" $ setopt EXTENDED_GLOB for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}" done $ exit $ zsh
とすると,きちんと動いてくれているみたい.でも,コマンドプロンプトのままだと使いにくいので,次は mintty を WSL 向けにパッケージングした wsltty を導入します.
7. wsltty の導入
配布元は
です.現在の最新は wsltty-1.8.5.2-install.exe みたいですね.ダウンロードして,ダブルクリックするだけでインストールが終わります.インストール先は,
C:\Users\(username)\AppData\Local\wsltty
で,設定関係は
C:\Users\(username)\AppData\Roaming\wsltty
みたい.デスクトップとスタートメニューに起動用のアイコンができますが,このまま起動するとログインシェルが Bash のままなので,Zsh をログインシェルにするために,スタートメニューの
WSL Terminal 右クリック ⇒ その他 ⇒ ファイルの場所を開く ⇒ WSL Termial ショートカットを右クリック ⇒ プロパティ ⇒ リンク先
を以下の様に変更します(/bin/zsh -l を後ろに追加するだけ.wsltty の Git ページを参照).
%LOCALAPPDATA%\wsltty\bin\mintty.exe --WSL= --configdir="%APPDATA%\wsltty" -~ /bin/zsh -l
これで Zsh が WSL Terminal から起動してくれますが,念のため(今のところ意味はなさそうですが),Unix の古来からのお作法に従い,
$ chsh Password: Changing the login shell for (username) Enter the new value, or press ENTER for the default Login Shell [/bin/bash]:/bin/zsh
としておきます.
なお,Ubuntu 再インストールのときは,Powershell から
$ wslconfig /setdefault Ubuntu
のようにしないと,wsltty から Ubuntu につながらないことに注意が必要です.また,フォントの設定等は以下をご覧ください.
8. mintty のタイトルバー表示の改善
上記の通りで mintty 自体はまぁ問題なく使えるのですが,タイトルバーの表示が
/bin/wslbridge --distro-grid (5591cbfe-f246-4ccb-aac5-......
みたいな感じになってあまりうれしくありません.それで,これを今いるフォルダ名になるように改変することにしました.いろいろ考えた結果,~/.zshrc に以下を付け加えることにしました.項番6で導入した prezto 前提であることに御注意下さい.
# Customize to your needs... if [[ $(uname -a) == Linux*Microsoft* ]]; then # Display Current Directory in WSL Terminal Titlebar. # added by hyt on March 19, 2018 #echo -ne "\e]0; $(prompt-pwd)\007" #chpwd(){echo -ne "\e]0; $(prompt-pwd)\007"} echo -ne "\e]0; $PWD\007" chpwd(){echo -ne "\e]0; $PWD\007"} fi
幾つか備忘録として記しておくと,
- \e]0; ***\007 でタイトルバーの表示が *** に変わる.
- prezto だと,chpwd(){***} はカレントディレクトリが変更されたら実行される関数です.⇒ precmd とか preexec でも良いのですが,これだとコマンド実行されるごとに実行されます(時間とか表示させたければこっちの方がよい).
- chpwd だと起動したてのときにタイトルバーの表示が変わらないので前に echo ***
- prompt-pwd は zprezto がコマンドプロンプト用のカレントディレクトリ文字列を得るために内部で使う関数です.コマンドプロンプトに表示されるものと同じものが欲しければこれにすればよいみたい.
でしょうか.
9. 日本語ロケールの導入
この日本語ロケールは Ubuntu.ja リポジトリを追加してないと導入できません.
$ sudo apt install -y language-pack-ja $ sudo update-locale LANG=ja_JP.UTF-8
10. 細かなもののインストール
日常的に使いそうな小さなコマンドを入れていきます.何と!
peco が動くようになってます!
確か Windows 10 1709 だと以下の通り peco は動かなかった記憶があるのですが……,1803 では動いています.嬉しい誤算です.
WSL で peco (termbox-go) が動かないのはこれが原因。
— mattn (@mattn_jp) August 15, 2017
$ sudo apt install jpegoptim $ sudo apt install kpcli $ sudo apt install nkf $ sudo apt install make $ sudo apt install lv $ sudo apt install unzip $ cd /usr/local/src $ sudo git clone https://github.com/jarun/googler $ sudo chown hyt.hyt googler $ cd googler $ sudo make install $ wget https://github.com/monochromegane/the_platinum_searcher/releases/download/v2.1.5/pt_linux_amd64.tar.gz $ tar -zxvf pt_linux_amd64.tar.gz $ cd pt_linux_amd64 $ wget https://github.com/peco/peco/releases/download/v0.5.3/peco_linux_amd64.tar.gz $ tar -zxvf peco_linux_amd64.tar.gz $ sudo cp peco_linux_amd64/peco /usr/local/bin/. $ sudo cp pt /usr/local/bin/. $ cd /usr/local/bin;sudo ln -s peco percol $ sudo apt install python3-pip $ sudo python3 -m pip install --upgrade pip $ sudo apt install imagemagick $ sudo -H pip3 install youtube-dl
11. .tmux.conf の準備
ターミナル・マルチプレクサ tmux を自分好みのものになるよう編集します.詳しくは
辺りをご覧ください.なお,tmux の元サイトは,
です.
$ vi ~/.tmux.conf set-window-option -g mode-keys vi set-window-option -g window-status-format " #I: #W " set-option -g default-shell /bin/zsh set-option -g status off set-option -g status-bg "colour238" set-option -g status-fg "colour255" set-option -g status-right " | %m/%d %H:%M:%S" bind b split-window\ "tmux lsw | percol --initial-index $(tmux lsw | awk '/active.$/\ {print NR-1}') | cut -d':' -f 1 | tr -d '\n' |\ xargs -0 tmux select-window -t" bind B split-window\ "tmux ls | percol --initial-index\ $(tmux ls | awk \"/^$(tmux display-message -p '#{session_name}'):/\ {print NR-1}\") | cut -d':' -f 1 | tr -d '\n' |\ xargs -0 tmux switch-client -t" bind-key M-s \ if-shell "tmux show-options -g status | grep off"\ "set-option -g status on" "set-option -g status off" bind-key M-m \ if-shell "tmux show-options -g mouse | grep off"\ "set-option -g mouse on" "set-option -g mouse off"
12. Windows フォントの導入
Ubuntu から Windows のフォントを利用できるようリンクを張ります.私の場合は Ghostscript から利用できるようにすることが目的です.
# sudo ln -s /mnt/c/Windows/Fonts /usr/share/fonts/windows # sudo fc-cache -fv
13. texlive の導入
本当は Ubuntu のパッケージから導入したかったのですが,実際に入れてみると,何と!
に記したバグもちバージョンです.仕方ないので TexLive を通常のやり方でインストールしました.
$ wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz $ tar xvf install-tl-unx.tar.gz $ cd install-tl-20180303 $ sudo ./install-tl $ sudo /usr/local/texlive/????/bin/*/tlmgr path add $ sudo ln -s /mnt/c/Windows/Fonts /usr/local/texlive/texmf-local/fonts/truetype $ sudo mktexlsr
14. ls の色
WSL の場合も cygwin と同様に Windows と Linux のパーミッションの両立に気を遣う必要があります.WSL 管理下のファイルは問題ないのですが,Windows 管理下のファイルを WSL から ls すると標準状態だととても見辛いです.この問題を緩和するために,ls の色を solarized color theme に変更します.
$ cd /usr/local/src $ sudo git clone https://github.com/seebi/dircolors-solarized $ sudo chown -R hyt.hyt dircolors-solarized $ ln -s /usr/local/src/dircolors-solarized/dircolors.ansi-dark ~/.dircolors
まぁ,完全に満足とは言いませんが,これだけでもだいぶ違和感がなくなります.
15. Open コマンドの追加
Cygwin の cygstart (MacOS だと open)コマンドは私の場合手放せないので,似たようなコマンドを探してみたところ,作っておられる方がおられました.
有り難く利用させてもらうことにします.
$ cd /usr/local/src $ sudo git clone https://github.com/smzht/wsl-utils $ sudo chown -R hyt.hyt wsl-utils $ cd wsl-utils $ sudo cp sglstart wslcommon wslinit wslln wslpath wslsc wslstart /usr/local/bin/. $ cd /usr/local/bin $ sudo chmod +x sglstart wslinit wslpath wslstart wslcommon wslln wslsc
おわりに
その他,チョコチョコと設定を変更したところや,追加したパッケージ等ありますが,大枠はこんな感じです.私の場合は,ここまでの設定で,Windows + Cygwin 環境だったときとほぼ違和感のない形になりました.
Cygwin では使えていた /dev/audio 辺り(多分.mpg123 とかコンパイルして使えてた)が使えないのだけが大きな違いですが,これは Windows 版の mpg123 を使えば良いだけですから,大した問題ではありません.それよりもほとんどのものを標準的なインターフェースでアップデート可能であること,さらに,Windows 環境が全く汚れないなどのメリットが大きく,多分もう Cygwin に戻ることはないと思います.
それにしても peco が使えるようになっているとは…….嬉しい誤算でした!
以上!