1. 概要
現時点(2022年5月11日)で、「py37」「py38」をスキップして書いております。
そのあたりは、「FreeBSD - メンテナンス・トラブルシュート - Python」あたりをご参照ください。
それが、3月の終わり頃で、実は、1ヶ月近く、動いていなかったのですが・・・。
ふと気づくと、「cron」のログで
/root/sh/certbot.sh: /usr/local/bin/certbot: not found
てなことになっておりますがな・・・。
「/usr/local/bin/certbot」は
/usr/local/bin/certbot-3.7
のシンボリックリンクでして、「/usr/local/bin/certbot-3.7」は、「python」のスクリプトファイルであり、その中身は
#!/usr/local/bin/python3.7
# EASY-INSTALL-ENTRY-SCRIPT: 'certbot==1.27.0','console_scripts','certbot'
てな感じで始まっておりますのでな、この時点(2022年5月11日)で、「/usr/local/bin/python3.7」は、削除しておりますので、こんなことになっておりますのじゃ。
2. インストール
「pkg」を見てみると
$ pkg search certbot
py38-certbot-1.22.0,1 Let's Encrypt client
py38-certbot-apache-1.22.0 Apache plugin for Certbot
py38-certbot-dns-cloudflare-1.22.0 Cloudflare DNS plugin for Certbot
・・・略・・・
ん?、結局、「py39-certbot」は、まだ「pkg」には、存在しないようなのです。
「pkg」でないと、いままで不都合なことが多かったんだけどな・・・。
最悪、「py38-cerbot」をインストールしなおすことも、考慮に入れつつ、「ports」で、「py39-cerbot」をインストールしてみることにします。
これが、「py37」の残骸があるもので、なかなかことがうまく運びませんでしたが・・・。
あらかじめ、下記のものをインストールします。
/usr/ports/security/py-acme
/usr/ports/security/py-josepy
/usr/ports/sysutils/py-distro
/usr/ports/textproc/py-charset-normalizer
/usr/ports/www/py-requests
上記、アルファベット順に記述しちゃいましたが、依存関係があるので、順番を変える必要があるかもしれません。
各々
cd ディレクトリ
make deinstall clean
make
make install
していくのですが、「make」「make install」時に、依存関係とは別に、「conflict」が発生して、エラーになることがあります。
これは、「make deinstall clean」では、削除されない「pkg」が存在するためで、これらは
pkg delete pyxx-パッケージ名
で、削除していくしかありません。
最終的に
pkg delete py37-certbot
pkg delete py38-certbot
して(もしかしたら、もっと前のバージョンを削除する必要があるかもしれません)、
cd /usr/ports/security/py-certbot
make deinstall clean
make
make install
で、インストールまでは行きます。
インストール時のメッセージを残しておきます。
Installing py39-certbot-1.27.0,1...
This port installs the "standalone" client only, which does not use and
is not the certbot-auto bootstrap/wrapper script.
The simplest form of usage to obtain certificates is:
# sudo certbot certonly --standalone -d <domain>, [domain2, ... domainN]>
NOTE:
The client requires the ability to bind on TCP port 80 or 443 (depending
on the --preferred-challenges option used). If a server is running on that
port, it will need to be temporarily stopped so that the standalone server
can listen on that port to complete the challenge authentication process.
For more information on the 'standalone' mode, see:
https://certbot.eff.org/docs/using.html#standalone
The certbot plugins to support apache and nginx certificate installation
will be made available in the following ports:
* Apache plugin: security/py-certbot-apache
* Nginx plugin: security/py-certbot-nginx
In order to automatically renew the certificates, add this line to
/etc/periodic.conf:
weekly_certbot_enable="YES"
More config details in the certbot periodic script:
/usr/local/etc/periodic/weekly/500.certbot-3.9
なんだか、ウィークリーに、実行するスクリプトファイルがあって、
/etc/periodic.conf
を上記のようにいじればよろしいと書いてありましたが・・・。
わたしの場合、バーチャルホストも同時に動作させているので、オリジナルのままではあかんのです。
なので、もともと書いてあるスクリプトで動作させます。
この後、そのスクリプトを動作させて、上記のメッセージに書いてあるように「py-certbot-apache」をいれなあかん(ウェブサーバが「apache」なので)と気づいて・・・。
cd /usr/ports/security/py-certbot-apache
make deinstall clean
make
make install
で、少なくとも更新がなければ、スクリプトが動作するところまでは、確認できました。
後は、現在の証明書を更新するときにうまくスクリプトが動作すれば問題ないですが・・・。
それは、その時までのお楽しみで・・・忘れちゃってたらどうしよう。