- 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
オプションは、デフォルトのままにしておきます。
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
「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
|