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 へのアップデートに伴う情報の更新を行いました。
-
パッケージ名の変更に伴い "centos-release-SCL" を "centos-release-scl" に書き換えました。
- 2016年10月14日
-
- certbot-auto 0.9.3 において、これらの不具合が解消していることを確認したため、新・解決策 (certbot-auto 最新版の導入) を公開しました。
不具合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
完了しました!
※リポジトリは自動的に (2016年06月02日 削除)。/etc/yum.repos.d/CentOS-SCL.repo
へ追加されます
※リポジトリは自動的に、下記の場所へ追加されます(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
注意事項
上記の 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
- スポンサーリンク