WSL 2 Ubuntu 再インストール手順自分用まとめ

みるみ

少し前に WSL 2 の Ubuntu の挙動がおかしくなってしまったので、溜まっているゴミを掃除するついでに新しいバージョンを入れ直すことにした。

WSL 2 は単に開発環境のクリーンアップというよりは、これならではの手順が多く、メモってなくて毎度面倒くさくなっているので今回ちゃんと記録しておくものです。

昔にこんな記事も書いていたが、これは単なる「Ubuntu のセットアップ手順」程度のものでしかなくほとんど役に立たなかったのと、中身のツール類は陳腐化してしまいやすい内容だったので全体的に書き直すことにした。今回も一部この内容は踏襲されています。

前提とか

  • WSL 2 自体の設定は有効化されているものとします
    • 現在の Windows 11 は WSL 2 の利用がものすごく楽になっています
  • パッケージのインストール類のコマンドは現時点での公式サイトのものを当然そのまま転記してきていますが、特にシェルスクリプトを curl してきて実行するようなタイプの場合はご自身で公式サイトの最新情報をよくチェックすることをおすすめします
  • .profile は使わず(Ubuntu はもともと .bash_profile はない)、内容によらず全部 .bashrc に書く方針でやっている
  • wsl コマンドは基本的に Windows 側(PowerShell でも cmd でも可)で実行する

Zone.Identifier 問題

重要なのでひとつ項目として先に取り上げて書いておきます。

WSL には、WSL から見て外部の世界から入ってきたものには Zonde.Identifier というサフィックスがついたファイル が生成されてしまうというやっかいで有名な問題があります。一応セキュリティ目的のものであるようだが、実感できるメリットに対して邪魔さ加減がとんでもないため基本的に嫌われています。

WSL 2 のディストリビューションを新しくしようとするとき、多かれ少なかれ旧ディストリビューションから新ディストリビューションへコピーしたいファイルが出てくると思います。このとき、Windows に一旦コピーしてから移動させたり、もしくは WSL 同士で直接コピーや切り取りしようが、基本的にはすべてのファイルで Zone.Identifer が生成されてしまうため、大量にディレクトリコピーとかを行うと悲惨なことになります(なった)。

いままでグローバルの .gitignore に入れるとかしながらだましだましやってきたが、今回根本的に対処することに。結果としては、以下の Reddit スレで解決できました。

https://www.reddit.com/r/wsl2/comments/1giszi8/zoneidentifier_log_files

レジストリの場所的におそらくディストリビューションを横断して WSL 2 全体に永続的に効果があると思う。ぜひ今回を機に実施するのをおすすめします。

WSL 2 再インストール手順

    • ディストリビューションのインストールに Microsoft Store 版を使うのはやめる
      • wsl --install -d Ubuntu-24.04
        • username を訊かれるので答える
      • wsl --set-default Ubuntu-24.04
    • apt
      • sudo apt update && sudo apt upgrade
      • sudo apt install build-essential openssl libssl-dev pkg-config unzip jq
    • pyenv
      • curl -fsSL https://pyenv.run | bash
      • sudo apt install zlib1g-dev libbz2-dev liblzma-dev libsqlite3-dev libreadline-dev libffi-dev
      • pyenv install 3.12.11
      • pyenv global 3.12.11
    • mise-en-place
      • これはなに:自分のポスト
      • curl https://mise.run | sh
      • mise use -g node@20.12.2
        • 基本的にグローバル用の npm コマンドのためのみに使う
          • npm i -g npm-check-updates @google/gemini-cli @expo/ngrok @nestjs/cli @azu/github-label-setup
        • 過去 n に入ってたバージョンめも
          • node/16.20.2
          • node/18.16.1
          • node/20.12.2
      • Bun はグローバルでは入れない、リポジトリの .tool-versions のみを唯一のソースとする
    • Rust
      • curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    • tfenv
      • git clone --depth=1 https://github.com/tfutils/tfenv.git ~/.tfenv
      • tfenv install 1.2.2
        • 古い…
      • tfenv use 1.2.2
    • ro-soku
    • VS Code の WSL の接続先を変える
      • これは wsl --set-default Ubuntu-24.04 が実行されていれば大丈夫なはず(初回は「プロファイルを指定して実行」みたいなやつするといいかも)
      • もともとの Ubuntu 自体にインストールされていた拡張は「ローカル」に残らないせいか自動で移行されないため、インストールしていたリストを控えておく必要があることに注意
    • Zone.Identifier が生成されないようにする(上述したもの)
    • 旧 WSL 2 削除
      • Windows 設定アプリから見えている Ubuntu があればまずそれを削除
      • そのあと PowerShell から以下を実行
        • wsl --terminate Ubuntu-22.04
        • wsl --unregister Ubuntu-22.04
    みるみ
    みるみ

    ブロガー、ソフトウェアエンジニア。

    暗号資産業界で働いています。

    この記事へのコメント
    コメントはまだひとつもありません :)

    新しいコメントを書く

    • 必須項目はコメント本文のみですが、お名前はぜひご記入いただけると嬉しいです。
      ※メールアドレスを書いた場合も公開されることはないのでご安心ください。
    • 特定のコメントに返信したい場合は各コメントにある「返信する」ボタンからどうぞ。
    • コメントはこちらで承認の作業を行うまでは表示されません。ご了承ください メールX からお願いします。