Re: milter-managerが起動しない

From: Tomoaki AOKI <junchoon_at_dec.sakura.ne.jp>
Date: Sun, 14 Aug 2022 09:00:57 UTC
On Sat, 13 Aug 2022 22:27:50 +1000
Aoba Dai <aobadai@gmail.com> wrote:

> 再度すみません。
> 
> miter-managerは起動するようになったのですが、その過程で
> ruby関係を削除した時に一緒に削除されたportupgradeを
> portsから入れようとするとruby関連で色々とエラーになり
> 入りませんでした。
> pkgで入れてみるとついでにruby2.7がruby3.0にアップ
> グレードされてしまいましが一応入りました。
> この時点で milter-manager`も portupgrade も
> 使えるようになったので問題が無いと言えば問題は無い
> のですが、なんかしっくりしません。
> 
> こういうようなあっちを立てればこっちが立たない時は
> どうするのが正解なのでしょうか?


青木@名古屋です。

packagesは特にバージョン指定で依存しているもの以外、3.0で
ビルドされてます。 よって、lang/ruby30が入っておらず
lang/ruby27が入っている状態なら強制的に更新されます。
(追加で入れてはくれない。)

portupgradeのビルドに失敗したのは、databases/ruby-bdbが
3.0でビルドされたままの状態だったということはありませんか?

また、portupgrade[-devel]をお使いなら、ruby更新関係で
見るべきUPDATINGのエントリは20190420のkang/ruby24の
ものです。(以降のエントリではpkg以外は無視されています。)
今回のダウングレードの場合、24,25,2.5を各々30,27,2.7に
読み替える必要がありますね。
portupgrade自体がrubyで動いているのでちょっと面倒です。


あと、FreshPortsで見てみると、

 https://www.freshports.org/mail/milter-manager/

mail/milter-manager自体はruby3.0対応っぽいですが、

 https://www.freshports.org/devel/rubygem-gio2/

依存物のdevel/rubygem-gio2がruby2.7前提のようですね。
そのまた依存物も2.7依存と3.0依存が混在しているようです。
...が、lang/ruby27依存になっているもののMakefileを見ても
それらしい指定がないのが不可解です。

 ※FreshPortsのDBがおかしくなっている可能性は
  ありますが。

恐らくですが、本来ならmail/milter-managerが2.7でないと
正常動作しないなら明示的にlang/ruby27に依存させて、
依存するものも同様にすべきなのでしょうが、依存物の方は
3.0依存(2.xサポート廃止)のものも使っていたりすると
強制的に2.7依存にはできないので、FLAVORで両対応できる
ようにしないといけないですね。

lang/ruby*同士は相互にCONFLICTしていなさそうですし、
/usr/local/lib/ruby/以下もサブディレクトリ毎に3.0の
ようにバージョン毎のディレクトリを作るようになって
いるので、複数のrubyを共存させることはできそうです。
Mk/bsd.ruby.mkやMk/Uses/gems.mkを見てもわざわざCONFLICT
させるようなコードにはなっていないように見えます。

> 
> -- 
> Dai Aoba <aobadai@gmail.com>
> 
> 
> On Sat, 13 Aug 2022 16:46:02 +1000
> Aoba Dai <aobadai@gmail.com> wrote:
> > 悸村様
> > 
> > #MLのアドレス間違って送信したので再送メールになります。
> > 
> > コメントありがとうございます。
> > 
> > > 一方、 ports/UPDATING で示唆されている如く、ruby のバージョンを 2.7 に
> > > 指定し make install した milter-manager は、起動します。
> > > (試験的にインストールしただけで、実使用していません)。
> > 
> > 貴重なご指摘ありがとうございます。
> > そういうことなんですね。
> > 
> > 私の環境で、 
> > 
> > pkg delete ruby
> > pkg delete ruby27
> > 
> > とruby関係をアンインストールしてから、make.conf に
> > 
> > DEFAULT_VERSIONS+=ruby=2.7
> > 
> > を加え、milter-manager を make してみたら、
> > 
> > Installing rubygem-fiddle-1.1.0_1...
> > ===>   rubygem-gio2-3.5.1 depends on package: rubygem-fiddle>=0 - found
> > ===>   Returning to build of rubygem-gio2-3.5.1
> > ===>   rubygem-gio2-3.5.1 depends on package: rubygem-gobject-introspection>=3.5.1 - not found
> > ===>   rubygem-gio2-3.5.1 depends on package: rubygem-gobject-introspection>=3.5.1 - not found
> > *** Error code 1
> > 
> > Stop.
> > make[2]: stopped in /usr/ports/devel/rubygem-gio2
> > *** Error code 1
> > 
> > Stop.
> > make[1]: stopped in /usr/ports/mail/milter-manager
> > *** Error code 1
> > 
> > Stop.
> > make: stopped in /usr/ports/mail/milter-manager
> > #
> > 
> > となって、 rubyが2.7だとダメなエラーが出たので、改めて
> > ports で rubygem-gobject-introspection をインストールしてから
> > 再度 milter-manager をmakeしたら最後まで通りました。
> > この状態でmilter-managerが起動できるようになりました。
> > 
> > 念のためもう一度 ruby と milter-manager を消してから
> > 同じ手順を踏むとエラー無くインストールが完了し、起動もできる
> > ようになりました。
> > 
> > という事で、ports/UPDATING見ないとダメだったのですね。
> > 
> > 言い訳になりますけど、FreeBSD はサポートが切れるタイミング
> > (枯れたタイミング)で次のリリースにアップグレードしてきたので
> > この手のトラブルはほぼ淘汰されてるという先入観がありました。
> > アップグレード直後に portupgrade を ports で入れると
> > ruby3,0で入ってしまいますし。
> > 
> > ともあれ、milter-managerがまた起動するようになりました。
> > ありがとうございました。
> > 
> > -- 
> > Dai Aoba <aobadai@gmail.com>
> > 
> > 
> > On Sat, 13 Aug 2022 01:26:01 +0900
> > xlsvx <xlsvx@yahoo.co.jp> wrote:
> > > 悸村です。
> > > milter-manager を使用していない者ですが、気付いた点を投稿させて頂きます。
> > > 
> > > 時系列を追うと、次のようになります。
> > > A. 2022.04.21
> > > 標準 ruby が 2.7 から 3.0 に更新された。
> > > /usr/ports/UPDATING
> > > 
> > > B. 2022.05.16
> > > FreeBSD 13.1-RELEASE Announcement
> > > https://www.freebsd.org/releases/13.1R/announce/
> > > 
> > > C. 2022.07.28
> > > mail/milter-manager/Makefile のタイムスタンプ (gitup ports で取得)
> > > 
> > > 我が家の FreeBSD-13.1R でも、pkg でインストールした milter-manager は
> > > 起動しません。同じエラーが表示されています。
> > > 
> > > 一方、 ports/UPDATING で示唆されている如く、ruby のバージョンを 2.7 に
> > > 指定し make install した milter-manager は、起動します。
> > > (試験的にインストールしただけで、実使用していません)。
> > > 
> > > > # milter-manager
> > > > failed to listen: failed to bind(): unix:/var/run/milter-manager/milter-manager.sock: そのようなファイルまたはディレクトリはありません
> > > 
> > > 指定法(UPDATING から引用)
> > > >   If you compile your own ports you may keep 2.7 as the default version by
> > > >   adding the following lines to your /etc/make.conf file:
> > > > 
> > > >   # 
> > > >   # Keep ruby 2.7 as default version
> > > >   #
> > > >   DEFAULT_VERSIONS+=ruby=2.7
> > > 
> > > 推測ですが、いま現在、FreeBSD ports/packages の milter-manager は
> > > いまだ ruby-3.0 を前提に構築されていないのではないでしょうか。
> > > ruby-3.0 / 2.7 混在の環境で、動いているマシンがあるそうですが、私のほう
> > > では何も解らない状態です。
> > > (妄言多謝)
> > > 
> > > -- 
> > > 悸村成一

-- 
青木 知明  [Tomoaki AOKI]    <junchoon@dec.sakura.ne.jp>