更新

CentOS 6 で発生するエラーの対処法

このページでは、CentOS 6 や Red Hat Enterprise Linux 6(以下、RHEL 6)上で、Certbot クライアント(旧・Let's Encrypt クライアント)を実行した際に発生する複数の不具合について、原因 と 対処法 (解決策) を解説しています。

※これらの不具合は、CentOS 6.0 ~ CentOS 6.8 および RHEL 6.0 ~ RHEL 6.8 において、確認されています。

最新情報(2016年10月14日 追記)

certbot-auto 0.9.3 において、これらの不具合が解消していることを確認しました。

詳しくは 新・解決策 (certbot-auto 最新版の導入) をご覧ください。

このページの更新履歴

2016年05月18日
  • 不具合2 に最新版の Certbot クライアントによる再現確認に関する情報を追記しました。
2016年06月02日
  • パッケージ名の変更に伴い "centos-release-SCL" を "centos-release-scl" に書き換えました。
    (パッケージ名の大文字部分が小文字に変更されました)
  • Software Collections (SCL) で導入できる Python 2.7 のバージョンを 2.7.5 から 2.7.8 に変更しました。
  • その他、CentOS 6.7 から CentOS 6.8 へのアップデートに伴う情報の更新を行いました。
2016年10月14日
更新

不具合1:「virtualenv: コマンドが見つかりません」

Certbot クライアント(旧・Let's Encrypt クライアント)を実行すると、下記のエラーメッセージが表示される場合があります。

クライアント実行後に表示されるメッセージ(赤字部分がエラーメッセージ):
[TestUser@localhost certbot]$ ./certbot-auto Bootstrapping dependencies for RedHat-based OSes... yum is /usr/bin/yum 読み込んだプラグイン:fastestmirror, refresh-packagekit, security インストール処理の設定をしています Loading mirror speeds from cached hostfile * base: www.ftp.ne.jp * extras: www.ftp.ne.jp * updates: www.ftp.ne.jp パッケージ gcc-4.4.7-17.el6.x86_64 はインストール済みか最新バージョンです パッケージ dialog-1.1-9.20080819.1.el6.x86_64 はインストール済みか最新バージョンです パッケージ augeas-libs-1.0.0-10.el6.x86_64 はインストール済みか最新バージョンです パッケージ openssl-1.0.1e-48.el6_8.1.x86_64 はインストール済みか最新バージョンです パッケージ openssl-devel-1.0.1e-48.el6_8.1.x86_64 はインストール済みか最新バージョンです パッケージ libffi-devel-3.0.5-3.2.el6.x86_64 はインストール済みか最新バージョンです パッケージ redhat-rpm-config-9.0.3-51.el6.centos.noarch はインストール済みか最新バージョンです パッケージ ca-certificates-2015.2.6-65.0.1.el6_7.noarch はインストール済みか最新バージョンです パッケージ python-2.6.6-64.el6.x86_64 はインストール済みか最新バージョンです パッケージ python-devel-2.6.6-64.el6.x86_64 はインストール済みか最新バージョンです パッケージ python-virtualenv は利用できません。 パッケージ python-tools-2.6.6-64.el6.x86_64 はインストール済みか最新バージョンです パッケージ python-pip は利用できません。 パッケージ 1:mod_ssl-2.2.15-53.el6.centos.x86_64 はインストール済みか最新バージョンです 何もしません Creating virtual environment... ./certbot-auto: line 530: virtualenv: コマンドが見つかりません

これは、CentOS 6 / RHEL 6 の標準リポジトリにおいて、「python-virtualenv」や「python-pip」が利用できないためです。

更新

不具合2:「Python 2.6 support is very experimental at present」

Let's Encrypt クライアントを実行すると、下記のエラーメッセージが表示される場合があります。

クライアント実行後に表示されるメッセージ(赤字部分がエラーメッセージ):
$ ./letsencrypt-auto --help WARNING: Python 2.6 support is very experimental at present... if you would like to work on improving it, please ensure you have backups and then run this script again with the --debug flag!

また、エラーメッセージの表示に従って、「--debug」フラグを付けてクライアントを実行しても、別のエラーメッセージが表示される場合があります。

クライアント実行後に表示されるメッセージ(赤字部分がエラーメッセージ):
$ ./letsencrypt-auto --help --debug Updating letsencrypt and virtual environment dependencies... /home/TestUser/.local/share/letsencrypt/bin/python2.7: error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory

これらのエラーは、CentOS 6 / RHEL 6 標準の Python のバージョンが、Python 2.6 であることが原因です。Let's Encrypt クライアントの安定動作には Python 2.7 が必要です。

2016年05月18日 追記(2016年06月02日 更新)

この現象は、2016年04月28日に Let's Encrypt クライアントで確認したものです。

Certbot クライアント(Version 0.7.0)においては、不具合1 が発生してプログラムが停止するため、不具合2の再現確認は行えませんでした(2016年06月02日 に CentOS 6.8 で確認)。

更新

旧・解決策(Python 2.7 の導入)

Software Collections (以下、SCL) を利用して Python 2.7 (2.7.8) を導入することで、Certbot クライアント(旧・Let's Encrypt クライアント)の起動に失敗する問題は解決します。

SCL は、yum の古いバージョンのパッケージと共存する方法で最新のアプリケーションを導入する仕組みのため、既存の Python 2.6 環境へ影響を与えることはありません。

※以下の解説では CentOS 6 のコマンドを使用しています。RHEL 6 の場合にはコマンドが異なりますので、Software Collections および scl-utils (Red Hat Enterprise Linux 6 開発者ガイド) をご確認ください。

Python 2.7 環境の準備

まずは、SCL のリポジトリを追加します。

実行するコマンド:
$ sudo yum install centos-release-scl

※パッケージ名が "centos-release-SCL" (一部大文字) から "centos-release-scl" (すべて小文字) に変更されました(2016年06月02日 更新)。

コマンド実行後に表示されるメッセージ:
読み込んだプラグイン:fastestmirror, refresh-packagekit, security インストール処理の設定をしています Loading mirror speeds from cached hostfile * base: www.ftp.ne.jp * extras: www.ftp.ne.jp * updates: www.ftp.ne.jp 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> Package centos-release-scl.noarch 10:7-3.el6.centos will be インストール --> 依存性解決を終了しました。 依存性を解決しました ================================================================================ パッケージ アーキテクチャ バージョン リポジトリー 容量 ================================================================================ インストールしています: centos-release-scl noarch 10:7-3.el6.centos extras 12 k トランザクションの要約 ================================================================================ インストール 1 パッケージ 総ダウンロード容量: 12 k インストール済み容量: 19 k これでいいですか? [y/N]y パッケージをダウンロードしています: centos-release-scl-7-3.el6.centos.noarch.rpm | 12 kB 00:00 rpm_check_debug を実行しています トランザクションのテストを実行しています トランザクションのテストを成功しました トランザクションを実行しています インストールしています : 10:centos-release-scl-7-3.el6.centos.noarch 1/1 Verifying : 10:centos-release-scl-7-3.el6.centos.noarch 1/1 インストール: centos-release-scl.noarch 10:7-3.el6.centos 完了しました!

※リポジトリは自動的に /etc/yum.repos.d/CentOS-SCL.repo へ追加されます(2016年06月02日 削除)。

※リポジトリは自動的に、下記の場所へ追加されます(2016年06月02日 追加)。
/etc/yum.repos.d/CentOS-SCLo-scl.repo
/etc/yum.repos.d/CentOS-SCLo-scl-rh.repo

次に、Python 2.7(SCL を有効にしている間のみ使用可能)をインストールします。

実行するコマンド:
$ sudo yum install python27 python27-python-tools
コマンド実行後に表示されるメッセージ:
読み込んだプラグイン:fastestmirror, refresh-packagekit, security インストール処理の設定をしています Loading mirror speeds from cached hostfile * base: www.ftp.ne.jp * extras: www.ftp.ne.jp * updates: www.ftp.ne.jp 依存性の解決をしています (省略) 依存性を解決しました ================================================================================ パッケージ アーキテクチャ バージョン リポジトリー 容量 ================================================================================ インストールしています: python27 x86_64 1.1-17.el6 centos-sclo-rh 4.5 k python27-python-tools x86_64 2.7.8-3.el6 centos-sclo-rh 877 k 依存性関連でのインストールをします。: python27-python x86_64 2.7.8-3.el6 centos-sclo-rh 80 k python27-python-babel noarch 0.9.6-7.sc1.el6 centos-sclo-rh 1.4 M python27-python-devel x86_64 2.7.8-3.el6 centos-sclo-rh 386 k python27-python-docutils noarch 0.11-1.sc1.el6 centos-sclo-rh 1.6 M python27-python-jinja2 noarch 2.6-10.sc1.el6 centos-sclo-rh 550 k python27-python-libs x86_64 2.7.8-3.el6 centos-sclo-rh 5.6 M python27-python-markupsafe x86_64 0.11-11.sc1.el6 centos-sclo-rh 24 k python27-python-nose noarch 1.3.0-1.sc1.el6 centos-sclo-rh 290 k python27-python-pip noarch 1.5.6-5.el6 centos-sclo-rh 1.4 M python27-python-pygments noarch 1.5-2.sc1.el6 centos-sclo-rh 801 k python27-python-setuptools noarch 0.9.8-3.el6 centos-sclo-rh 423 k python27-python-simplejson x86_64 3.2.0-2.el6 centos-sclo-rh 174 k python27-python-sphinx noarch 1.1.3-7.sc1.el6 centos-sclo-rh 1.1 M python27-python-sqlalchemy x86_64 0.7.9-3.sc1.el6 centos-sclo-rh 2.1 M python27-python-virtualenv noarch 1.10.1-2.sc1.el6 centos-sclo-rh 1.4 M python27-python-werkzeug noarch 0.8.3-5.sc1.el6 centos-sclo-rh 555 k python27-python-wheel noarch 0.24.0-2.el6 centos-sclo-rh 76 k python27-runtime x86_64 1.1-17.el6 centos-sclo-rh 1.0 M python27-tkinter x86_64 2.7.8-3.el6 centos-sclo-rh 386 k トランザクションの要約 ================================================================================ インストール 21 パッケージ 総ダウンロード容量: 20 M インストール済み容量: 78 M これでいいですか? [y/N]y パッケージをダウンロードしています: (省略) インストール: python27.x86_64 0:1.1-17.el6 python27-python-tools.x86_64 0:2.7.8-3.el6 依存性関連をインストールしました: python27-python.x86_64 0:2.7.8-3.el6 python27-python-babel.noarch 0:0.9.6-7.sc1.el6 python27-python-devel.x86_64 0:2.7.8-3.el6 python27-python-docutils.noarch 0:0.11-1.sc1.el6 python27-python-jinja2.noarch 0:2.6-10.sc1.el6 python27-python-libs.x86_64 0:2.7.8-3.el6 python27-python-markupsafe.x86_64 0:0.11-11.sc1.el6 python27-python-nose.noarch 0:1.3.0-1.sc1.el6 python27-python-pip.noarch 0:1.5.6-5.el6 python27-python-pygments.noarch 0:1.5-2.sc1.el6 python27-python-setuptools.noarch 0:0.9.8-3.el6 python27-python-simplejson.x86_64 0:3.2.0-2.el6 python27-python-sphinx.noarch 0:1.1.3-7.sc1.el6 python27-python-sqlalchemy.x86_64 0:0.7.9-3.sc1.el6 python27-python-virtualenv.noarch 0:1.10.1-2.sc1.el6 python27-python-werkzeug.noarch 0:0.8.3-5.sc1.el6 python27-python-wheel.noarch 0:0.24.0-2.el6 python27-runtime.x86_64 0:1.1-17.el6 python27-tkinter.x86_64 0:2.7.8-3.el6 完了しました!

Python 2.7 対応のシェルを起動

Python 2.7 環境の準備 でインストールした Python 2.7 は、特別なコマンドで有効にした場合のみ使用される仕組みとなっており、普段は CentOS 標準の Python 2.6 が呼び出されます。

まず、下記のコマンドを実行して、Python 2.7 環境のシェル(root権限)を開きます。

$ sudo scl enable python27 bash

※上記コマンド実行後 exit コマンドを実行するまでの間はroot権限となります。コマンドの実行の際には細心の注意を払ってください。

cron を用いて有効期限が近くなった SSL/TLS サーバ証明書を自動更新する場合にも、SCL による Python 2.7 が有効な root 権限で certbot-auto が実行されるようにする必要があります。

その後、Python 2.7 環境のシェルから Certbot クライアントを実行すれば、正常に動作します。

実行するコマンド:
[root@localhost certbot]# ./certbot-auto
Certbot クライアントの起動後に表示される画面(TUI):

注意事項

上記の scl enable python27 bash(Python 2.7 環境のシェルを開くコマンド)は、root権限のシェルで実行するか、sudo を付けて実行する必要があります。

Python 2.7 環境のシェルを一般ユーザー権限で開いた場合、Certbot クライアント実行時に sudo による root 権限への移行(多くの環境ではパスワード入力が要求されます)が行われますが、Python 2.7 環境が正しく引き継がれなくなり、下記のエラーが発生する場合があります。

/home/TestUser/.local/share/letsencrypt/bin/python2.7: error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory

参考文献

更新

新・解決策 (certbot-auto 最新版の導入)

certbot-auto の Version 0.9.3 では、これらの不具合が解消していることを確認しました。

下記ページの手順に従って、最新バージョンの certbot-auto を導入してください。

DeprecationWarning について

certbot-auto の Version 0.9.3 においても、Python 2.6 について下記の DeprecationWarning が発生しますが、現時点では Certbot クライアントが正常に動作することを確認しました。

DeprecationWarning: Python 2.6 is no longer supported by the Python core team, please upgrade your Python. A future version of cryptography will drop support for Python 2.6
スポンサーリンク
Menu
ページトップへ