Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails以外の開発一般

WSL2のUbuntu環境アップグレードを実施する

ebiです。入社後から長らくWindows一筋で開発者を続けてますが、VirtualBox利用のLinux開発環境からWSL2利用のLinux開発環境への移行と言うブレイクスルーは実に素晴らしいものでした。
(ところでDHHもWindowsの良さに目覚めた!と思ってたのに、いつの間にかArch LinuxベースのOmarchyの環境に移行してるらしくてちょっと残念)

ただ、Docker利用前提の開発環境の便利さにかまけて、未だに初めてWSL2を導入した時のUbuntu 20.04環境を放置してる状況だったのです……。
そんなわけでいい加減やらなきゃと後回しにしてた新しいバージョンのUbuntu開発環境へのアップグレード、移行作業に取り組みながら記録した半ば日記みたいなメモ書きの内容をTechRacho記事の扱いにしておきます。

Windows 11環境へのアップグレードもなんだかんだで保留にし続けているので、本記事はWindows 10環境での実施内容となります。予めご了承ください。

新規追加するUbuntu 24.04環境の構築

現状のUbuntu 20.04環境に対して do-release-upgrade を実行することもできそうな気がしますが、業務に支障が出ないように真面目にやろうとすると、まずは現状の環境を複製したりする必要がありそうなのが厄介な所です。
と言うか特に意味もなく長年使ってるせいで不要な設定やライブラリなど負の資産も正直多そうで、綺麗な環境で作り直す方がメリットが多そうなので今回はその方針で行きます。

Ubuntu 24.04環境のインストール

以下はまずはPowerShellでの実行作業ログになります。
現在のWSL環境の状態とバージョンはこんな感じです。

PS C:\Users\shrim> wsl -l -v
  NAME              STATE           VERSION
* Ubuntu-20.04      Running         2
  docker-desktop    Running         2
PS C:\Users\shrim> wsl --version
WSL バージョン: 2.5.10.0
カーネル バージョン: 6.6.87.2-1
WSLg バージョン: 1.0.66
MSRDC バージョン: 1.2.6074
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.26100.1-240331-1435.ge-release
Windows バージョン: 10.0.19045.6216

まずは一応Ubuntu 24.04が利用できるかを確認します。

PS C:\Users\shrim> wsl --list --online
インストールできる有効なディストリビューションの一覧を次に示します。
'wsl.exe --install <Distro>' を使用してインストールします。

NAME                            FRIENDLY NAME
AlmaLinux-8                     AlmaLinux OS 8
AlmaLinux-9                     AlmaLinux OS 9
AlmaLinux-Kitten-10             AlmaLinux OS Kitten 10
AlmaLinux-10                    AlmaLinux OS 10
Debian                          Debian GNU/Linux
FedoraLinux-42                  Fedora Linux 42
SUSE-Linux-Enterprise-15-SP6    SUSE Linux Enterprise 15 SP6
SUSE-Linux-Enterprise-15-SP7    SUSE Linux Enterprise 15 SP7
Ubuntu                          Ubuntu
Ubuntu-24.04                    Ubuntu 24.04 LTS
archlinux                       Arch Linux
kali-linux                      Kali Linux Rolling
openSUSE-Tumbleweed             openSUSE Tumbleweed
openSUSE-Leap-15.6              openSUSE Leap 15.6
Ubuntu-18.04                    Ubuntu 18.04 LTS
Ubuntu-20.04                    Ubuntu 20.04 LTS
Ubuntu-22.04                    Ubuntu 22.04 LTS
OracleLinux_7_9                 Oracle Linux 7.9
OracleLinux_8_10                Oracle Linux 8.10
OracleLinux_9_5                 Oracle Linux 9.5

問題なく目当てのUbuntu 24.04環境がインストールできそうな状態だったので早速 wsl --install -d Ubuntu-24.04 でインストールを実行します。​

少し待つと「Create a default Unix user account:」でユーザアカウント名の入力を求められます。続いてパスワードも入力します。
……すると、もうこれでいきなり起動したっぽいです。PowerShellのままなのは気持ち悪いので一旦閉じます。

wsl -l -v でインストール済みのLinuxディストリビューション一覧を確認してみると、新しく「Ubuntu-24.04」環境が増えてるのでとりあえずこれでインストールは完了してるようです。

PS C:\Users\shrim> wsl --install -d Ubuntu-24.04
ダウンロードしています: Ubuntu 24.04 LTS
インストールしています: Ubuntu 24.04 LTS
ディストリビューションが正常にインストールされました。'wsl.exe -d Ubuntu-24.04' を使用して起動できます
Ubuntu-24.04 を起動しています...
Provisioning the new WSL instance Ubuntu-24.04
This might take a while...
Create a default Unix user account: ebi
New password:
Retype new password:
passwd: password updated successfully
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
​
ebi@LAPTOP-R8D4FNMF:/mnt/c/Users/shrim$
ebi@LAPTOP-R8D4FNMF:/mnt/c/Users/shrim$ exit
exit
PS C:\Users\shrim> wsl -l -v
  NAME              STATE           VERSION
* Ubuntu-20.04      Running         2
  docker-desktop    Running         2
  Ubuntu-24.04      Running         2

Docker Desktop向けの設定

ターミナルを起動し直したところ、ちゃんと「Ubuntu-24.04」環境用のターミナルを開くタブ選択肢も追加されました。

しかし、Docker Desktop for Windows経由でのdockerコマンドは以下の通りまだ使えない状態でした。
一度Docker DesktopやPC本体の再起動をしてみましたが状況に変化は無しです。

ebi@LAPTOP-R8D4FNMF:~$ docker ps

The command 'docker' could not be found in this WSL 2 distro.
We recommend to activate the WSL integration in Docker Desktop settings.

For details about using Docker Desktop with WSL 2, visit:

https://docs.docker.com/go/wsl2/

そこで言われた通りDocker Desktop側の設定を疑ってみたところ「Resources」の「WSL Integration」の設定にそれっぽい要素が見つかりました。
「Enable integration with my default WSL distro」にしかチェックが入ってないので、新規追加しただけでデフォルト扱い( * マークが付いてるやつ)にはなってない「Ubuntu-24.04」環境にはDocker Desktopが適用されてなかったわけですね。

そんなわけで「Ubuntu-24.04」にもチェックを入れて「Apply & restart」した後、開き直したターミナル上では無事にdockerコマンドが使えるようになってました。

なお、執筆時点での著者のDesktop Desktopのバージョンはちょい古めの4.42.1です(4.44.3が最新らしい)。
リソースセーバー機能を取り入れるために少し前に最新化したけど、その時も久しぶりにアップデートを実施したせいか互換性維持できない変更が起きたようでDocker開発環境の全部作り直しが発生したりしたので定期的なアップデート実施は気が進まない……。

ちなみにDocker Desktopを使ってるとWSL側のメイン利用環境をUbuntu 20.04⇒24.04のディストリビューションに移行すると言ったことをやっても良くも悪くも同じイメージとかコンテナを使うことにはなりそうですね。そこはDocker Desktopを使うメリットでもあるのかな?

RubyMine向けの設定調整

普段、業務で使用しているエディタがRubyMineなのですが、RubyMine内で利用するライブラリが以下のような感じで旧Ubuntu環境を参照してるままだったりすると、新Ubuntu環境内のプロジェクトを開いた時にGitなどが上手く動きません。

そのため、この辺は新しい環境内のライブラリを参照する設定に更新する必要があります。

こう言うWSL環境で開発する向けの前提とか設定は色々試行錯誤しつつ、都度それっぽい雰囲気の対応で乗り切ってきた歴史を引き継いだ状態の秘伝のタレ状態なので、ゼロからWindows環境を構築する時にどんな設定が必要そうなのかとかはいまいち分かってなくて困るのですが……。
そろそろ新しいPCに乗り換えるかもだし、その時には頑張って記録しようかな。

何はともあれ、こんな感じでRubyMineの設定調整が必要になった分は、今回はついでに新しいバージョンのRubyMineをダウンロードしてきて、そっちを新環境向けに設定し直していくことにしました。

Ruby環境の構築

基本的に各プロジェクトはDocker環境を利用した開発前提ではあるのですが、プロジェクトによっては直接Rubyが動かせる環境も必要だったのでRubyが動く環境も揃えることになりました。
せっかくなので最近(Rails 8.0以降)Railsガイドで案内されているmiseを使ってRuby環境の構築をやってみました。

天邪鬼なので試しに依存パッケージっぽいものをインストールしない状態で実行してみたらこんな感じでエラーが出たぞい。

ebi@LAPTOP-R8D4FNMF:~$ curl https://mise.run | sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  9970  100  9970    0     0  17998      0 --:--:-- --:--:-- --:--:-- 18028
mise: installing mise...
######################################################################## 100.0%
mise: installed successfully to /home/ebi/.local/bin/mise
mise: run the following to activate mise in your shell:
echo "eval \"\$(/home/ebi/.local/bin/mise activate bash)\"" >> ~/.bashrc

mise: run `mise doctor` to verify this is setup correctly
ebi@LAPTOP-R8D4FNMF:~$ echo 'eval "$(~/.local/bin/mise activate bash)"' >> ~/.bashrc
ebi@LAPTOP-R8D4FNMF:~$ source ~/.bashrc
ebi@LAPTOP-R8D4FNMF:~$ mise use -g ruby@3.4.2
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 14.6M  100 14.6M    0     0  13.1M      0  0:00:01  0:00:01 --:--:-- 13.1M
/home/ebi/.cache/mise/ruby/ruby-build/bin/ruby-build: line 725: [: : integer expression expected
BUILD FAILED (Ubuntu 24.04 on x86_64 using ruby-build 20250811)
You can inspect the build directory at /tmp/ruby-build.20250821162644.71225.55eDNu
See the full build log at /tmp/ruby-build.20250821162644.71225.log
mise ERROR ~/.cache/mise/ruby/ruby-build/bin/ruby-build failed
==> Downloading openssl-3.0.16.tar.gz...
-> curl -q -fL -o openssl-3.0.16.tar.gz https://dqw8nmjcqpjn7.cloudfront.net/57e03c50feab5d31b152af2b764f10379aecd8ee92f16c985983ce4a99f7ef86
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 14.6M  100 14.6M    0     0  13.1M      0  0:00:01  0:00:01 --:--:-- 13.1M
==> Installing openssl-3.0.16...
/home/ebi/.cache/mise/ruby/ruby-build/bin/ruby-build: line 725: [: : integer expression expected
-> ./config "--prefix=$HOME/.local/share/mise/installs/ruby/3.4.2/openssl" "--openssldir=$HOME/.local/share/mise/installs/ruby/3.4.2/openssl/ssl" --libdir=lib zlib-dynamic no-ssl3 shared "-Wl,-rpath,$HOME/.local/share/mise/installs/ruby/3.4.2/openssl/lib"

BUILD FAILED (Ubuntu 24.04 on x86_64 using ruby-build 20250811)

You can inspect the build directory at /tmp/ruby-build.20250821162644.71225.55eDNu
See the full build log at /tmp/ruby-build.20250821162644.71225.log
mise ERROR Failed to install tool: ruby@3.4.2

ruby@3.4.2:
   0: failed to install core:ruby@3.4.2
   1: ~/.cache/mise/ruby/ruby-build/bin/ruby-build exited with non-zero status: exit code 1

Location:
   src/cmd.rs:479

Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it.
Run with RUST_BACKTRACE=full to include source snippets.
mise ERROR Run with --verbose or MISE_VERBOSE=1 for more information
mise mise 2025.8.16 by @jdx – use 

ちゃんと依存パッケージをインストールしたら無事にビルドできました。Ruby環境の構築は簡単でした!

ebi@LAPTOP-R8D4FNMF:~$ mise use -g ruby@3.4.2
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 22.1M  100 22.1M    0     0  11.5M      0  0:00:01  0:00:01 --:--:-- 11.5M
mise ~/.config/mise/config.toml tools: ruby@3.4.2
ebi@LAPTOP-R8D4FNMF:~$ ruby -v
ruby 3.4.2 (2025-02-15 revision d2930f8e7a) +PRISM [x86_64-linux]

旧環境から引き継ぎたい資産を移行する

と言っても、拘ったカスタマイズとかツールを全くと言っていいほど使用しない性質なのでssh鍵の設定周りくらいしか移行するものなさそうでした 🤔

WSL2環境からWSL2環境間で通信する……と言った高度なことをやるほどの必要性は今回は特にありません。
愚直に旧環境の .ssh/id_rsa , .ssh/id_rsa.pub , .ssh/config の内容をcatで出力して、新しい環境の方でviで開いてコピペして移行する、何の面白みもない作業をやれば、すぐ作業完了となりました。

この状態で無事に普段の業務で利用してるBPS用のGitLab環境や所属してるプロジェクトのGitHubリポジトリからssh利用でのclone実行も確認でき、新しい環境から足したコミットとかも無事にpushできてるので、最低限の業務は特に問題無くこなせてます。

おまけ:古い環境で使えなかった rails-new をインストールする

あっさり完了してしまって中身が無いので、ついでにUbuntu 24.04環境にアップグレードするまで保留にしてた検証を試します。

前回の記事でチラッと嘆いたんですが rails new ならぬ rails-new がUbuntu 20.04環境だと動かなかったんですよね……。
と言うことで満を持して新しいUbuntu 24.04環境で再インストールしてみました。

rails-new のインストール手順に関しては、GitHubにInstallationの案内こそあるのですが、具体的な実行コマンドまで記載しているわけではないのに困ったので、適当にChat GPTに尋ねてインストールした際の手順の詳細を記録しておきます。

リリース一覧の最新リリースの内、自分の環境に適したものをインストールする必要があるようです。
今回はx86_64のLinux 環境にインストールすることになりそうなのでv.0.5.0のrails-new-x86_64-unknown-linux-gnu.tar.gzをインストールしてみます。

ebi@LAPTOP-R8D4FNMF:~$ uname -a
Linux LAPTOP-R8D4FNMF 6.6.87.2-microsoft-standard-WSL2 #1 SMP PREEMPT_DYNAMIC Thu Jun  5 18:30:46 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
  • wgetで任意のパスにダウンロードする
ebi@LAPTOP-R8D4FNMF:~$ wget https://github.com/rails/rails-new/releases/download/v0.5.0/rails-new-x86_64-unknown-linux-gnu.tar.gz
--2025-08-14 20:37:47--  https://github.com/rails/rails-new/releases/download/v0.5.0/rails-new-x86_64-unknown-linux-gnu.tar.gz
Resolving github.com (github.com)... 20.27.177.113
Connecting to github.com (github.com)|20.27.177.113|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://release-assets.githubusercontent.com/github-production-release-asset/758614244/d187a040-421c-407a-b2e3-b73e5d660110?sp=r&sv=2018-11-09&sr=b&spr=https&se=2025-08-14T12%3A16%3A12Z&rscd=attachment%3B+filename%3Drails-new-x86_64-unknown-linux-gnu.tar.gz&rsct=application%2Foctet-stream&skoid=96c2d410-5711-43a1-aedd-ab1947aa7ab0&sktid=398a6654-997b-47e9-b12b-9515b896b4de&skt=2025-08-14T11%3A15%3A41Z&ske=2025-08-14T12%3A16%3A12Z&sks=b&skv=2018-11-09&sig=5Tk6HGouvRdBfeaSagW1sV13QErCkmGIKajLRTCmUDM%3D&jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmVsZWFzZS1hc3NldHMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwia2V5Ijoia2V5MSIsImV4cCI6MTc1NTE3MTc2NywibmJmIjoxNzU1MTcxNDY3LCJwYXRoIjoicmVsZWFzZWFzc2V0cHJvZHVjdGlvbi5ibG9iLmNvcmUud2luZG93cy5uZXQifQ.1ChHpudYfu80vYQPNKt_8zx1gED2AXh980NNJEFEf58&response-content-disposition=attachment%3B%20filename%3Drails-new-x86_64-unknown-linux-gnu.tar.gz&response-content-type=application%2Foctet-stream [following]
--2025-08-14 20:37:47--  https://release-assets.githubusercontent.com/github-production-release-asset/758614244/d187a040-421c-407a-b2e3-b73e5d660110?sp=r&sv=2018-11-09&sr=b&spr=https&se=2025-08-14T12%3A16%3A12Z&rscd=attachment%3B+filename%3Drails-new-x86_64-unknown-linux-gnu.tar.gz&rsct=application%2Foctet-stream&skoid=96c2d410-5711-43a1-aedd-ab1947aa7ab0&sktid=398a6654-997b-47e9-b12b-9515b896b4de&skt=2025-08-14T11%3A15%3A41Z&ske=2025-08-14T12%3A16%3A12Z&sks=b&skv=2018-11-09&sig=5Tk6HGouvRdBfeaSagW1sV13QErCkmGIKajLRTCmUDM%3D&jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmVsZWFzZS1hc3NldHMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwia2V5Ijoia2V5MSIsImV4cCI6MTc1NTE3MTc2NywibmJmIjoxNzU1MTcxNDY3LCJwYXRoIjoicmVsZWFzZWFzc2V0cHJvZHVjdGlvbi5ibG9iLmNvcmUud2luZG93cy5uZXQifQ.1ChHpudYfu80vYQPNKt_8zx1gED2AXh980NNJEFEf58&response-content-disposition=attachment%3B%20filename%3Drails-new-x86_64-unknown-linux-gnu.tar.gz&response-content-type=application%2Foctet-stream
Resolving release-assets.githubusercontent.com (release-assets.githubusercontent.com)... 185.199.109.133, 185.199.110.133, 185.199.111.133, ...
Connecting to release-assets.githubusercontent.com (release-assets.githubusercontent.com)|185.199.109.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 463087 (452K) [application/octet-stream]
Saving to: ‘rails-new-x86_64-unknown-linux-gnu.tar.gz’

rails-new-x86_64-unknown-linux-gnu.tar.gz      100%[====================================================================================================>] 452.23K  --.-KB/s    in 0.04s

2025-08-14 20:37:48 (10.2 MB/s) - ‘rails-new-x86_64-unknown-linux-gnu.tar.gz’ saved [463087/463087]
  • 解凍して /usr/local/bin/ 以下に移動させて rails-new コマンドが実行できるようになったことを確認する
ebi@LAPTOP-R8D4FNMF:~$ tar -xvf rails-new-x86_64-unknown-linux-gnu.tar.gz
rails-new
ebi@LAPTOP-R8D4FNMF:~$ sudo mv rails-new /usr/local/bin/
[sudo] password for ebi:
ebi@LAPTOP-R8D4FNMF:~$ rails-new --version
rails-new 0.5.0

Ubuntu 20.04の旧環境では実際に rails-new コマンドを利用しようとしたところ、以下のような形で不足している依存ライブラリがあるようで実行できずだったのでした。
無事に使える環境が用意できたので今度新しいRailsアプリを作成したい機会があれば使ってみます……!!

ebi@LAPTOP-R8D4FNMF:~/for-techracho$ rails-new --version
rails-new: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by rails-new)
rails-new: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by rails-new)
rails-new: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by rails-new)

おわり

WSL2のUbuntu環境のアップグレード・開発環境移行はやればすぐできる!怖くないよ!と言うお話でした。
次はもっと早くやろう!!



CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。