cafegale(LeafCage備忘録)

LeafCage備忘録(はてなダイアリー)と統一しました。

WSL Ubuntu初期設定

WSL と Ubuntu 20.04 LTSWindows Terminal*1インストール済み
※WSL1とUbuntu 20.04の組み合わせは2020年6月現在問題が出る((今はまだ)WSL1にUbuntu 20.04を入れるな - Qiita)。
WSL2にするか、WSL1とUbuntu 18.04 LTS を採用してMicrosoftが問題に対応するまで待つか‥
→WSL1のままで、Ubuntu 18.04を使う方針にした。

WSL日本語化

sudo apt update  #「E: Unable to locate package」みたいなエラーが出るのはupdateされてないのが原因
sudo apt -y install language-pack-ja
sudo update-locale LANG=ja_JP.UTF8
sudo apt -y install manpages-ja manpages-ja-dev
sudo apt -y install zlib1g-dev  # pyenv install にはこれが必要

Windows10 WSL2にLinux居城を爆誕させる - Qiita

WSLの初期状態で新規作成されるファイル・ディレクトリのアクセス許可(パーミッション)が777なのを755(自分以外は書き込み禁止)に修正する

/etc/profile(bash用)(zshの場合は/etc/zshenv)に以下の記述を追記する。
/etc/profileはすでに存在しているので注意。

umask 022

WindowsTerminalの設定

terminal/UsingJsonSettings.md at master · microsoft/terminal · GitHub
"defaultProfile" キーを加え、Ubuntuのguid文字列を指定。ubuntuのプロファイルに"startingDirectory"キーを追加し、値を"//wsl$/Ubuntu-20.04/home/<ユーザ名>"にする(初期ディレクトリをホームディレクトリにするため。ちなみにこの値にはwindowsから見たパスしか指定できない)。

guidの確認はレジストリを見る?(本当にレジストリを見る方法しかないのか??これで合ってるのか???リセットしたデフォルトの setting.jsonに全然違う値がセットされるんだが)

追記:WindowsTerminalには見切りをつけました。

Homebrewインストール

$ sudo apt install build-essential  # gcc 入っていないとbrewで何かインストールするとき失敗するため。
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
brewトラブル:perlがインストールできない

※この問題はWSL1上のUbuntu 20.04において発生した。18.04なら発生しなかったのでそちらを勧める。
perlに依存しているフォーミュラが多いので、先にperlインストールコマンドを実行して、うまくインストールされるかどうか様子を見る。

$ brew install perl

==> /home/linuxbrew/.linuxbrew/Cellar/perl/5.30.2_1/bin/cpan -i XML::Parser

という行でしばらく経つとwindows ファイアウォールperlを受け入れてもいいのかどうか聞いてくるので許可を与える。
Ubuntu 20.04 のときにはこのあともずっと停止してインストールが進まなくなった。
このときには、一向に解決策が見えなかったので、別のLinuxでインストールした XML::Parser モジュールを持ってきて\\wsl$\Ubuntu\home\linuxbrew\.linuxbrew\Cellar\perl\5.30.2_1\lib\perl5\site_perl\5.30.2\x86_64-linux-thread-multi\XMLにコピーする*2という強引な解決手段を試みた。
一方、Ubuntu 18.04 だと最後までインストールを進めることができた。

zshのインストールとログインシェル化
brew install zsh

which zshzshのパスを確認してから

sudo sh -c "echo `which zsh` >> /etc/shells"

で最終行に zsh パスを追加。

chsh -s $(which zsh)
zinitの導入

GitHub - zdharma/zinit: Option 2 - Manual Installation

$ mkdir ~/.zinit
$ git clone https://github.com/zdharma/zinit.git ~/.zinit/bin

.zshrcに以下を追記

source ~/.zinit/bin/zinit.zsh
autoload -Uz _zinit
(( ${+_comps} )) && _comps[zinit]=_zinit

解説

brewでインストール
  • rbenv
  • pyenv, poetry
    • sudo apt install zlib1g-devでzlibを使えるようにしておかないと、pyenv installが失敗する。
  • go
  • ghq
  • ffmpeg, imagemagick
  • tmux
  • nvm
手動インストール

*1:Windows Terminalに見切りをつけた。理由はキーコンフィグにcmdやpowershellの貧弱な文字列操作をカバーするようなものがなかったこと、複雑な表示をするようなプログラムだと表示が崩れることから。

*2:cpanでインストールしたモジュールの位置は `perldoc -l モジュール名` でわかる。`perldoc -l XML::Parser`