Skip to content

Latest commit

 

History

History
350 lines (313 loc) · 12.4 KB

wsl2_setup.org

File metadata and controls

350 lines (313 loc) · 12.4 KB

WSL2 - Ubuntu 20.04 setup

事前準備

  • [ ] (再作成の場合)仮想マシンの登録解除
    wsl --list
    wsl --unregister Ubuntu
        
  • [ ] (WSL2内)プロキシの設定
    • 環境変数
      export HTTP_PROXY="http://id:pass@proxysrv:port/"
      export http_proxy=${HTTP_PROXY}
      export HTTPS_PROXY=${HTTP_PROXY}
      export https_proxy=${HTTPS_PROXY}
      export NO_PROXY=localhost,127.0.0.1
              
    • APT
      echo "Acquire::http::proxy \"${HTTP_PROXY}\";" | sudo tee -a /etc/apt/apt.conf > /dev/null
      echo "Acquire::https::proxy \"${HTTP_PROXY}\";" | sudo tee -a /etc/apt/apt.conf > /dev/null
              
    • Wget
      echo "http_proxy = ${HTTP_PROXY}" | sudo tee -a /etc/wgetrc > /dev/null
      echo "https_proxy = ${HTTP_PROXY}" | sudo tee -a /etc/wgetrc > /dev/null
              
    • snap
      sudo snap set system proxy.http=${HTTP_PROXY}
      sudo snap set system proxy.https=${HTTPS_PROXY}
              

create directries

mkdir -p ${HOME}/.bash_profile.d
mkdir -p ${HOME}/.bashrc.d
mkdir -p ${HOME}/.local/bin
mkdir -p ${HOME}/.local/share/tools
mkdir -p ${HOME}/.local/share/applications
mkdir -p ${HOME}/.local/share/bash-completion/completions
mkdir -p ${HOME}/.local/share/fonts
mkdir -p ${HOME}/bin

update & upgrade & install

sudo apt update &&
    sudo apt -y full-upgrade &&
    sudo apt -y install \
         bash-completion \
         build-essential \
         connect-proxy \
         curl \
         firefox \
         git \
         graphviz \
         gron \
         jq \
         language-pack-ja \
         libbz2-dev \
         libdb-dev \
         libffi-dev \
         libffi7 \
         libgdbm-dev \
         libgmp-dev \
         libgmp10 \
         liblzma-dev \
         libncurses-dev \
         libncurses5 \
         libncursesw5-dev \
         libpq-dev \
         libreadline-dev \
         libsqlite3-dev \
         libssl-dev \
         libtinfo5 \
         manpages-ja \
         manpages-ja-dev \
         ripgrep \
         tk-dev \
         tmux \
         unzip \
         uuid-dev \
         x11-xkb-utils \
         zip \
         zlib1g-dev

git

# git clone https://github.com/git/git.git
wget -q -O ${HOME}/.local/share/bash-completion/completions/git.bash https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
wget -q -O ${HOME}/.local/share/tools/git-prompt.sh                  https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh

GUI fonts

VER="LASB-230228"
wget -q -O /tmp/RictyShinDiminished-${VER}.zip https://www.structure.kais.kyoto-u.ac.jp/lab/RictyShinDiminished-${VER}.zip &&
    unzip -u -d /tmp /tmp/RictyShinDiminished-${VER}.zip &&
    cp -r /tmp/RictyShinDiminished-${VER} ${HOME}/.local/share/fonts/RictyShinDiminished

locale (Japan)

sudo update-locale LANG=ja_JP.utf8

timezone (Asia/Tokyo)

sudo ln -f -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

Japanize

sudo wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -P /etc/apt/trusted.gpg.d/ &&
    sudo wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -P /etc/apt/trusted.gpg.d/ &&
    sudo wget -q https://www.ubuntulinux.jp/sources.list.d/jammy.list -O /etc/apt/sources.list.d/ubuntu-ja.list &&
    sudo apt update &&
    sudo apt -y install ubuntu-defaults-ja

Docker CE

see below:

mkdir -p ${HOME}/.docker &&
    : > ${HOME}/.docker/config.json &&
    cat << EOF > ${HOME}/.docker/config.json
{
  "auths": {},
  "detachKeys": "ctrl-\\\\"
}
EOF

Dropbox

wget -q -O- https://www.dropbox.com/download?plat=lnx.x86_64 | tar xzvf - &&
    wget -O ${HOME}/bin/dropbox.py https://www.dropbox.com/download?dl=packages/dropbox.py &&
    chmod +x ${HOME}/bin/dropbox.py &&
    ${HOME}/bin/dropbox.py autostart y &&
    ${HOME}/bin/dropbox.py start &&
    : > ${HOME}/.bashrc.d/dropbox &&
    echo "dropbox.py status | grep -q \"Dropbox isn't running\!\" && dropbox.py start > /dev/null 2>&1" > ${HOME}/.bashrc.d/dropbox
dropbox.py status #=> 同期状況確認

ssh

mkdir ${HOME}/.ssh &&
    chmod 700 ${HOME}/.ssh &&
    cp ${HOME}/Dropbox/clients/dotssh/* ${HOME}/.ssh

dotfiles

git clone git@github.com:chupaaaaaaan/dotfiles.git ${HOME}/.dotfiles &&
    bash ${HOME}/.dotfiles/deploy.bash &&
    rm -f ${HOME}/.profile &&
    ln -s ${HOME}/.bash_profile ${HOME}/.profile &&
    . ${HOME}/.bash_profile

Node

wget -q -O- https://raw.githubusercontent.com/creationix/nvm/v0.39.1/install.sh | bash &&
    : > ${HOME}/.bashrc.d/node &&
    echo 'export NVM_DIR=$HOME/.nvm'                                       >> ${HOME}/.bashrc.d/node &&
    echo '[ -s "$NVM_DIR/nvm.sh" ] && . $NVM_DIR/nvm.sh'                   >> ${HOME}/.bashrc.d/node &&
    echo '[ -s "$NVM_DIR/bash_completion" ] && . $NVM_DIR/bash_completion' >> ${HOME}/.bashrc.d/node &&
    echo '[ "none" = $(nvm current) ] && nvm install node'                 >> ${HOME}/.bashrc.d/node &&
    . ${HOME}/.bashrc.d/node &&
    nvm install node --reinstall-packages-from=current &&
    nvm alias default node

Emacs 29

sudo add-apt-repository ppa:ubuntuhandbook1/emacs &&
    sudo apt update &&
    sudo apt -y install emacs emacs-el emacs-mozc cmake libtool-bin && #=> cmake and libtool-bin for vterm
    : > ${HOME}/.bashrc.d/emacs &&
    echo "alias emacs='setxkbmap -layout jp && XMODIFIERS=@im=none emacs >> /dev/null 2>&1 &'" > ${HOME}/.bashrc.d/emacs &&
    . ${HOME}/.bashrc.d/emacs
git clone git@github.com:chupaaaaaaan/emacs.d.git ${HOME}/.emacs.d &&
    mkdir -p ${HOME}/.local/elisp/local

Input method

sudo apt update &&
    sudo apt -y install fcitx5-mozc &&
    im-config -n fcitx5 &&
    : > ${HOME}/.bash_profile.d/fcitx5 &&
    echo 'export GTK_IM_MODULE=fcitx'                                     >> ${HOME}/.bash_profile.d/fcitx5 &&
    echo 'export QT_IM_MODULE=fcitx'                                      >> ${HOME}/.bash_profile.d/fcitx5 &&
    echo 'export XMODIFIERS=@im=fcitx'                                    >> ${HOME}/.bash_profile.d/fcitx5 &&
    echo 'export DefaultIMModule=fcitx'                                   >> ${HOME}/.bash_profile.d/fcitx5 &&
    echo '[ $SHLVL = 1 ] && fcitx5 --disable=wayland -d > /dev/null 2>&1' >> ${HOME}/.bash_profile.d/fcitx5 &&
    echo '[ $SHLVL = 1 ] && xset -r 49  > /dev/null 2>&1'                 >> ${HOME}/.bash_profile.d/fcitx5 &&
    echo 'export NO_AT_BRIDGE=1'                                          >> ${HOME}/.bash_profile.d/fcitx5 &&
    . ${HOME}/.bash_profile.d/fcitx5 &&
    fcitx5-configtool
  • 「入力メソッド」タブ
    • 「現在の入力メソッド」の一番上を、「キーボード - 日本語」にする
  • 「グローバルオプション」タブ
    • 「入力メソッドの切り換え」を無効化する
    • 「入力メソッドを有効にする」を「変換」キーにする
    • 「入力メソッドをオフにする」を「無変換」キーにする
    • 「Ctrl + Shift + S」のホットキーを無効化する

Haskell

wget -q -O- https://get-ghcup.haskell.org | sh &&
    : > ${HOME}/.bash_profile.d/ghcup &&
    echo '[ -f ${HOME}/.ghcup/env ] && . ${HOME}/.ghcup/env' >> ${HOME}/.bash_profile.d/ghcup &&
    . ${HOME}/.bash_profile.d/ghcup &&
    wget -q -O ${HOME}/.local/share/bash-completion/completions/ghcup.bash https://raw.githubusercontent.com/haskell/ghcup-hs/refs/heads/master/scripts/shell-completions/bash
: > ${HOME}/.bashrc.d/stack &&
    echo 'eval "$(stack --bash-completion-script stack)"' >> ${HOME}/.bashrc.d/stack &&
    . ${HOME}/.bashrc.d/stack &&
    stack config set install-ghc --global false &&
    stack config set  system-ghc --global true

Elm

npm install -g http-server elm elm-format elm-oracle elm-test @elm-tooling/elm-language-server

Intellij IDEA

sudo snap install intellij-idea-ultimate --classic &&
    : > ${HOME}/.bashrc.d/idea &&
    echo "alias idea='setxkbmap -layout jp && intellij-idea-ultimate >> /dev/null 2>&1 &'" > ${HOME}/.bashrc.d/idea &&
    . ${HOME}/.bashrc.d/idea

virtualbox/vagrant (only configuration for WSL2)

最初にVirtualbox 7.0とExtension Packを入れておく。 https://www.oracle.com/jp/virtualization/technologies/vm/downloads/virtualbox-downloads.html

wget -q -O- https://apt.releases.hashicorp.com/gpg | sudo apt-key add - &&
    sudo add-apt-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main" &&
    sudo apt update &&
    sudo apt -y install vagrant &&
    : > ${HOME}/.bash_profile.d/vagrant &&
    echo 'export VAGRANT_WSL_ENABLE_WINDOWS_ACCESS="1"'               >> ${HOME}/.bash_profile.d/vagrant &&
    echo 'export PATH="$PATH:/mnt/c/Program Files/Oracle/VirtualBox"' >> ${HOME}/.bash_profile.d/vagrant &&
    . ${HOME}/.bash_profile.d/vagrant &&
    vagrant plugin install virtualbox_WSL2 &&
    vagrant plugin install vagrant-hosts &&
    vagrant plugin install vagrant-disksize &&
    vagrant plugin install vagrant-vbguest

go

: > ${HOME}/.bash_profile.d/go &&
    echo 'export GOPATH="$HOME/.local/go"' >> ${HOME}/.bash_profile.d/go &&
    echo 'export PATH="$GOPATH/bin:/usr/local/go/bin:$PATH"' >> ${HOME}/.bash_profile.d/go &&
    . ${HOME}/.bash_profile.d/go &&
    ( GOVERSION=1.23.2 &&
          sudo rm -rf /usr/local/go &&
          wget -q -O- https://go.dev/dl/go${GOVERSION}.linux-amd64.tar.gz | sudo tar -C /usr/local -xzf - )

Python

: > ${HOME}/.bash_profile.d/python &&
    echo 'export PYPATH="$HOME/.local/python"' >> ${HOME}/.bash_profile.d/python &&
    echo 'export PATH="$PYPATH/bin:$PATH"'     >> ${HOME}/.bash_profile.d/python &&
    . ${HOME}/.bash_profile.d/python &&
    ( PYVERSION=3.12.0 &&
          wget -q -O- https://www.python.org/ftp/python/${PYVERSION}/Python-${PYVERSION}.tar.xz | tar -C /tmp -xJf - &&
          cd /tmp/Python-${PYVERSION} &&
          ./configure --prefix=$PYPATH &&
          make && make install )

コマンドラインツール類

peco

wget -q -O- https://github.com/peco/peco/releases/latest/download/peco_linux_amd64.tar.gz | tar -C /tmp -xzf - &&
    mv /tmp/peco_linux_amd64/peco ${HOME}/.local/bin

oj (competitive programming)

python3 -m pip install --user online-judge-tools

yq

wget -q -O ${HOME}/.local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 &&
    chmod +x ${HOME}/.local/bin/yq

gh

see https://github.com/cli/cli/blob/trunk/docs/install_linux.md

ghq

go install github.com/x-motemen/ghq@latest

git-delta

wget -q -O /tmp/git-delta.deb https://github.com/dandavison/delta/releases/download/0.13.0/git-delta_0.13.0_amd64.deb &&
    sudo dpkg -i /tmp/git-delta.deb

AWSCLIv2

wget -q -O /tmp/awscliv2.zip https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip &&
    unzip -u -d /tmp /tmp/awscliv2.zip &&
    sudo /tmp/aws/install --update &&
    bash ${HOME}/Dropbox/creds/aws_cred_setup.bash

SDKMAN

wget -q -O- https://get.sdkman.io | bash &&
    : > ${HOME}/.bashrc.d/sdkman &&
    echo 'export SDKMAN_DIR="${HOME}/.sdkman"'                                                 >> ${HOME}/.bashrc.d/sdkman &&
    echo '[[ -s "${SDKMAN_DIR}/bin/sdkman-init.sh" ]] && . "${SDKMAN_DIR}/bin/sdkman-init.sh"' >> ${HOME}/.bashrc.d/sdkman &&
    . ${HOME}/.bashrc.d/sdkman

Terraform

see https://developer.hashicorp.com/terraform/install