Help us understand the problem. What is going on with this article?

Windows Subsystem for Linuxを設定する

前書き

Windows Subsystem for Linux(WSL)はとてもありがたい。Bush on Ubuntu on Windowsが発表されたときから、Windows(というよりMicrosoft office)で仕事せざるを得ない私にとっては衝撃的なシステムだった。WSL2のニュースも出ており、積極的な姿勢に期待している。WSLの初期設定に関する記事は山のようにあるが、それぞれの目的にあわせて作業が異なるので、自分むけのメモを残しておく。

WSLが最初に出たときから、X Windows Systemが使えたらな、と思っていた。自分は昔からLinuxのEmacs+YaTeXで文章を書くことに慣れており、Windows環境に移らなければならない事情ができてからずっと困っていた。WindowsのEmacsはどうも使いづらい。AtomやVS Codeでなんかで誤魔化してきた。LaTeXの執筆+コンパイルはCLI環境でもできるが、最終的なPDFなんかはX上のビューアーで見たい。というわけでとりあえずWSLでX Window Systemを動かす。最終ゴールはEmacsでLaTeX執筆環境を整えること。

前提

Windows 10 version 1709以降?WSLが公式にサポートされているバージョン。Linuxの操作に関しては、CLIをそれなりに使えるぐらい。コマンドやオプションを覚えてないけどググれば解決できるぐらい。ArchWikiを読んで必要な設定やコマンドがわかるぐらい。

WSLの導入

これは簡単だし紹介記事もたくさんある。例えばWindows 10でLinuxプログラムを利用可能にするWSLをインストールする(バージョン1803以降対応版)などがわかりやすい。
1. 「設定」の「アプリと機能」、関連設定の「プログラムと機能」からコントロールパネルに飛ぶ。コントロールパネルにすぐアクセスできるなら少し楽。
2. 「Windows機能の有効化または無効化」から「Windows Subsystem for Linux」にチェックを入れてOKをクリック。
3. 再起動する。
4. Microsoft Storeで「wsl」なり「linux」なりで検索すればWSLに対応したディストリビューションが見つかるので好みのものを入れる。Ubuntuの場合、複数のLTSが提供されていることがあるが、バージョンアップしても使いたいので標準の「Ubuntu」を選択することをお勧めする。
5. インストールが済めば、あとは通常のアプリケーションと同様にスタートメニューから選択するだけ。コンソールが現われるのでユーザー名などを設定すれば使えるようになる。
6. sudo apt update && sudo apt upgradeで最新版にアップデートしておく。

LTSのアップグレードをしたい場合

記事執筆時のLTSは18.04。WSLのUbuntuを選んでインストールした場合も18.04がインストールされる。自分は以前WSLをインストールしたまま放置していた時期があり、16.04が入っているPCもあったので18.04にアップグレードした。また、将来新しいバージョンへ移りたいかもしれないのでメモしておく。
apt upgradeで最新版になっているとしてupdate-manager-coreをインストールし、/etc/update-manager/release-upgradesを開いてPrompt=ltsとする。下記の参照先によると標準でここまでできているようだし、実際そうだった。

sudo do-release-upgrade -d

を実行して待つ。sshdについて聞かれたり古いパッケージを削除したりと1時間程度時間がかかる。最後にWSLを一旦終了する。

参照

WSL版Ubuntuのアップグレード~16.04から18.04へ~

ホームディレクトリはどこに

WSLは
%AppDataLocal%\Packages\CanonicalGroupLimited.UbuntuonWindows_[適当な文字列?]\LocalState\rootfs
にrootディレクトリ、その下.\home\[username]にhomeディレクトリがある。また、WindowsのCドライブ以下はWSLから見ると
/mnt/c/
にあるため、ユーザーのホームは
/mnt/c/Users/[username]
にある。これは不便だが、WindowsとLinuxのファイルパーミッションの扱いや今後のアップデートでどうなるかわからないことを考えると、これをいじるのは賢明ではない。なので、頻繁にアクセスしたいフォルダにはシンボリックリンクを貼るのがよい。例えばユーザーホームのドキュメントなら
ln -s /mnt/c/Users/[username]/Documents ~/Documents
などしておく。

パーミッションの設定

2020.04.22追記
/mnt/c以下のディレクトリ(シンボリックリンクを貼ったディレクトリ)のパーミッションは一定のルールがあって、WSL側でchmodしても反映されない。ツールによっては適切にパーミッションを設定しておかないといけない場合があり、シンボリックリンクのディレクトリ下のファイルが扱えなくなるかもしれない。マウントしているファイルのパーミッションをWindows側ではメタ情報として保持させる方法がある。WSL側で/etc/wsl.confというファイルをつくり

[automount]
options = "metadata,umask=22,fmask=111"

と書く。この設定後は、WSLを閉じる。Windowsも再起動。あるいは再起動しなくてもWindowsサービス一覧からLxssManagerを再起動でもいいらしい。

.sshの共有

2020.04.22追記
Windows 10は2018年の春のアップデートからOpenSSHを組み込んでいるので、Windowsのホームユーザーのディレクトリに.sshをつくってsshしてもいい。WSLでもこの.sshを共有できると嬉しいので、
ln -s /mnt/c/Users/[username]/.ssh ~/.ssh
としておいた。パーミッションの設定は.sshディレクトリを700、ディレクトリ以下のconfigや秘密鍵は600にしておく。

参照

Windows 10のWindows Subsystem for Linux(WSL)を日常的に活用する

ビープ音を止める

デフォルトではシェルからビープ音が鳴るので止める
/etc/inputrcを開き、set bell-style noneのコメントを無効にする。

参照

azukipochette's weblog: Ubuntu (Ubuntu 18.04 with WSL) でビープ音を止める

shellをfishにする

fishをインストールするだけなら簡単。fish - ArchWikiによると、Arch Linuxではデフォルトのシェルをfishにすることは推奨されていない。Ubuntuでも同じような状況だと思うので、ArchWikiに従って.bashrcexec fishを追記する。
fishのプロンプトや色設定はfish_configでウェブブラウザをつかって対話的に可能だし、様々なプラグインがあるので便利にカスタマイズできる。後でX windows systemが使えるようにしてからブラウザでカスタマイズしようと思っているので今は何もしない。

参照

将来予定のカスタマイズも含め
fish shellが結構良かった話
WSLでお手軽にオシャレfish環境構築
Windows10で快適なfishシェル環境構築
fish - ArchWiki

bashとの違い

fishだと&&||といったコマンドが使えず、それぞれ; and; orを使う。また少し調べた範囲では$_に相当するコマンドはないらしい。fish 3.0からは&&||にも対応(どちらの表記も可)だそうだが、現時点のUbutuntu 18.04は2.7.1だった。

参照

全訳!fishシェル普及計画
全訳!fishシェル普及計画: and:他シェルの「&&」相当!直前コマンドが正常終了時に実行
全訳!fishシェル普及計画: or:【要注意】fishでは「||」じゃなくて「or」を使うんよ
fishシェルでmkdir hoge && cd $_したかったけど面倒だった

fish 3を入れる

2020.03.26
しばらくubuntu 18.04が提供するfishを使っていたが、やっぱり新しいバージョンが使いたくなった。
リポジトリを追加してインストールするだけ

sudo apt-add-repository ppa:fish-shell/release-3
sudo apt update
sudo apt install fish

これで上で書いた&&なんかも使える。

fishermanなど、カスタマイズに関することは別記事にしよう。

参照

“Fish shell maintainers” team
fish 3.0がやってきた

日本のリポジトリを追加

Ubuntuの日本語環境を整えるために、Japanese Teamのリポジトリを追加する。
LTS 18.04の場合

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/bionic.list -O /etc/apt/sources.list.d/ubuntu-ja.list
sudo apt update

また、パッケージリポジトリのミラーサーバーも国内のものに換えておくとメンテナンス時間が減るかもしれない。
Ubuntu Japanese Teamがメンテナンスしているのは富山大学のサーバーらしい(http://ubuntutym.u-toyama.ac.jp/ubuntu/)。
Ubuntu: 日本国内のダウンロードサイト
更新したらもちろんapt updateapt upgradeを実行しておく。

メモ

今回は手で更新したが、sedを使って変更すると楽。作業の前にバックアップはとっておく。
Windows Subsystem for LinuxでUbuntuによると、jp.archive.ubuntu.comが上記富山大学のエイリアスだそうなので、このサイトにあるsedをそのまま実行してもいい。将来富山大学のサーバーじゃなくなってもこのエイリアスは活きてそうなので、こっちのほうがいいかもしれない。

sudo sed -i.bak 's/\/archive\.ubuntu/\/jp\.archive\.ubuntu/' /etc/apt/sources.list

参照

Ubuntuの日本語環境
Windows Subsystem for LinuxでUbuntu
apt-getの利用リポジトリを日本サーバーに変更する

日本語環境設定(メモ)

自分の場合は英語環境のまま(LANG=en_US.UTF8)のままでもいいのでやらなかったが、日本語環境のほうがよい場合もあるのでメモを残しておく。
日本語パッケージをインストール

sudo apt install language-pack-ja

日本語ロケールにする。

sudo update-locale LANG=ja_JP.UTF-8

WSLを再起動して、日本語になったことを確認。

echo $LANG

あるいは

locale
LANG=ja_JP.UTF-8
LANGUAGE=
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"

ちなみに、英語環境に戻したい場合は以下

sudo update-locale LANG=en_US.UTF8

タイムゾーンを変更

sudo dpkg-reconfigure tzdata

からアジア -> 東京を選択。

manコマンドを日本語化したい場合は以下

sudo apt install manpages-ja manpages-ja-dev

参照

WSLのUbuntu環境を日本語化する
【Windows10/WSL Ubuntu】日本語のロケールとタイムゾーンの変更
Windows Subsystem for Linux(WSL)に「Ubuntu 18.04 TLS」を入れたときに最初にしたこと
Windows Subsystem for LinuxでUbuntu

X Windows Systemを導入する

Windows上で動くXのクライアントは有料・無料でいくつかある。現時点の無料ソフトではVcXsrvがお勧めらしいので使ってみた。
1. VcXsrv公式サイトに行って最新版をダウンロード&インストール。
2. 初回起動時はWindowsのファイアウォールに関する注意が出る。外部と通信しないので、「キャンセル」でいい。
2. Multiple Window、no clientで起動する。ここは個人の好みでもいい。

起動はスタートメニューの[VcXsrv] -> [XLanch]。ショートカットをつくる、タスクバーにピン留めするなどご自由に。

WSL側の設定

  1. X window Sytemを揃える。テスト用にx11-appsをインストールするぐらいでもいいし、GnomeやLXDEなど好きなデスクトップ環境をインストールしておいてもいい。
  2. WSLコンソールでexport DISPLAY=:0.0でVcXsrvに接続する。
  3. xeyesのような簡単なソフトを起動してテストする。もちろんlxpanelなどでもいい。
  4. 恒久的に使うには、.bashrcに設定を書いておいた方が楽。fishを起動する前がいいのかな。

参照

WSL上にXサーバをインストールしてGUIを実現する(VcXsrv編)
WSLでwindows上にLinuxのGUI環境を作る[メモ]
Ubuntu 18.04のWSL上へのインストールと初期設定
X Window on WSL (Ubuntu) on Windows 10 Pro
Windows Subsystem for Linux + X Windowを1.024倍くらい使いこなすための方法

必要なソフトウェアインストール

最新のEmacs

Ubuntu公式が配布するよりも新しいバージョン(執筆時は26)がほしい場合はレポジトリを追加してインストールする。

sudo add-apt-repository ppa:kelleyk/emacs
sudo apt update
sudo apt install emacs26

TeX Live

Ubuntu公式が配布するTeX関連パッケージでもよいのだが、やはりTeX Liveのほうが最新の技術が反映されている。例えばTeX Live 2020からは原ノ味フォントがデフォルトになったり、LuaTeXやXeTeXなど最近のTeX業界は動きがあるようなので注意が必要になる。新しいから良いとも古い方が安心するとも言い切れないので好みだと思う。

というわけで、TeX Liveを公式からインストールする。wgetでネットベースのインストーラーを取得して解凍、ディレクトリへ移動。

wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
tar xvf install-tl-unx.tar.gz
cd install-tl-*

X Windowを動かしていればオプション-gui、動かしていなければオプション-no-guiでやる。リポジトリも国内のものに変える。

sudo ./intall-tl -no-gui -repository http://ftp.jaist.ac.jp/pub/CTAN/systems/texlive/tlnet/

インストール時の設定オプションがでてくるので適当に選ぶ。特別な理由がなければデフォルトのままでいいと思う。Iを入力してインストール開始。

あとは待つだけ。アップデートが必要な場合は

sudo tlmgr update --self --all

アップデートによるトラブルはsudo tlmgr restore (パッケージ名) (リビジョン番号)で戻せる。/usr/local/texlive/????/tlpkg/backupsにバックアップが保存されている。

なお、TeX Liveは毎年のリリースごとに新しくインストールフォルダをつくるため、毎年インストールが必要になる。また、不要になった過去のパッケージも自分で消す必要がある。

参照

TeX Live: TeX Wiki
Installing TeX Live over the Internet: TeX Live

Ubuntu公式配布のバージョンを使う場合

余計なことはせずにapt installする。

sudo apt install texlive-lang-japanese texlive-latex-extra texlive-latex-recommended texlive-luatex

それ以外のソフトウェア導入

個々のソフトウェアについては各人の必要に応じて入れればよい。細かい話は次の記事に書くが、最後に備忘録として少し残す。
EmacsでLaTeXを執筆すること前提にすると、スペルチェックが欲しい。

sudo apt install cmigemo aspell

X Windows System 導入後ならばブラウザなどあるかもしれない。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

参照

How to Install GNU Emacs 26.1 in Ubuntu 18.04, 16.04, 18.10 - UbuntuHandbook
Ubuntu Linux 18.04 LTSで、Google Chromeをapt repositoryからインストールする

続く

まだまだ日本語入力関係やEmacsの設定などやることがあるが長くなってきたのでここで一旦終わり。


続き(2019.09.15)
Windows Subsystem for Linuxを設定する 2 - Qiita

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away