エージェント実行環境のインストール時のエラー回避「ModuleNotFoundError: No module named ‘crypt’」

はじめに

enebularのエージェント実行環境を用意するとき、最新のRaspberry Pi OSを使ったらインストーラーでエラーになりました。

Raspberry Pi OS (64-bit) A port of Debian Trixie with the Raspberry Pi Desktop
Released: 2025-12-04

Raspberry Pi OS (64-bit) Bookwormではエラーがありませんでしたので、再度SDカードを作る気にはなれず、エラーを回避して進める方法を探しました。

最新のOSへのインストーラー側の対応は正式リリースを待つとして、この記事では、その原因と、事前準備によってエラーを回避するワークアラウンドをご紹介します。

私が直面したエラーの症状

インストールスクリプトを実行した際、終盤の ==== Creating Remote Maintenance User ==== のステップで以下のようなエラーが出力されて処理が止まっていました。

==== Creating Remote Maintenance User ====
Traceback (most recent call last):
  File "<string>", line 1, in <module>
    import crypt, random, hashlib, base64; salt=base64.b64encode(hashlib.sha384(str(random.SystemRandom().random()).encode('utf-8')).digest(), b'./'); print(crypt.crypt('melt2-CAT_down34', '$6$' + str(salt)))
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'crypt'
Failed
Install enebular-agent failed, reason: failed to generate password using openssl

原因

enebular-agentのインストーラーは、インストール時に自動的に enebular-remote-admin という名称のリモートメンテナンス用ユーザーを生成します。そのパスワード処理のために、内部でPythonの crypt モジュールを呼び出しています。
しかし、この crypt モジュールはPython 3.11で非推奨となり、Python 3.13で標準ライブラリから完全に削除されました。そのため、最新のOS環境ではモジュールが見つからずにエラーとなってしまいます。

解決策:事前にメンテナンス用ユーザーを作成しておく

インストーラーにユーザー作成を任せると処理が止まってしまうため、エラーが発生する前に手動で対象ユーザーを作成してしまう のが最もシンプルで確実な回避策です。

以下の手順で事前に設定を行います。

1. ユーザーの作成と権限付与

まず、ターミナルで以下のコマンドを実行し、リモートメンテナンス用ユーザー(enebular-remote-admin)を作成します。

# ユーザーを作成
sudo useradd -m -s /bin/bash enebular-remote-admin

# sudo権限を付与
sudo usermod -aG sudo enebular-remote-admin

※このユーザーは、デバイス上でroot権限のコマンドを実行できる権限が必要になります。

2. パスワードの設定

次に、作成したユーザーのパスワードを設定します。

sudo passwd enebular-remote-admin

実行すると新しいパスワードを2回求められるので、任意のセキュアなパスワードを入力してください。

3. enebular-agentのインストール

事前準備が終わったら、通常のインストールコマンドを実行します。
エージェント実行環境の設定タブから、コマンドをコピーして実行してください。
このとき、インストールユーザーはRaspberryPiの場合はpiにすることが多いです。

wget -qO- https://enebular.com/agent-install | sudo -E bash -s -- --user=pi --install-key={YOURKEY}

パスワード指定オプション(--remote-maintenance-user-password)はエラーの引き金になる可能性があるため、付与せずに実行 してください。

おわりに

最新OSへすぐに正式対応できない中で大変心苦しいのですが、インストーラー側がアップデートされるまでは、この手順を試していただければと思います。問題があればサポートまでお問い合わせください。