pkg・ports アップデート関連 - Ruby - ruby24 → ruby25

 クラウディア
1. 概要
2. バージョンの変更
3. 確認
4. 事後の対応

1. 概要

 いずれ、その日が来るとは思っていましたが

> pkg version -vl "<"
ruby-2.4.6,1                       <   needs updating (index has 2.5.5_1,1)
 ってことで、やっと 2.5 への移行が始まりました。  ruby 2.5 の登場は「Ruby 2.5.0 リリース」によれば、2017年12月のことで、ports への登場は、ずいぶん遅れていたように記憶しています。  「Ruby 2.5.5 リリース」によれば、ruby 2.5.5 は、2019年3月15日ですから、思ったほどの差ではなかった。  ほぼ、1ヶ月ですね。ports のリリースとしては十分な速度のような気がします。  で、いざアップグレードしようとすると

> portupgrade -vRr ruby
--->  Session started at: Mon, 22 Apr 2019 09:16:54 +0900
[Reading data from pkg(8) ... - 376 packages found - done]

・・・	略	・・・

==>   An older version of ruby is already installed (ruby-2.4.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[3]: stopped in /usr/ports/lang/ruby25
*** Error code 1

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

Stop.
make[1]: stopped in /usr/ports/databases/ruby-bdb
*** Error code 1

Stop.
make: stopped in /usr/ports/databases/ruby-bdb
** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portupgrade20190422-95186-cqcml9 env UPGRADE_TOOL=portupgrade UPGRADE_PORT=ruby24-bdb-0.6.6_5 UPGRADE_PORT_VER=0.6.6_5 make
** Fix the problem and try again.
--->  Build of databases/ruby-bdb ended at: Mon, 22 Apr 2019 09:21:13 +0900 (consumed 00:04:13)
--->  Upgrade of databases/ruby-bdb ended at: Mon, 22 Apr 2019 09:21:13 +0900 (consumed 00:04:13)
--->  ** Upgrade tasks 1: 0 done, 0 ignored, 0 skipped and 1 failed
--->  Listing the results (+:done / -:ignored / *:skipped / !:failed)
        ! databases/ruby-bdb (ruby24-bdb-0.6.6_5)       (unknown build error)
--->  Packages processed: 0 done, 0 ignored, 0 skipped and 1 failed
--->  Session ended at: Mon, 22 Apr 2019 09:21:13 +0900 (consumed 00:04:18)
 てなことになります。

2. バージョンの変更

 ruby 2.3 から ruby 2.4 への変更時は必要なかったような記憶があるのですが、今回は明示的なバージョン変更が必要なようなので・・・。

> portupgrade -o lang/ruby25 -f ruby24
[Reading data from pkg(8) ... - 376 packages found - done]
> pkg set -o lang/ruby24:lang/ruby25
Change origin from lang/ruby24 to lang/ruby25 for ruby-2.4.6,1? [y/N]: y Enter
 これでいけるかしら

> portupgrade -vRr ruby
--->  Session started at: Mon, 22 Apr 2019 09:16:54 +0900
[Reading data from pkg(8) ... - 376 packages found - done]

・・・	略	・・・

--->  Skipping 'databases/ruby-bdb'
/usr/local/lib/ruby/site_ruby/2.4/pkgtools/pkgtools.rb:487:in `__system': Command failed [exit code 127]: /usr/local/sbin/pkgdb -aFOQ (CommandFailedError)
        from /usr/local/lib/ruby/site_ruby/2.4/pkgtools/pkgtools.rb:510:in `__sudo'
        from /usr/local/lib/ruby/site_ruby/2.4/pkgtools/pkgtools.rb:516:in `xsudo'
        from /usr/local/lib/ruby/site_ruby/2.4/pkgtools/pkgdb.rb:1062:in `autofix!'
        from /usr/local/lib/ruby/site_ruby/2.4/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/2.4/optparse.rb:1062: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>'
 なんか、最後が気になりますが・・・。  以降、ちょっと注意すべきかな・・・。

3. 確認

 一応

> pkg version -vl "<"
 と、アップグレード対象はなくなったようです。

> pkg version -vn ruby
ruby-2.5.5_1,1                     =   up-to-date with index
> ruby --version
ruby 2.5.5p157 (2019-03-15 revision 67260) [amd64-freebsd11]
 バージョンも問題ないようです。  ruby の既存モジュールが正常に動作するかを注意深く見ていく必要がありそうですが・・・。

4. 事後の対応

 自前で作成した、ruby のモジュールを起動してみると・・・。

> ruby /パス/モジュール名.rb
Traceback (most recent call last):
        2: from /パス/モジュール名.rb:14:in `<main>'
        1: from /usr/local/lib/ruby/2.5/rubygems/core_ext/kernel_require.rb:59:in `require'
/usr/local/lib/ruby/2.5/rubygems/core_ext/kernel_require.rb:59:in `require': cannot load such file -- pry (LoadError)
gmake: *** [Makefile:52: モジュール名] エラー 1
 てなことになりまして・・・。  要は、ruby 2.4 時に rubygem でインストールしたモジュールは、ruby 2.5 で再度一からインストールする必要があるってことですな。  このあたり「ruby - gem(パッケージ管理)」へ記述していきます。  さらに、ruby メジャーバージョンをを変えたことによって portsdb が動かなくなったりします。  対処は「メンテナンス・トラブルシュート - pkg・ports アップデート関連 - portsnap portsdb portupgrade」をご参照ください。
ハイスピードプラン