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」をご参照ください。