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(パッケージ管理)」をご参照ください。