Debian の PostgreSQL のフロントエンド psql で日本語が入力できなくなっていることに気づいた。いろいろ検索してみてわかったことをざっと記すと、まず、以前の psql では問題なかったのが最近おかしくなったのは
- #603599
- これまでの psql は libreadline (GPL v2+) と libssl (BSD-like であり GPL とは非互換) の両方にリンクしており、ライセンス的にバイナリの再配布は不可能。そこで、libreadline をやめて BSDライセンスの libedit にする
という事情らしい。
- #607109
- psql でマルチバイト文字が使えない
で指摘されているように、-n
オプションを使えば回避できることから、libedit のバグのようだ。
同じ libedit を使っている gnuplot も
- #596870
- 非アスキー文字が使えない
で、実際に試してみたらそのとおりだ。
当の libedit には
- #579729
- utf8 に対応した新しいバージョンをパッケージしてほしい
という要望が出されているものの、動きはなし。
上流は NetBSD libedit なのだけれど、「libedit I18N化への道」(イントロ)を見ると、utf8 対応といっても問題が多く、ことの成り行きはこの方にかかっているらしい (つづきが(その1)(その2)(その3)(その4)(その5)。そしてこの時点での最新の「めもがき」によると、たいへんお忙しいらしい)。
さし当たりこの問題を回避するには、libreadline / libedit の機能をあきらめて psql -n
として使うか、libedit を libreadline に差し替えてパッケージを作り直すか。根本的解決は、能力のない者としてはただじっと待つより為す術がない。
当面、psqlコマンドにはオプション’-n’を付けて使います。
ありがとうございました。