FreeBSDでのUTF-8照合のパッチ

そこで、本日は、FreeBSDでKDE UTF-8にパッチを適用するという一般的な問題に答えようとします。



ある瞬間、ベータ版を準備するためにデータベースがテストサーバーから本番環境に転送され、PostgreSQLのUTF-8行の問題について頭を痛めました。 具体的には、PostgreSQLが「Gopher」状態に基づくgopherの位置をSELECT上位クエリに発行することを完全に嫌がっています。 バグを検索した結果、私はショックを受けました。なぜなら、最新のOSからこのような完全に幼稚な失態を期待していなかったからです!



Unicode文字列を操作するためにほつれ口のポートから組み立てられたPostgreSQLは、システムLC_COLLATEを使用します。 レーキの内容を理解するために、必要なコマンドは1つだけです。



 $ ls -l /usr/share/locale/ru_RU.UTF-8/LC_COLLATE
 lrwxr-xr-x 1ルートホイール28 12月3日23:30 /usr/share/locale/ru_RU.UTF-8/
 LC_COLLATE-> ../la_LN.US-ASCII/LC_COLLATE


ショックから離れて、私はこの不名誉の治療のためのレシピを探すためにグーグルに登った。 私はあなたにそれを提供します:



  1. まず、FreeBSDでKDE UTF-8にパッチを適用する必要があります( ソリューションの作者に感謝します )。



     wget http://blog.lexa.ru/files/ru_RU.UTF-8.LC_COLLATE.tar.gz
     tar xzvf ru_RU.UTF-8.LC_COLLATE.tar.gz
     cd ru_RU.UTF-8.LC_COLLATE
     freebsdsortを作成するか、ユニバーサルにします
    す
    インストールする
    


  2. しかし、問題はそこで終わりませんでした。 ru_RU.UTF-8以外のエンコーディングで初期化されたPostgreSQLがある場合、このパッチでは不十分です。 データベースを再初期化する必要があります(もちろん、それは私を幸せにしませんでした)。

  3. ベース(pg_dumpまたはpg_dumpall)をダンプします。

  4. PostgresSQLを停止します。



     /usr/local/etc/rc.d/postgresql stop
    


  5. /etc/login.confファイルに次の行を追加します。



     postgres:\
     :lang = ru_RU.UTF-8:\
     :setenv = LC_COLLATE = C:\
     :tc =デフォルト:
    


  6. 適切な初期化のために/etc/rc.confファイルにフラグを追加します。



     postgresql_initdb_flags = "-locale = ru_RU.UTF-8"
    


  7. ベースを初期化します。



     /usr/local/etc/rc.d/postgresql initdb
    


  8. ベースを埋めます。 出来上がり!



そして、さらにいくつかのコメント...





個人ブログからのPS Crosspost。



All Articles