macportsのregistry.db(2)

ruby19をupdateしようとするとエラーがでてしまいます。

--->  Computing dependencies for ruby19
Error: Failed to activate ruby19: sqlite error: another row available (100) while executing query: SELECT portfile FROM registry.ports WHERE id=5663

port installed ruby19
The following ports are currently installed:
  ruby19 @1.9.3-p551_6+doc (active)
  ruby19 @1.9.3-p551_9+doc

インストールはできていますが、activateにできないようです。

sudo sqlite3 /opt/local/var/macports/registry/registry.db
SQLite version 3.28.0 2019-04-16 19:49:53
Enter ".help" for usage hints.
sqlite> select * from ports WHERE ID==5663;
5663|ruby19||/opt/local/var/macports/software/ruby19/ruby19-1.9.3p551_6+doc.darwin_9.ppc.tbz2|0|1.9.3p551|6|+doc||installed|1530188052|image|ppc|0|darwin|9|none|0
sqlite> DELETE  from ports WHERE ID==5663;
Error: no such collation sequence: VERSION

sqlite3で確認して、対象を削除しようとしますができません。

[MacPorts-2.5.4/src/cregistry]sudo sqlite3 /opt/local/var/macports/registry/registry.db
SQLite version 3.28.0 2019-04-16 19:49:53
Enter ".help" for usage hints.
sqlite> PRAGMA integrity_check;
Error: no such collation sequence: VERSION
sqlite> .load macports.sqlext
sqlite> PRAGMA integrity_check;
ok
sqlite> DELETE  from ports WHERE ID==5663;

macports.sqlextをロードする事で無事削除できました。

ruby19をuninstallして、

[MacPorts-2.5.4/src/cregistry]sudo sqlite3 /opt/local/var/macports/registry/registry.db
Password:
SQLite version 3.28.0 2019-04-16 19:49:53
Enter ".help" for usage hints.
sqlite> .load macports.sqlext
sqlite> .output 0609.txt
sqlite> .dump
sqlite> .quit
[MacPorts-2.5.4/src/cregistry]head 0609.txt
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
.load macports.sqlext   を追加
CREATE TABLE metadata (key UNIQUE, value);

[MacPorts-2.5.4/src/cregistry]gsed '3i .load macports.sqlext' 0609.txt|sqlite3 0609.db
[MacPorts-2.5.4/src/cregistry]sudo mv 0609.db /opt/local/var/macports/registry/registry.db
[MacPorts-2.5.4/src/cregistry]sudo chown root:admin /opt/local/var/macports/registry/registry.db

sudo port -y rev-upgradeで
Warning:が出なくなるように0609.txtを修正して、
ruby19は、再インストールできました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です