2025年7月23日水曜日

【WSLでPodmanを使おうとして詰んだ話】systemd依存の罠とリカバリー記録




🔧 はじめに

WSL上のUbuntuで**Podmanを使いたい!**と思って apt install podman したら、地獄の依存関係トラブルにハマりました…。
この投稿では、その経緯と最終的にどうリカバリーしたかを記録しておきます。


🌀 起こったこと

Ubuntu(WSL)で以下のコマンドを実行:

sudo apt install podman

すると依存関係のエラーが続出:

podman : Depends: conmon but it is not going to be installed
         ...
systemd-sysv : Depends: systemd (= 255.4-1ubuntu8.4) but 255.4-1ubuntu8.10 is to be installed

どうやら systemd 関連パッケージのバージョンが中途半端に更新されており、しかも dpkg が壊れて修復できない状態に…。


🔍 原因を整理すると:

  • systemd のアップグレードが途中で失敗(WSLではありがち)

  • /etc/passwd ロック失敗 → dpkg --configure -a も通らない

  • そのせいで podman の依存関係が解決できない


💣 対処してみたこと:

  • apt-mark holdsystemd を止めてみる → 効果なし(バージョン差異で詰む)

  • dpkg スクリプトを手動で無効化 → 一時的に通るが不安定

  • systemd をダウングレードしようとするも、依存パッケージが既に新しくなっていて詰み状態


🧹 最終的な解決策:

💥WSLのUbuntuを一度削除して再インストールしました。

wsl --unregister Ubuntu

その後、Microsoft Store から Ubuntu を再インストールし、クリーンな状態から再構築。これが一番早くて安全でした。


✅ 教訓・まとめ

  • WSL では systemd 関連パッケージのアップグレードは慎重に!

  • Podman は rootless モードで使えるので、本来 systemd は必須ではない

  • 環境が壊れたら、WSL では「作り直す」が最善手になることもある


💡 次やるときのベストプラクティス

  1. WSL の Ubuntu をインストールしたら、まず apt upgrade は控える

  2. Podman を使うなら、最初に rootless モードでテスト

  3. 必要に応じて公式リポジトリを追加して最新版を導入まとめておくと以下の通りです:


    🧵 Ubuntu 環境破損とその復旧

    🔧 背景

    Docker を使った開発を行っていた Ubuntu 環境(WSL 上 or ネイティブ)で systemd 周辺のパッケージ更新により依存関係の破綻が発生。apt installdpkg --configure -a--fix-broken install も機能しなくなった。


    🚨 発生したエラーの例

    dpkg: error processing package systemd (--configure):
     installed systemd package post-installation script subprocess returned error exit status 1
    

    また、podman インストール時にも以下のような依存性の壊れが起こる:

    The following packages have unmet dependencies:
     podman : Depends: conmon but it is not going to be installed
     systemd-sysv : Depends: systemd (= 255.4-1ubuntu8.4) but 255.4-1ubuntu8.10 is to be installed
    

    🔄 試行した対処法

    • sudo apt-mark hold で systemd 関連パッケージを固定 → 効果なし

    • apt --fix-broken install, dpkg --configure -a を繰り返す → 改善せず

    • 結果:依存地獄から脱出できず断念


    🧹 結論:クリーンな Ubuntu を入れ直し

    • 複雑に壊れたシステムは復旧より再インストールが早いと判断

    • WSL 上で新たに Ubuntu を再導入し、環境をクリーンにリセット


    🐳 その後:Podman 導入はスムーズに成功

    WSL 上の新しい Ubuntu で以下のように進めた:

    # Podman の公式リポジトリを追加(Ubuntu 22.04 例)
    source /etc/os-release
    echo "deb [signed-by=/etc/apt/keyrings/libcontainers.gpg] https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /" | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
    
    sudo mkdir -p /etc/apt/keyrings
    curl -fsSL https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/Release.key | gpg --dearmor | sudo tee /etc/apt/keyrings/libcontainers.gpg > /dev/null
    
    sudo apt update
    sudo apt install -y podman
    

    これで依存関係エラーもなく正常に導入できた。


    ✅ 教訓

    • Ubuntu で systemd 関連の壊れは非常に復旧が難しい

    • 壊れたら躊躇せず再インストールが最善の選択になることもある

    • Podman のような開発ツール導入時は公式リポジトリを活用するのが安全




NixOS + dwm だけで最低限のPC操作を快適にする方法

NixOS + dwm だけで最低限のPC操作を快適にする方法 シンプルで軽量な dwm だけを使って、 音量調整・バッテリー表示・画面輝度調整 など、最低限のPC設定をできるようにする方法を紹介します。デスクトップ環境(LXQtやXFCE)を入れなくても、CUIツール...