pkg・ports アップデート関連 - Ruby - ruby20 conflicts

1. 結局 ports や pkg のモジュールバージョンを変更する話なのだ

1. 結局 ports や pkg のモジュールバージョンを変更する話なのだ

 きっかけは ports のアップグレード中に発生しました。  いつものように ports のデータベースを更新して

> pkg version -vl "<"
vim-7.4.640                        <   needs updating (index has 7.4.648)
 vim のアップグレードが必要だな・・・と。

portupgrade -vR vim

====> Compressing man pages (compress-man)
===>  Installing for ruby-2.1.5_2,1
===>  Checking if ruby already installed
===>   An older version of ruby is already installed (ruby-,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 in /usr/ports/lang/ruby21.
*** Error code 1

Stop in /usr/ports/lang/ruby21.
*** Error code 1

Stop in /usr/ports/editors/vim.
*** Error code 1
 ということで、vim は ruby-2.1.5_2,1 に依存していて ruby-2.1.5_2,1 をインストールしようとしているんだが ruby-,1 があるために ruby-2.1.5_2,1 をインストールできないんだな・・・と。  ruby-2.0 を deinstall しようとして

> cd /usr/ports/lang/ruby20
> make deinstall
===>  Deinstalling for ruby20
===>   ruby20 not installed, skipping
 あれ? ruby20 がインストールされていない?

> pkg info | grep ruby
ruby-,1             Object-oriented interpreted scripting language
ruby20-bdb-0.6.6_4             Ruby interface to Oracle Berkeley DB revision 2 or later
 はいってる・ぞ・と。よくわからないので、ruby20 を reinstall して deinstall しようと

> cd /usr/ports/lang/ruby20
> make reinstall
===>  Installing for ruby20-,1
===>   ruby20-,1 depends on package: libffi>=0 - found
===>   ruby20-,1 depends on package: readline>=0 - found
===>   ruby20-,1 depends on shared library: - found (/usr/local/lib/
===>   ruby20-,1 depends on shared library: - found (/usr/local/lib/
===>   Registering installation for ruby20-,1
Installing ruby20-,1...
pkg-static: ruby20-,1 conflicts with ruby-,1 (installs files into the same place).  Problematic file: /usr/local/bin/erb20
*** Error code 70

Stop in /usr/ports/lang/ruby20.
*** Error code 1

Stop in /usr/ports/lang/ruby20.
*** Error code 1

Stop in /usr/ports/lang/ruby20.
 ruby20-,1 と ruby-,1 の間で conflict が発生しているぞ?なんか ports として別ものになっているようで。  しかし、ruby-,1 というのがどこにあるのかわからない・・・!?  しかたないので、pkg delete することにしました。

> pkg delete ruby-,1
Updating database digests format: 100%
Checking integrity... done (0 conflicting)
Deinstallation has been requested for the following 4 packages (of 0 packages in the universe):

Installed packages to be REMOVED:

The operation will free 62 MiB.

Proceed with deinstalling packages? [y/N]:
 他のものはともかく portupgurade や vim がなくなるそうで、もともと vim はアップグレードの予定があったからよいようなものの、仕方ないですね。インストールすることを念頭にいれて、「y」

[1/4] Deinstalling portupgrade-2.4.13_1,2...
[1/4] Deleting files for portupgrade-2.4.13_1,2: 100%
[2/4] Deinstalling ruby20-bdb-0.6.6_4...
[2/4] Deleting files for ruby20-bdb-0.6.6_4: 100%
[3/4] Deinstalling vim-7.4.640...
[3/4] Deleting files for vim-7.4.640: 100%
[4/4] Deinstalling ruby-,1...
[4/4] Deleting files for ruby-,1: 100%

 を reinstall やら install するやらで一件落着。