1. 概要
現在、2025年5月11日です。
実機では、「FreeBSD 14.2 RELEASE」を運用しています。
現時点で、「ruby 3.2.8」を使用しております。
バージョンを忘れましたが、「xxd」のバージョンをアップしようとするときに、「ruby 3.3」をインストールしようとしていましたので、この際、「ruby 3.2」を「ruby 3.3」へアップグレードしようと思います。
2. バージョンの変更
以下、「root」ユーザ権限で。
vi /etc/make.conf
DEFAULT_VERSIONS+=ruby=3.2
の行を下記へ変更します。
元の行がなければ、まんま、新規追加です。
DEFAULT_VERSIONS+=ruby=3.3
$ portupgrade -f ruby32 -o lang/ruby33
[Reading data from pkg(8) ... - 698 packages found - done]
$ pkg set -o lang/ruby32:lang/ruby33
Change origin from lang/ruby32 to lang/ruby33 for ruby-3.2.8,1? [y/N]:
最後の行は、y Enter を入力します。
3. アップグレード
cd /usr/ports/lang/ruby33
make config
いままでの経験で、「DOCS」「RDOCS」のオプションは、はずします。
アップグレード。
ここは、依存関係なし、強制アップグレードにします。
portupgrade -f ruby
これが、「ruby 31」→「ruby 32」のときと同様、途中でこけました。
「make」が通って、インストールの箇所ですな。
https://www.ruby-lang.org/en/
===> Cleaning for ruby-3.3.8,1
---> Cleaning out obsolete shared libraries
/usr/local/lib/ruby/site_ruby/3.2/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.2/pkgtools/pkgtools.rb:510:in '__sudo'
from /usr/local/lib/ruby/site_ruby/3.2/pkgtools/pkgtools.rb:516:in 'xsudo'
from /usr/local/lib/ruby/site_ruby/3.2/pkgtools/pkgdb.rb:1062:in 'autofix!'
from /usr/local/lib/ruby/site_ruby/3.2/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.2/optparse.rb:1153: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/ruby33
make
make reinstall
これで、「ruby」は、アップグレードできました。
4. 再インストール
本体は、アップグレードできましたが、依存するモジュールで、再インストールが必要です。
ってことで、依存の前の方からインストールやアップグレードを行っていきます。
「ruby-gems」の更新。
pkg delete ruby32-gems
(しまった、前回もやっちまった、いったん「redmine」は退避しておくべきだった・・・)
で、いったん「ruby31-gems」を削除して再インストール。
cd /usr/ports/devel/ruby-gems
make clean
make
make reinstall
同じ要領で、「ruby-bdb」
pkg delete ruby32-bdb
cd /usr/ports/databases/ruby-bdb
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 541 of /usr/local/etc/apache24/httpd.conf: Syntax error on line 6 of /usr/local/etc/apache24/Includes/redmine.conf: Cannot load /usr/local/lib/ruby/gems/3.2.g/gems/passenger/buildout/apache2/mod_passenger.so into server: Cannot open "/usr/local/lib/ruby/gems/3.2.g/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.2」を「3.3」へ「ruby32」を「ruby33」へと置換します。
LoadModule passenger_module /usr/local/lib/ruby/gems/3.2/gems/passenger/buildout/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/3.2/gems/passenger
PassengerRuby /usr/local/bin/ruby33
これで、「apache」を再起動したら、正常に動作するようになりました。
ただし、これでは、解決しない。
今更ではありますが。
/usr/local/www/redmine
を別の名前で退避しておいて。
/usr/ports/www/redmine51
を再インストールします。
今回は。
/usr/ports/www/redmine60
が、存在しておりましたので、こちらをインストールします。
退避しておいた「redmine」の。
config/database.yml
の行を下記へ変更します。
# Default setup is given for MySQL 5.7.7 or later.
# Examples for PostgreSQL, SQLite3 and SQL Server can be found at the end.
# Line indentation must be 2 spaces (no tabs).
production:
adapter: postgresql
database: database
host: localhost
username: username
password: "password"
# Use "utf8" instead of "utfmb4" for MySQL prior to 5.7.7
encoding: utf8
この後、最終的には、「www」に所有権を渡すデータをすべて、作業者の所有権にして。
「redmine」のディレクトリへ移動して。
「tcsh」で書きますが。
データベース作成。
setenv RAILS_ENV production
bundle exec rake db:migrate
デフォルトデータ登録。
setenv RAILS_ENV production
setenv REDMINE_LANG ja
bundle exec rake redmine:load_default_data
すると、「redmine」のデータが残ったまま、アクセスできるように復活しました。