Linux

CentOS 8 で Snap から certbot パッケージをインストールする

投稿日:2021年1月5日 更新日:

1. はじめに

CentOS 8 でよく利用されている EPEL リポジトリには、certbot パッケージが用意されています(certbot というのは、コマンドラインから Let’s Encrypt を使うためのツールです)。

しかし、この certbot パッケージに含まれている certbot コマンドを実行すると、以下のエラーが発生する場合があります。

Traceback (most recent call last): 
  File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 570, in _build_master 
    ws.require(__requires__) 
  File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 888, in require 
    needed = self.resolve(parse_requirements(requirements)) 
  File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 779, in resolve 
    raise VersionConflict(dist, req).with_context(dependent_req) 
pkg_resources.ContextualVersionConflict: (idna 3.0 (/usr/lib/python3.6/site-packages), Requirement.parse('idna<2.8,>=2.5'), {'requests'}) 
During handling of the above exception, another exception occurred: 
Traceback (most recent call last): 
  File "/usr/bin/certbot", line 6, in <module> 
    from pkg_resources import load_entry_point 
  File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3095, in <module> 
    @_call_aside 
  File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3079, in _call_aside 
    f(*args, **kwargs) 
  File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3108, in _initialize_master_working_set 
    working_set = WorkingSet._build_master() 
  File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 572, in _build_master 
    return cls._build_from_requirements(__requires__) 
  File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 585, in _build_from_requirements 
    dists = ws.resolve(reqs, Environment()) 
  File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 779, in resolve 
    raise VersionConflict(dist, req).with_context(dependent_req) 
pkg_resources.ContextualVersionConflict: (idna 3.0 (/usr/lib/python3.6/site-packages), Requirement.parse('idna<2.8,>=2.5'), {'requests'})

この内容を解読して対応してもいいかもしれませんが、それよりは Snap が持っている certbot パッケージを利用した方が早いです(Snap は、Linuxディストリビューションに依存しないパッケージ管理システムです)。

ということで、CentOS 8 で Snap から certbot パッケージを取得して利用する手順について説明します。

※ 詳細は Certbot – Centosrhel8 Other で説明されています。

2. 前提とする環境

  • OS : CentOS 8
  • EPEL リポジトリは導入済み。
  • EPEL リポジトリから certbot パッケージをインストールして使っている。

3. snapd をインストールする

snapd パッケージをインストールします。

$ sudo dnf install snapd

snapd を有効にして開始します(クライアントからのアクセスを待ち受ける)。

$ sudo systemctl enable --now snapd.socket
  • --nowenable と合わせて指定することで、サービスの「開始」も行います。
  • クライアントがアクセスしてきたら snapd.service に処理を任せるようです。

snap ディレクトリのシンボリックリンクを作成します。

$ sudo ln -s /var/lib/snapd/snap /snap
  • classic snap support を有効にするため。

4. snapd のバージョンを最新にする

Certbot – Centosrhel8 Other には、まず 以下のコマンドを実行せよと書いてあります。

$ sudo snap install core

しかし、なぜかエラーになったので、代わりに以下のコマンドを実行します。

$ sudo snap install hello-world
  • hello-world というパッケージがインストールされるのに伴い、core パッケージもインストールされます。

core パッケージを更新します。

$ sudo snap refresh core

5. 元から入っていた certbot パッケージを削除する

dnf コマンドでインストールしていた certbot パッケージを削除します。

$ sudo dnf remove certbot

6. Snap から certbot パッケージをインストールする

Snap から certbot パッケージをインストールします。

$ sudo snap install --classic certbot
  • --classic オプション: Snap をクラシックモードにし、セキュリティの制限を無効にします

certbot コマンドのシンボリックリンクを作成します。

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

7. certbot コマンドを実行する

certbot コマンドが正常に実行できるはずです。

$ certbot --help
$ certbot --version 
certbot 1.10.1

8. メモ

Certbot – Certbot Instructions を読むと、certbot パッケージは Snap を使ってインストールすることが推奨されている?ように感じました。

9. 参考

📂-Linux

執筆者:labo


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Linux

Linux のコマンドラインで発生するビープ音を消す

Linux のコマンドでビープ音を消す方法を紹介します。

CentOS

CentOS 6 での yum update エラーに対応しました

問題 先日、CentOS 6.9 で yum update したところ、以下のエラーが発生しました。 https://ca.mirror.babylon.network/remi/enterprise …

Linux

tree コマンドの結果を適切に表示する

tree コマンドの結果を適切に表示する方法を紹介します。

Linux

【Ubuntu】pip install –upgrade pip コマンドを実行すると、その後、ImportError: cannot import name main というエラーが発生する場合の対応方法

「pip install –upgrade pip」コマンドを実行した後、pip コマンドを実行すると「ImportError: cannot import name main」というエラーが発生す …

Linux

Ubuntu 18.04 (WSL) で curl がインストールエラーになったので対応しました

Ubuntu 18.04 LTS (WSL) の環境で curl コマンドをインストールしようとしたところ、エラーになりました。 この時の対応方法を説明します。 目次1. 状況2. 対応手順参考 1. …