WSL (Windows Subsystem for Linux) 向け Linux ディストリビューションである WLinux が Pengwin に改称 されて久しいのですが、ようやっと移行できました。
TL;DR
- Windows Store から Pengwin をインストール
-
~/.bashrc
にumask 0022
を追記 $ pengwin-setup
- 気に入ったら
CMD> wslconfig /s WLinux
で規定のディストリビューションにする
注意:有料 (2,350円 (税込)) です。
WLinux 時代に購入した方は、そのライセンスを引き継ぐことができます。
以上です。
Pengwin のインストール
Microsoft Store からのインストールになります。 pengwin
で検索すれば見つかるはずです。
今回私が使うのは Pengwin の方です。こちらは Debian/Ubuntu ベースです。
ちなみに、 Pengwin 企業 は RHEL(Red Hat Enterprise Linux) ベースのものです。
※この "企業" というのはいかがなものか...
ChangeLog は Microsoft Store のページがわかりやすい
ブログはあります が、いろんな情報が混ざっててわかりづらいという辛さがあります。
インストール先
Windows OS 上では %localappdata%\Packages\WhitewaterFoundryLtd.Co.**\
に入ります。
rootfs はこのディレクトリの下の LocalState\rootfs\
です。
ちなみに Ubuntu 18.04 なら %localappdata%\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_**
に入ります。
ここを直接いじることは無いと思いますが、覚えておいて損はありませんので掲載しておきます。
WLinux からのアップグレード方法
WLinux からのアップグレード方法が見つけられませんでした。そのため、私は再インストールをしました。
アンインストールされると、全ての環境が削除されます。 .ssh
といったファイルは必ず別のところに移行してからアンインストールしてください。
具体的には Windows の設定からアンインストールし、その後 Microsoft Store からインストールし直すというものです。
%localappdata%\Packages\WhitewaterFoundryLtd.Co.**\
ディレクトリが残っている場合、Microsoft Store からのインストール時に失敗することがあります。
その場合は手動で同ディレクトリを削除(もしくはフォルダ名変更)をした後に、再度 Microsoft Store からインストールしてください。
ちなみに WLinux のまま使い続けると、apt のリポジトリ URL の一部が無くなったりと、運用に支障が出ますので早く移行することをお勧めします。
~/.bashrc
に umask
は必ず指定しよう
Pengwin の umask のデフォルトは 0000
です。
即ち、誰でも読めるディレクトリやファイルを作成されちゃいます。あとで修正するのが極めて面倒です。
~/.bashrc
のどこかに umask 0022
と書いておきましょう。
pengwin-setup コマンド
Pengwin のインストール後に LANG やスクリプト系言語のセットアップだけでなく、特定のディレクトリをカレントにして起動できるシェル拡張 "Open with WLinux" をインストールしてくれる、対話形式のセットアッパーが pengwin-setup
です。
WLinux では wlinux-setup
というコマンドで提供されていましたが、項目数などがかなり強化されています。
$ pengwin-setup
以下のようなダイアログが表示されます。 スペースキーで選択してから [OK] を選択していけば、環境がインストールされるというものです。
EDITOR
GUI
MAINTENANCE
PROGRAMMING
SERVICES
SETTINGS
TOOLS
UNINSTALL
インストールしておいた方がいい便利なもの
SERVICES -> KEYCHAIN
keychain をインストールしてくれます。ssh-add や ssh-agent の手間を減らしてくれます。
初回起動時に対象の秘密鍵のパスフレーズを入力すれば、ssh-agent が立ち上がるようになります。
※ すでに ssh-agent が立ち上がっていればパスフレーズ不要となります
この keychain は /etc/profile.d/keychain.sh
で起動されるようになっているので、読み込む秘密鍵の追加/変更や表示の抑制といったオプションを変更したい場合は、このファイルを編集してください。
ちなみに、それまでは...
以下のような涙ぐましいスクリプトを書いていましたが、もはやオサラバです。
if [ -z "$(pgrep ssh-agent)" ]; then
rm -rf /tmp/ssh-*
eval $(ssh-agent -s) > /dev/null
else
export SSH_AGENT_PID=$(pgrep ssh-agent)
export SSH_AUTH_SOCK=$(find /tmp/ssh-* -name agent.*)
fi
if [ "$(ssh-add -l)" == "The agent has no identities." ]; then
ssh-add $HOME/.ssh/id_rsa
fi
プログラム言語まわり
PROGRAMING -> PYTHONPI
選択肢が2つあります。
- Python 3.7 + pyenv
- Python 3.7 + IDLE + pip (一つ目の選択で [NO] を選ぶと表示される)
私は環境分離に venv を利用するので pip が入るほうを選びました。(venv もインストールされます。しかし IDLE は不要なんですが...)
pip
は ~/.local/bin/pip
にインストールされます。そのため、以下2点に注意です。
-
$HOME/.local/bin
へ PATH を通すこと -
pip
を実行時は--user
を付けること
$ pip install --user awscli
単純に pip install
してしまうと /usr/local/*
に配置しようと試みますが失敗します。
PROGRAMING -> RUBY
選択肢が2つあります。
- rbenv を使った Ruby のインストール
- Rails + RubyGem (一つ目の選択で [NO] を選ぶと表示される)
私は rbenv を利用するので1つ目を選びました。(2番目がどうなるかは試していません)
pengwin-setup で指定される Ruby は 2.5 系とちょっと古めです。新しいのが欲しい方は、全てのインストールが終わった後に各自で rbenv install 2.6.3
とするなりしてください。
WLinux で起こっていた不具合は解消されていました
libssl-dev libreadline-dev zlib1g-dev といったライブラリが無いために wlinux-setup では rbenv install が失敗していましたが、pengwin-setup では解消しています。
気に入ったら既定にしましょう
cmd.exe から wslconfig
で既定のディストリビューションが設定できます。
> wslconfig /l
Windows Subsystem for Linux ディストリビューション:
Ubuntu (既定)
WLinux
> wslconfig /s WLinux
> wslconfig /l
Windows Subsystem for Linux ディストリビューション:
WLinux (既定)
Ubuntu
なぜか名称がそのまま WLinux なのですが、気にしないでおきましょう。
あとがき
Terminal には Windows Terminal をぜひ!
カスタマイズや普段使いをするための情報源についても書きました → Windows Terminal (Preview) のカスタマイズで役に立った情報源 (2019年11月)
EoT