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

 クラウディア
1. 概要
2. バージョンの変更
3. アップグレード
4. 再インストールが必要なモジュール

1. 概要

 本記事を書いているのは、2022年4月25日です。  とうとう、この日がやってきたかな、という感じです。

$ pkg version -vl "<"
ruby-2.7.6,1                       <   needs updating (index has 3.0.4_1,1)
 てなことになっております。  「Ruby 2.6.0 Released」によれば、2.6.0 のリリースが、2018年12月25日(おおクリスマス)ってことで。  「Ruby 2.6.4 リリース」によれば、2.6.4 のリリースが、2019年 8月28日。  「Ruby 2.7.2 リリース」によれば、2.7.2 のリリースが、2020年10月2日。  「Ruby 3.0.4 リリース」によれば、3.0.4 のリリースが、2022年 4月12日。  「3.0」も「3.0.4」へ至ったので、「ports」の正式版が、「3.0.4」へ移行したということでしょう。

2. バージョンの変更


$ portupgrade -f ruby27 -o lang/ruby30
[Reading data from pkg(8) ... - 479 packages found - done]

$ pkg set -o lang/ruby27:lang/ruby30
Change origin from lang/ruby27 to lang/ruby30 for ruby-2.7.6,1? [y/N]:
 最後の行は、y Enter を入力します。  後でコメントしなおすかもしれませんが

vi /etc/make.conf

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

DEFAULT_VERSIONS+=ruby=3.0

3. アップグレード

 前回、前々回と、いきなり、「portsupgrade」でやろうとして失敗しているので、「ruby 2.7」のアンインストールと「ruby 3.0.4」のインストールを行います。

cd /usr/ports/lang/ruby27
make deinstall clean

cd /usr/ports/lang/ruby30
make config
 オプションは、デフォルトのままにしておきます。
「/usr/ports/lang/ruby30」-「make config」


cd /usr/ports/lang/ruby30
make
make install
 ここで

===>  Installing for ruby-3.0.4_1,1
===>  Checking if ruby is already installed
===>   An older version of ruby is already installed (ruby-2.7.6,1)
      You may wish to ''make deinstall'' and install this port again
      by ''make reinstall'' to upgrade it properly.
      If you really wish to overwrite the old port of ruby
      without deleting it first, set the variable "FORCE_PKG_REGISTER"
      in your environment or the "make install" command line.
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/lang/ruby30
*** Error code 1

Stop.
make: stopped in /usr/ports/lang/ruby30
 「ruby 2.7」は、アンインストールしたんだけどな。

cd /usr/ports/lang/ruby30
make
make reinstall
 で、インストールできました。  ここで、「ruby」の バージョンを見てみます。

$ ruby --version
ruby 3.0.4p208 (2022-04-12 revision 3fa771dded) [amd64-freebsd12]
 一応、本体のアップグレードは、成功したようです。  後は、「ruby 2.6」から「2.7」へ移行したときのように地道にアップグレードしていくしかないようです。

4. 再インストールが必要なモジュール

 「ports」を更新して、再インストールが必要なモジュールを調べようとしたら、その途中でいきなり。

portsdb -Fu
make: exec(portsdb) failed (No such file or directory)
*** Error code 1
 とな、「portupgrade」も「ruby」に依存してたんだっけ?  とりあえず

cd /usr/ports/ports-mgmt/portupgrade
make clean
make
make reinstall
 するとこれが途中で

linking shared-object bdb.so
===>  Staging for ruby30-bdb-0.6.6_8
===>   ruby30-bdb-0.6.6_8 depends on file: /usr/local/bin/ruby30 - found
===>   Generating temporary packing list
/usr/bin/install -c -m 0755 bdb.so /usr/ports/databases/ruby-bdb/work/stage/usr/local/lib/ruby/site_ruby/3.0/amd64-freebsd12
/usr/bin/strip /usr/ports/databases/ruby-bdb/work/stage/usr/local/lib/ruby/site_ruby/3.0/amd64-freebsd12/bdb.so
/bin/mkdir -p /usr/ports/databases/ruby-bdb/work/stage/usr/local/share/doc/ruby30/bdb/doc
(cd /usr/ports/databases/ruby-bdb/work/bdb-0.6.6 && install  -m 0644 Changes README.en bdb.rd docs/*.rd /usr/ports/databases/ruby-bdb/work/stage/usr/local/share/doc/ruby30/bdb)
(cd /usr/ports/databases/ruby-bdb/work/bdb-0.6.6/docs/doc && /bin/sh -c '(/usr/bin/find -Ed $1 $3 | /usr/bin/cpio -dumpl $2 >/dev/null 2>&1) &&  /usr/bin/find -Ed $1 $3 \(   -type d -exec /bin/sh -c '\''cd '\''$2'\'' && chmod 755 "$@"'\'' . {} +  -o -type f -exec /bin/sh -c '\''cd '\''$2'\'' && chmod 0644 "$@"'\'' . {} + \)' COPYTREE_SHARE . /usr/ports/databases/ruby-bdb/work/stage/usr/local/share/doc/ruby30/bdb/doc)
cd: /usr/ports/databases/ruby-bdb/work/bdb-0.6.6/docs/doc: No such file or directory
*** Error code 2

	・・・	以下略	・・・
 さかのぼりますか。

cd /usr/ports/databases/ruby-bdb
make deinstall clean
make
make install
 するとこれ、「make」の時点で、前と同じようになる。  はた、と気づいて。

make config
「/usr/ports/databases/ruby-bdb」-「make config」

 「DOCS」のチェックをはずします。
 再度


cd /usr/ports/databases/ruby-bdb
make deinstall clean
make
make install
 元々のものを

cd /usr/ports/ports-mgmt/portupgrade
make deinstall clean
make
make install
 とりあえず、「portupgrade」までは、できました。  あとは、数日、様子をみてみます。  様子見中の1。  「vim」を起動しようとして

vim パス/ファイル名
ld-elf.so.1: Shared object "libruby27.so.27" not found, required by "vim"
 てなことになりました。  「vim」は、再インストールです。

cd /usr/ports/editors/vim
make deinstall clean
make
make install
ハイスピードプラン