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

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

1. 概要

 本記事を書いているのは、2019年9月11日ですが、実は数日前から更新は発生しています。

> pkg version -vl "<"
ruby-2.5.6,1                       <   needs updating (index has 2.6.4,1)
 「Ruby 2.6.0 Released」によれば、2.6.0 のリリースが、2018年12月25日(おおクリスマス)ってことで。  「Ruby 2.6.4 リリース」によれば、2.6.4 のリリースが、2019年8月28日。  半年余りで安定してきたので、ports の正式バージョンを 2.6 にしましょうってことでしょうか。

2. バージョンの変更


> portupgrade -o lang/ruby26 -f ruby25
[Reading data from pkg(8) ... - 809 packages found - done]
> pkg set -o lang/ruby25:lang/ruby26
Change origin from lang/ruby25 to lang/ruby26 for ruby-2.5.6,1? [y/N]: y Enter

3. アップグレード

 ところが・・・。

> portupgrade -vRr ruby
[Reading data from pkg(8) ... - 809 packages found - done]
[Gathering depends for lang/ruby26 .......................................................... done]

・・・	略	・・・

linking shared-object bdb.so
===>  Staging for ruby26-bdb-0.6.6_7
===>   ruby26-bdb-0.6.6_7 depends on file: /usr/local/bin/ruby26 - 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/2.6/amd64-freebsd11
/usr/bin/strip /usr/ports/databases/ruby-bdb/work/stage/usr/local/lib/ruby/site_ruby/2.6/amd64-freebsd11/bdb.so
/bin/mkdir -p /usr/ports/databases/ruby-bdb/work/stage/usr/local/share/doc/ruby26/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/ruby26/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/ruby26/bdb/doc)
/bin/mkdir -p /usr/ports/databases/ruby-bdb/work/stage/usr/local/share/examples/ruby26/bdb/
(cd /usr/ports/databases/ruby-bdb/work/bdb-0.6.6/examples/ && /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/examples/ruby26/bdb "! -empty")
====> Compressing man pages (compress-man)
** Command failed [exit code 127]: /usr/local/sbin/pkgdb -aFOQ
--->  Skipping 'databases/ruby-bdb'
Traceback (most recent call last):
	10: from /usr/local/sbin/portupgrade:2380:in `<main>'
	 9: from /usr/local/sbin/portupgrade:238:in `main'
	 8: from /usr/local/sbin/portupgrade:238:in `new'
	 7: from /usr/local/lib/ruby/2.5/optparse.rb:1062:in `initialize'
	 6: from /usr/local/sbin/portupgrade:855:in `block in main'
	 5: from /usr/local/sbin/portupgrade:519:in `block (2 levels) in main'
	 4: from /usr/local/lib/ruby/site_ruby/2.5/pkgtools/pkgdb.rb:1058:in `autofix'
	 3: from /usr/local/lib/ruby/site_ruby/2.5/pkgtools/pkgdb.rb:1062:in `autofix!'
	 2: from /usr/local/lib/ruby/site_ruby/2.5/pkgtools/pkgtools.rb:516:in `xsudo'
	 1: from /usr/local/lib/ruby/site_ruby/2.5/pkgtools/pkgtools.rb:510:in `__sudo'
/usr/local/lib/ruby/site_ruby/2.5/pkgtools/pkgtools.rb:487:in `__system': Command failed [exit code 127]: /usr/local/sbin/pkgdb -aFOQ (CommandFailedError)
 「ruby-bdb」でこけちゃいました。  ruby 自体は、アップグレードされているようなのです。

> ruby --version
ruby 2.6.4p104 (2019-08-28 revision 67798) [amd64-freebsd11]
 パッケージはアップグレードなしになってしまっているし

> pkg version -vl "<"
 とりあえず、「ruby-bdb」は、再インストールするとして

cd /usr/ports/databases/ruby-bdb
make deinstall clean
make
make install
 後は、ruby2.4 から 2.5 へ移行したときのように地道にアップグレードしていくしかないようです。

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

 前項の「ruby-bdb」を含めて、再インストールしやすいように、「ports」のディレクトリを含めて一覧化しておきます。

/usr/ports/databases/ruby-bdb
/usr/ports/devel/ruby-gems
/usr/ports/ports-mgmt/portupgrade
 環境によっては、「/usr/ports/devel/ruby-gems」は、厄介です。  「/etc/make.conf」をいじる必要があります。

vi /etc/make.conf

DEFAULT_VERSIONS+=ruby=2.5
 を記述して

cd /usr/ports/devel/ruby-gems
make deinstall clean
vi /etc/make.conf

DEFAULT_VERSIONS+=ruby=2.6
 に書き換えて

cd /usr/ports/devel/ruby-gems
make deinstall clean
make
make install
 ruby 2.5 時に rubygem でインストールしたモジュールは、ruby 2.6 で再度一からインストールする必要があります。  これに関しては、「ruby - gem(パッケージ管理)」をご参照ください。
ハイスピードプラン