FreeBSD の Ports を downgrade したい時、以前は portsdowngrade を使うことができた。
FreeBSD が ports tree の管理を subversion から git に変えたので、portsdowngrade が使えなくなった。
git を使っていないので、 ports tree のバージョンを戻す方法がわからない。
port をひとつだけ一時的に戻すなら手動でもなんとかできる。
git の History を確認しながら手動で port のファイルを戻し、ダウングレードをした。
□ 手順
FreeBSD の port tree を用意する。
FreeBSD の port tree https://github.com/freebsd/freebsd-ports から目的の port を探す。
(今回は security/gnupg )
"History" をクリックし、目的のバージョンを探し、右にあるアイコン "View at this point in the history" をクリック。
(今回は 2.4.3にアップグレードする前、2023/2/8のコミットをクリック)
手元のソースと見比べ、更新されているファイル、削除されているフォルダ・ファイルをさがし、入れ替え・追加。
(今回は Makefile distinfo pkg-plist が変わっており、files/patch-dirmngr_server.c がなくなっていた)
必要なファイルがそろったらインストール実行
# make deinstall
# make install clean
以上
依存port にバージョンの制限があったり、複数のportsがからみあっていると、無理かも。
□ 参考サイト
- Downgrade a port in FreeBSD - bbrtj
- BEGIN_ENCRYPTION status output happens later in 2.4.1 (breaks Emacs's EasyPG)
- GnuPG version compatibility (EasyPG Assistant User’s Manual)
□ 背景
GnuPG の ports が 2023年6月に2.4.3にアップグレードしてから、emacs で GnuPGによるファイルの保存ができなくなった。このことは GnuEmacs も GnuPG も認識していたようだが、待てど暮らせど解決しないまま放置されていた。
おそらく対策が簡単だから。2.4前のバージョンに戻せばいい。
FreeBSD の ports が subversion で管理されていた頃は、 portsdowngrade という port を使うことで、簡単にバージョンを戻すことができた。
現在は git で管理されているので、使うことができなくなった。
Git で ports tree を管理すれば良いのだが、git を使ったことがないので、導入+使い方を修得するというハードルがあった。
一言で言うとめんどい。そのうち修正されるやろ、と放置していたのだが、まさか半年たっても修正されないとは…。ということでやっと実行。
※2024.03.04
2024年2月9日にGnuPGのportが 2.4.4 になった。
GnuPGの Release Note によると、Emacs で動かなくなっていた対応パッチ(T6481)がはいった模様。
port をアップグレードすると、Emacs でGnuPGが使えるようになっていた。