FreeBSD - メンテナンス・トラブルシュート - ruby - ruby31 → ruby32

 クラウディア
1. 概要
2. バージョンの変更
3. アップグレード
4. 再インストール
5. Redmine の対応

1. 概要

 現在、2024年5月1日です。  「FreeBSD 14.0 RELEASE」と「FreeBSD 13.3 RELEASE」を運用しています。  「FreeBSD 13.2 RELEASE」「FreeBSD 14.0 RELEASE」の時期に、「ruby32」はリリースされていたかと思いますが、「portupgrade」が「ruby32」に対応していなかったので、あえて「ruby31」を使っていました。  「FreeBSD 13.3 RELEASE」では、デフォルトの「ruby」が「ruby32」のようで。

/etc/make.conf
 には。

DEFAULT_VERSIONS+=ruby=3.1
 と書いちょって。

$ ls -lah /usr/local/bin/ruby*
lrwxr-xr-x 1 root wheel    6  5月  1 08:59 /usr/local/bin/ruby -> ruby31
-rwxr-xr-x 1 root wheel 6.1K  5月  1 08:59 /usr/local/bin/ruby31
 という状況なのですが。

/usr/local/bin/asciidoctor
 ちゅう、ファイル(「ruby」のスクリプト)の中身は。

#!/usr/local/bin/ruby32
 で、始まっちょる。  困ったもんです。

2. バージョンの変更


$ portupgrade -f ruby31 -o lang/ruby32
[Reading data from pkg(8) ... - 129 packages found - done]

$ pkg set -o lang/ruby31:lang/ruby32
Change origin from lang/ruby31 to lang/ruby32 for ruby-3.1.5,1? [y/N]:
 最後の行は、y Enter を入力します。

vi /etc/make.conf

DEFAULT_VERSIONS+=ruby=3.1
 の行を下記へ変更します。

DEFAULT_VERSIONS+=ruby=3.2

3. アップグレード


cd /usr/ports/lang/ruby32
make config
 いままでの経験で、「DOCS」のオプションだけ、はずします。
「/usr/ports/lang/ruby32」-「make config」

 アップグレード。
 ここは、依存関係なし、強制アップグレードにします。


portupgrade -f ruby
 これが、途中でこけました。  「make」が通って、インストールの箇所ですな。

===>  Cleaning for ruby-3.2.4,1
--->  Cleaning out obsolete shared libraries
/usr/local/lib/ruby/site_ruby/3.1/pkgtools/pkgtools.rb:487:in '__system': Command failed [exit code 127]: /usr/local/sbin/pkgdb -aFOQ (CommandFailedError)
        from /usr/local/lib/ruby/site_ruby/3.1/pkgtools/pkgtools.rb:510:in '__sudo'
        from /usr/local/lib/ruby/site_ruby/3.1/pkgtools/pkgtools.rb:516:in 'xsudo'
        from /usr/local/lib/ruby/site_ruby/3.1/pkgtools/pkgdb.rb:1062:in 'autofix!'
        from /usr/local/lib/ruby/site_ruby/3.1/pkgtools/pkgdb.rb:1058:in 'autofix'
        from /usr/local/sbin/portupgrade:519:in 'block (2 levels) in main'
        from /usr/local/sbin/portupgrade:855:in 'block in main'
        from /usr/local/lib/ruby/3.1/optparse.rb:1102:in 'initialize'
        from /usr/local/sbin/portupgrade:238:in 'new'
        from /usr/local/sbin/portupgrade:238:in 'main'
        from /usr/local/sbin/portupgrade:2380:in '<main>'
 仕方ないなぁ。

cd /usr/ports/lang/ruby32
make
make reinstall
 これで、「ruby」は、アップグレードできました。

4. 再インストール

 本体は、アップグレードできましたが、依存するモジュールで、再インストールが必要です。  ってことで、依存の前の方からインストールやアップグレードを行っていきます。  「ruby-gems」の更新。

pkg delete ruby31-gems
 で、いったん「ruby31-gems」を削除して再インストール。

cd /usr/ports/devel/ruby-gems
make clean
make
make reinstall
 同じ要領で、「ruby-bdb」

pkg delete ruby31-bdb

cd /usr/ports/databases/ruby-bdb
make clean
make
make reinstall
 「rubygem-rdoc」を再インストール。

cd /usr/ports/devel/rubygem-rdoc
make clean
make
make reinstall
 「portupgrade」を再インストール。

cd /usr/ports/ports-mgmt/portupgrade
make clean
make
make reinstall
 これで、「portupgrade」が動作するようになりました。

5. Redmine の対応

 安心していたら、1台のマシンでは「apache」がこけておりました。

service apache24 configtest
 すると、こんなエラーに。

Performing sanity check on apache24 configuration:
httpd: Syntax error on line 543 of /usr/local/etc/apache24/httpd.conf: Syntax error on line 7 of /usr/local/etc/apache24/Includes/redmine.conf: Cannot load /usr/local/lib/ruby/gems/3.1/gems/passenger/buildout/apache2/mod_passenger.so into server: Cannot open "/usr/local/lib/ruby/gems/3.1/gems/passenger/buildout/apache2/mod_passenger.so"
 このマシンでは、「Redmine」をインストールしているので、「rubygem-passenger」を再インストールする必要があったのでした。  さらに「rubygem-passenger」は、「rubygem-etc」を必要としているらしいので・・・。

cd /usr/ports/devel/rubygem-etc
make clean
make
make reinstall

cd /usr/ports/www/rubygem-passenger
make clean
make
make reinstall
 それから、「Redmine」のサイト定義を編集します。

vi /usr/local/etc/apache24/Includes/ファイル名.conf
 下記のように記述している箇所がありますので。「3.1」を「3.2」へ「ruby31」を「ruby32」へと置換します。

LoadModule passenger_module /usr/local/lib/ruby/gems/3.1/gems/passenger/buildout/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/3.1/gems/passenger
PassengerRuby /usr/local/bin/ruby31
 これで、「apache」を再起動したら、正常に動作するようになりました。
ハイスピードプラン【usus ウズウズ】神戸養蜂場