Open15

WSL2環境を作り直すときのメモ

ピン留めされたアイテム
namikinamiki

やったことまとめ(2023-02-01)

  • fish + starshipのシェル環境構築 ※細かい設定はしない
  • Homebrewとfisherだけで環境構築
  • GithubへのSSH接続でWindows側の認証情報をWSL側でも使う
  • VoltaでNode.js入れた

追記1(2023-02-27)

  • tmux入れて初期設定を追加

追記2(2023-03-07)

  • UbuntuにDockerをインストール(Stable Diffusionで遊びたい)
  • stable-diffusion-webuiを動作させる
namikinamiki

パッケージ更新とHomebrew導入

パッケージの更新

sudo apt update
sudo apt upgrade -y

Homebrewのインストール

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

終わり次第 next step の内容を実行

brew doctor

上記を実行して問題がなければ終わり。

namikinamiki

fish

fishを導入

brew install fish
which fish | sudo tee -a /etc/shells
chsh -s /home/linuxbrew/.linuxbrew/bin/fish
vim ~/.config/fish/config.fish
if status is-interactive
    # Commands to run in interactive sessions can go here
    # PATH
    eval (/home/linuxbrew/.linuxbrew/bin/brew shellenv) # 追加
end

シェルを再起動してbrew -vが動作すればOK!
(非表示コメントにzshのセットアップ手順があるけど、全角入力できなくなったのでfishに移行)

Hidden comment
namikinamiki

Starship

Starshipを導入

brew install starship
starship init fish | source # ~/.config/fish/config.fishに追記
namikinamiki

その他便利なやつらを導入

ターミナル周り

brew install ghq
brew install fzf
brew install hub
brew install tig
brew install commitizen 
fisher install decors/fish-ghq
fisher install jethrokuan/z

tigで日本語が文字化けするのでconfig.fishに以下を追記しておく

export LC_CTYPE=en_US.UTF-8
export LC_ALL=en_US.UTF-8

hubとfzfを使ってローカルリポジトリからGithubに飛べるように

functions/__ghq_browse_github
function __ghq_browse_github -d "Browse remote repository on github"
  ghq list | fzf | read -l repo_path
  set -l repo_name (string split -m1 "/" $repo_path)[2]
  hub browse $repo_name
end
alias gbg='__ghq_browse_github'

https://blog.nijohando.jp/post/ghq-fish-hub/

tigの初期設定とcommitizenとの連携

.tigrc
#--------------------------------------------------------------#
##        tig settings                                        ##
#--------------------------------------------------------------#
set main-view  = id:yes date:default,local=yes author commit-title:graph=yes,refs=yes,overflow=false
set blame-view = date:default id:yes,color line-number:yes,interval=1 text
set pager-view = text
set stage-view = text
set log-view   = text
set blob-view  = text
set diff-view  = text:yes,commit-title-overflow=no
set tab-size = 2
set ignore-case = true
set split-view-width = 80%
set split-view-height = 80%
set diff-options = -m --first-parent
set refresh-mode = auto
color cursor black white bold

#--------------------------------------------------------------#
##        key bind                                            ##
#--------------------------------------------------------------#
# Pで現在のブランチへpush
bind generic P ?@!git push origin %(repo:head)

# そのほかのGitコマンド
bind generic F ?@!git fetch %(remote)
bind generic U ?@!git pull %(remote)

# Dでstatus viewのuntracked fileを削除できるようにする
bind status D ?@rm %(file)

# コミットにcommitizenを使用する
bind status  C  !git cz c
namikinamiki

Git周りの設定

brewで入れ直す

sudo apt purge git
brew install git

Windows側のssh設定をWSL2上でも使いたい

brew install keychain
sudo vim /etc/wsl.conf
# wsl.conf追記ここから
[automount] 
options = "metadata"
# wsl.conf追記ここまで
chmod 600 /mnt/c/User/ユーザー名/.ssh/秘密鍵ファイル名
eval (ssh-agent -c)
ssh-add /mnt/c/User/ユーザー名/.ssh/秘密鍵ファイル名
ssh -T git@github.com  # 接続できればOK!

以下の記事通りに実行したらうまくいった!感謝~🤝
https://zenn.dev/keijiek/scraps/b03e1804d15f99

毎回eval (ssh-agent -c) & ssh-add しない

wsl --shutdown # powershell
vim ~/.config/fish/config.fish
# 追記ここから
/usr/bin/keychain --nogui /mnt/c/Users/ユーザ名/.ssh/秘密鍵名
source $HOME/.keychain/(hostname)-fish
# 追記ここまで
ssh -T git@github.com # 接続できればOK!
namikinamiki

終わり

ひとまず今やりたい開発作業ができるところまで作業を実施。
fishよくわかってないけどデフォルトでも補完が効いて使いやすいのでオススメ!
設定ファイルいじったり追加で便利なもの見つけたら追記します~🙌

ここから設定を取得するとデフォルト以外のコマンドも補完が効くらしい…。
https://github.com/fish-shell/fish-shell/tree/master/share/completions

namikinamiki

追記1 tmuxを入れる

brew install tmux
vim ~/.tmux.conf
設定ファイルの内容
.tmux.conf
#################################  KEY BINDING  #################################
# prefixキーをC-qに変更
set -g prefix C-q

# C-bのキーバインドを解除
unbind C-b

# prefixキー + '|' でペインを縦分割する
bind | split-window -h

# prefixキー + '-' でペインを縦分割する
bind - split-window -v

# vimのキーバインドでペインを移動する
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

# ペインのサイズ変更
bind -r H resize-pane -L 3
bind -r J resize-pane -D 3
bind -r K resize-pane -U 3
bind -r L resize-pane -R 3

# Ctrl-o でペインをローテーションしながら移動
bind -n C-o select-pane -t :.+

# prefixキー + 'v' でコピーモードを始める
bind -T copy-mode-vi v send -X begin-selection

# コピーモードでvimキーバインドを使う
setw -g mode-keys vi

#################################  Color  #################################

# default statusbar colors
set-option -g status-style bg=colour235,fg=colour136,default

# default window title colors
set-window-option -g window-status-style fg=colour244,bg=default,dim

# active window title colors
set-window-option -g window-status-current-style fg=colour166,bg=default,bright

# pane border
set-option -g pane-border-style fg=colour240
set-option -g pane-active-border-style fg=colour166

# message text
set-option -g message-style bg=colour235,fg=colour166

# pane number display
set-option -g display-panes-active-colour colour33 #blue
set-option -g display-panes-colour colour166 #orange

# clock
set-window-option -g clock-mode-colour colour64 #green

# bell
set-window-option -g window-status-bell-style fg=black,bg=red #base02, red

#################################  OTHERS  #################################
# 番号基準値を変更
set-option -g base-index 1
set-option -g pane-base-index 1

# マウス操作を有効にする
set-option -g mouse on
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"
namikinamiki

追記2 Ubuntu環境内にDockerをインストールする

公式の手順通り追加

https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository

自動起動の設定を追加

sudo usermod -aG docker ユーザー名
# 初期設定だとsudo visudoしたときにnanoが立ち上がるのでvimに変更
sudo update-alternatives --set editor /usr/bin/vim.basic
sudo visudo
visudo
# 末尾に追加
%docker ALL=(ALL)  NOPASSWD: /usr/sbin/service docker start
config.fish
if test (service docker status | awk '{print $4}') = "not"
  sudo service docker start > /dev/null
end
namikinamiki

追記3 Stable Diffusionを使えるようにする

Docker を使用した NVIDIA CUDA のセットアップ

基本的には公式の手順通り進める。

# 最初のこれがfishじゃエラーになるけど修正方法わからないので os-release 見て
# set で distribution に値入れた
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)

# NVIDIA Container Toolkitの動作確認
nvidia-container-cli info

https://learn.microsoft.com/en-us/windows/wsl/tutorials/gpu-compute#setting-up-nvidia-cuda-with-docker
完了したらwslをシャットダウンして再起動。

stable-diffusionをインストール

便利なのがあったのでこれを使ってみる
https://github.com/AbdBarho/stable-diffusion-webui-docker

ghq get https://github.com/AbdBarho/stable-diffusion-webui-docker
docker compose --profile download up --build
docker compose --profile auto up --build

起動後アクセスして表示されれば完了~!
http://localhost:7860/

Hidden comment