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。

Source: https://habr.com/ru/post/J55066/


All Articles