<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>23821</bug_id>
          
          <creation_ts>2010-07-29 09:51:34 +0400</creation_ts>
          <short_desc>Нужные локали не копируются в chroot</short_desc>
          <delta_ts>2010-11-02 10:48:15 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>postgresql8.4-server</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>patch</keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="solo">solo</reporter>
          <assigned_to name="Denis Smirnov">mithraen</assigned_to>
          <cc>misha</cc>
    
    <cc>vvk</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>110851</commentid>
    <comment_count>0</comment_count>
    <who name="solo">solo</who>
    <bug_when>2010-07-29 09:51:34 +0400</bug_when>
    <thetext>При service postgresql start нужные локали (ru_RU в моём случаи) не копируются в chroot.

  Наблюдаб при системной локали определённой как:

$ cat /etc/sysconfig/i18n
LANG=ru_RU.UTF-8
SUPPORTED=ru_RU.UTF-8

или как:

$ cat /etc/sysconfig/i18n
LANG=ru_RU.UTF-8
SUPPORTED=ru_RU</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110852</commentid>
    <comment_count>1</comment_count>
    <who name="solo">solo</who>
    <bug_when>2010-07-29 09:57:13 +0400</bug_when>
    <thetext>Исправляющий патч см. http://git.altlinux.org/people/solo/packages/postgresql8.4.git?p=postgresql8.4.git;a=commitdiff;h=22bdd4e9d297573d4cff257eeb2bd61fa74953b5;hp=61a667bcea30b97e3a1a3dbc7ebac70d9e3ff22f</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110853</commentid>
    <comment_count>2</comment_count>
    <who name="Konstantin Pavlov">thresh</who>
    <bug_when>2010-07-29 10:14:30 +0400</bug_when>
    <thetext>Патч неверен:
во-первых, системная локаль не имеет никакого отношения к локали кластера postgres;
во-вторых, настройте i18n для пользователя postgres перед инициализацией кластера:

echo &quot;LANG=xx&quot; &gt; /var/lib/psql/.i18n</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110854</commentid>
    <comment_count>3</comment_count>
    <who name="solo">solo</who>
    <bug_when>2010-07-29 10:32:08 +0400</bug_when>
    <thetext>(В ответ на комментарий №2)
&gt; Патч неверен:
&gt; во-первых, системная локаль не имеет никакого отношения к локали кластера
&gt; postgres;

  OK, можно использовать /var/lib/pgsql/.i18n а не /etc/sysconfig/i18n

&gt; во-вторых, настройте i18n для пользователя postgres перед инициализацией
&gt; кластера:
&gt; 
&gt; echo &quot;LANG=xx&quot; &gt; /var/lib/psql/.i18n

  Не помогает:

$ sudo -H sh -c &apos;echo &quot;LANG=xx&quot; &gt; /var/lib/pgsql/.i18n&apos;
$ sudo -H sh -c &apos;rm -fr /var/lib/pgsql-root/usr/lib/locale/ru_RU*&apos;
$ sudo -H service postgresql start
Adjusting environment for postgresql:               [ DONE ]
/usr/bin/locale: Cannot set LC_CTYPE to default locale: No such file or directory
/usr/bin/locale: Cannot set LC_MESSAGES to default locale: No such file or directory
/usr/bin/locale: Cannot set LC_ALL to default locale: No such file or directory
Starting postgres service:                          [ DONE ]
Link postgresql socket:                             [FAILED]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110855</commentid>
    <comment_count>4</comment_count>
    <who name="solo">solo</who>
    <bug_when>2010-07-29 10:54:18 +0400</bug_when>
    <thetext>(В ответ на комментарий №3)
&gt; $ sudo -H sh -c &apos;echo &quot;LANG=xx&quot; &gt; /var/lib/pgsql/.i18n&apos;

  В смысле:

sudo -H sh -c &apos;echo &quot;LANG=ru_RU.UTF-8&quot; &gt; /var/lib/pgsql/.i18n&apos;
$ sudo -H sh -c &apos;rm -fr /var/lib/pgsql-root/usr/lib/locale/ru_RU*&apos;
$ sudo -H service postgresql start
Adjusting environment for postgresql:               [ DONE ]
Starting postgres service:                          [ DONE ]
Link postgresql socket:                             [FAILED]

  Локали не скопировались:

$ sudo -H ls -lA /var/lib/pgsql-root/usr/lib/locale/
total 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110856</commentid>
    <comment_count>5</comment_count>
    <who name="solo">solo</who>
    <bug_when>2010-07-29 11:11:59 +0400</bug_when>
    <thetext>(В ответ на комментарий №1)
&gt; Исправляющий патч см.
&gt; http://git.altlinux.org/people/solo/packages/postgresql8.4.git?p=postgresql8.4.git;a=commitdiff;h=22bdd4e9d297573d4cff257eeb2bd61fa74953b5;hp=61a667bcea30b97e3a1a3dbc7ebac70d9e3ff22f

  Обновлённый патч см. http://git.altlinux.org/people/solo/packages/postgresql8.4.git?p=postgresql8.4.git;a=commitdiff;h=cb3f2308b81e046893a3f26165489c5b064b9f69

  С ним:

$ sudo -H sh -c &apos;echo &quot;LANG=ru_RU.UTF-8&quot; &gt; /var/lib/pgsql/.i18n&apos;
$ sudo -H sh -c &apos;rm -fr /var/lib/pgsql-root/usr/lib/locale/ru_RU*&apos;
$ sudo -H service postgresql start
Adjusting environment for postgresql:               [ DONE ]
Starting postgres service:                          [ DONE ]
Link postgresql socket:                             [ DONE ]

  Локали скопировались:

$ sudo -H ls -lA /var/lib/pgsql-root/usr/lib/locale/
total 20
drwxr-xr-x 3 root root 4096 Jul 29 11:10 ru_RU
drwxr-xr-x 3 root root 4096 Jul 29 11:10 ru_RU.cp1251
drwxr-xr-x 3 root root 4096 Jul 29 11:10 ru_RU.iso88595
drwxr-xr-x 3 root root 4096 Jul 29 11:10 ru_RU.koi8r
drwxr-xr-x 3 root root 4096 Jul 29 11:10 ru_RU.utf8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110857</commentid>
    <comment_count>6</comment_count>
    <who name="Konstantin Pavlov">thresh</who>
    <bug_when>2010-07-29 11:15:06 +0400</bug_when>
    <thetext>Ваш обновленный патч неверен, потому что неверен.

Похоже инициализацию локали postgres сломало обновление пакета setup:

- /etc/profile.d/lang.*sh: do not source i18n files if
  non-empty LANG is already set (closes: #11814).

Таким образом, при service postgresql start происходит следующее:
в /etc/init.d/functions выставляется LANG=POSIX
из-за этого в /etc/profile.d/0lang.sh не сорсится $HOME/.i18n
из-за этого кластер создается в локали POSIX и нужные локали не копируются

предлагаю следующий патч:
http://git.altlinux.org/people/thresh/packages/postgresql8.4.git?p=postgresql8.4.git;a=commit;h=6d6fe152986cf0f618bf83348a172ba637eeb468</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110858</commentid>
    <comment_count>7</comment_count>
    <who name="algor">algor</who>
    <bug_when>2010-07-29 11:20:33 +0400</bug_when>
    <thetext>&gt; предлагаю следующий патч:

Константин, вы заставляете меня вспоминать пароли от багзиллы.

http://www.postgresql.org/docs/current/static/sql-createdatabase.html

из вышепреведённой ссылки следует, что теперь в chroot нужно копировать все локали. просю реализовать.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110860</commentid>
    <comment_count>8</comment_count>
    <who name="solo">solo</who>
    <bug_when>2010-07-29 11:53:04 +0400</bug_when>
    <thetext>(В ответ на комментарий №6)
&gt; Ваш обновленный патч неверен, потому что неверен.
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^

  Формулировка попахивает бредом, т. к. ничего не объясняет. Патч работает =&gt; верен. Да, при этом он может быть не оптимальным и/или не слишком красивым (т. к. лечит симптом, без анализа причин). 

&gt; 
&gt; Похоже инициализацию локали postgres сломало обновление пакета setup:
&gt; 
&gt; - /etc/profile.d/lang.*sh: do not source i18n files if
&gt;   non-empty LANG is already set (closes: #11814).
&gt; 
&gt; Таким образом, при service postgresql start происходит следующее:
&gt; в /etc/init.d/functions выставляется LANG=POSIX
&gt; из-за этого в /etc/profile.d/0lang.sh не сорсится $HOME/.i18n
&gt; из-за этого кластер создается в локали POSIX и нужные локали не копируются
&gt; 
&gt; предлагаю следующий патч:
&gt; http://git.altlinux.org/people/thresh/packages/postgresql8.4.git?p=postgresql8.4.git;a=commit;h=6d6fe152986cf0f618bf83348a172ba637eeb468

  Если поможет -- это более красивае решение чем у меня.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110861</commentid>
    <comment_count>9</comment_count>
    <who name="Konstantin Pavlov">thresh</who>
    <bug_when>2010-07-29 12:02:53 +0400</bug_when>
    <thetext>(In reply to comment #8)
&gt; (В ответ на комментарий №6)
&gt; &gt; Ваш обновленный патч неверен, потому что неверен.
&gt;                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
&gt; 
&gt;   Формулировка попахивает бредом, т. к. ничего не объясняет. Патч работает =&gt;
&gt; верен. Да, при этом он может быть не оптимальным и/или не слишком красивым (т.
&gt; к. лечит симптом, без анализа причин). 

Парсить руками пользовательский файл конфигурации locale -- хак.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110892</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Bochkaryov">misha</who>
    <bug_when>2010-07-30 13:39:04 +0400</bug_when>
    <thetext>(В ответ на комментарий №7)
&gt; &gt; предлагаю следующий патч:
&gt; 
&gt; Константин, вы заставляете меня вспоминать пароли от багзиллы.
&gt; 
&gt; http://www.postgresql.org/docs/current/static/sql-createdatabase.html
&gt; 
&gt; из вышепреведённой ссылки следует, что теперь в chroot нужно копировать все
&gt; локали. просю реализовать.

Присоединяюсь к просьбе.
Теперь локалей может использоваться несколько в одном кластере и имеет смысл копировать их полностью, если уж chroot используем.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114702</commentid>
    <comment_count>11</comment_count>
    <who name="Vladimir V. Kamarzin">vvk</who>
    <bug_when>2010-11-02 10:48:15 +0300</bug_when>
    <thetext>Видимо можно закрывать:

* Mon Aug 09 2010 Konstantin Pavlov &lt;thresh@altlinux.org&gt; 8.4.4-alt2
- Copy all locale files in chroot (fixes #23821).</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>