WSL2上のUbuntuにLandoをインストールする(#3)

WSL2上のUbuntuにLandoをインストールする

この記事は、「WSL2 + Lando:WindowsでのWeb開発環境構築ガイド」シリーズの3ページ目です。今回は、前回の記事でセットアップしたUbuntuに、Landoをインストールするところまでの手順を紹介します。

次の環境で実施しています:

  • Windows11
  • WSL2
  • Ubuntu 22.04.4
  • Lando 3.21.0

UbuntuにLandoをインストールする

UbuntuにLandoをインストールします。

参考1)Windows | Lando(Install Lando on Windows)
参考2)Linux | Lando(Install Lando on Linux)

Lando公式のWindowsへのインストールガイドを見ると次の記載があります。

For those who prefer working exclusively within WSL2, no additional Windows-based installation is necessary. You can install Lando directly within the Linux environment by following the Linux installation instructions.

WindowsのWSL2に入れたLinuxディストリビューションにLandoを入れる場合は、Linuxへのインストールを参考にすればよい、ということなのでLinuxへのインストールガイドを見ながら進めます。

公式ページでのインストールの案内文

怖いくらいシンプル…。
他で見ていたLandoユーザーさんたちの記事とインストール方法が違っていて躊躇しましたが、公式の記事のアップデートが2か月前と新しかったので、(当たり前だけど)公式を信じてやってみました。

Ubuntuに接続して次のコマンドを実行します。

/bin/bash -c "$(curl -fsSL https://get.lando.dev/setup-lando.sh)"

何やらすごい勢いでインストールが進みます…。

enter computer password… でストップ

途中、「enter computer password for undefined to add them to docker group」のコメントと共にインストールが停止しました。
Dockerの権限まわりの設定と思われます。ユーザー名が「undefined」なところが気になりますが、操作しているUbuntuユーザーのパスワードを入力したところ、インストールが再開されました。

ERROR: System has not been booted with systemd as init system (PID 1). Can’t operate.

うまくいったかな?と思っていたところ、最後の最後でエラーが発生しました。

Setup installed 38 of 38 things successfully!
However, a restart is required is complete your setup.
ERROR ==> System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down

エラー文言で調べると、同じエラーが発生している記事を発見。(多謝!)
途中から症状が違っているのでそのままズバリではありませんが、ここから次の点が分かりました。

  • systemdPID=1で実行されていないことが原因
  • プロセスは、ps -aux で確認できる
  • systemdの実体は/sbin/initなので、/sbin/initPID=1で実行されていればOK

実際にプロセスを確認すると、/initPID=1で実行されてました。

WSL2で、systemdが有効になっているかを確認します。
この先は、次のMicrosoftのドキュメントを参照しながら解決を試みました。

実行したのは、参考3の「systemdを有効にする方法」のくだりです。

Microsoftのドキュメントのキャプチャ

上図の「2」を実行すると、すでに「3」の状態だったので、「4」を実行します。

Windowsでの操作に戻り、PowerShellでwsl.exe --shutdownを実行。
WSL2のすべてのディストリビューションを再起動します。

改めてUbuntuに戻り、ps -auxコマンドでプロセスからPIDを確認します。

期待通り、/sbin/initPID=1で実行されていることが確認できました。
これで原因は取り除けたはず。

Landoのインストール完了!

もう一度Landoのインストールを実行したところ、無事インストールが完了しました!

今読み返すと、エラーのコメントには However, a restart is required とあるので、最初からWSL2を再起動するだけでよかったのかもしれません。
少し遠回りした気もしますが、大きなトラブルなくLandoがインストールされました。

まとめと次のステップ

この記事では、WSL2上のUbuntuにLandoをインストールする手順について解説しました。
インストーラーに比べると難しく感じられるかもしれませんが、コマンドラインでセットアップする他のツールに比べると、とてもシンプルだと思います。

※比較的新しいツールで開発活動も活発なようです。検索に上がってくるユーザーの記事内容と実際が違う場面も多くあるので、実行の際は公式サイトを必ず確認してくださいね。

この記事は、WSL2とLandoを使ってWindows上に実用的なローカル開発環境を構築することを目的とした「WSL2 + Lando:WindowsでのWeb開発環境構築ガイド」シリーズの3ページ目です。

次の記事では、Landoを使用したLAMP環境のセットアップ手順を詳しく見ていきます。