Summary: | Нужные локали не копируются в chroot | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | solo <solo> |
Component: | postgresql8.4-server | Assignee: | Denis Smirnov <mithraen> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P3 | CC: | misha, vvk |
Version: | unstable | Keywords: | patch |
Hardware: | all | ||
OS: | Linux |
Description
solo
2010-07-29 09:51:34 MSD
Исправляющий патч см. http://git.altlinux.org/people/solo/packages/postgresql8.4.git?p=postgresql8.4.git;a=commitdiff;h=22bdd4e9d297573d4cff257eeb2bd61fa74953b5;hp=61a667bcea30b97e3a1a3dbc7ebac70d9e3ff22f Патч неверен: во-первых, системная локаль не имеет никакого отношения к локали кластера postgres; во-вторых, настройте i18n для пользователя postgres перед инициализацией кластера: echo "LANG=xx" > /var/lib/psql/.i18n (В ответ на комментарий №2) > Патч неверен: > во-первых, системная локаль не имеет никакого отношения к локали кластера > postgres; OK, можно использовать /var/lib/pgsql/.i18n а не /etc/sysconfig/i18n > во-вторых, настройте i18n для пользователя postgres перед инициализацией > кластера: > > echo "LANG=xx" > /var/lib/psql/.i18n Не помогает: $ sudo -H sh -c 'echo "LANG=xx" > /var/lib/pgsql/.i18n' $ sudo -H sh -c 'rm -fr /var/lib/pgsql-root/usr/lib/locale/ru_RU*' $ 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] (В ответ на комментарий №3) > $ sudo -H sh -c 'echo "LANG=xx" > /var/lib/pgsql/.i18n' В смысле: sudo -H sh -c 'echo "LANG=ru_RU.UTF-8" > /var/lib/pgsql/.i18n' $ sudo -H sh -c 'rm -fr /var/lib/pgsql-root/usr/lib/locale/ru_RU*' $ 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 (В ответ на комментарий №1) > Исправляющий патч см. > 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 'echo "LANG=ru_RU.UTF-8" > /var/lib/pgsql/.i18n' $ sudo -H sh -c 'rm -fr /var/lib/pgsql-root/usr/lib/locale/ru_RU*' $ 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 Ваш обновленный патч неверен, потому что неверен. Похоже инициализацию локали 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 > предлагаю следующий патч: Константин, вы заставляете меня вспоминать пароли от багзиллы. http://www.postgresql.org/docs/current/static/sql-createdatabase.html из вышепреведённой ссылки следует, что теперь в chroot нужно копировать все локали. просю реализовать. (В ответ на комментарий №6) > Ваш обновленный патч неверен, потому что неверен. ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Формулировка попахивает бредом, т. к. ничего не объясняет. Патч работает => верен. Да, при этом он может быть не оптимальным и/или не слишком красивым (т. к. лечит симптом, без анализа причин). > > Похоже инициализацию локали 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 Если поможет -- это более красивае решение чем у меня. (In reply to comment #8) > (В ответ на комментарий №6) > > Ваш обновленный патч неверен, потому что неверен. > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ > > Формулировка попахивает бредом, т. к. ничего не объясняет. Патч работает => > верен. Да, при этом он может быть не оптимальным и/или не слишком красивым (т. > к. лечит симптом, без анализа причин). Парсить руками пользовательский файл конфигурации locale -- хак. (В ответ на комментарий №7) > > предлагаю следующий патч: > > Константин, вы заставляете меня вспоминать пароли от багзиллы. > > http://www.postgresql.org/docs/current/static/sql-createdatabase.html > > из вышепреведённой ссылки следует, что теперь в chroot нужно копировать все > локали. просю реализовать. Присоединяюсь к просьбе. Теперь локалей может использоваться несколько в одном кластере и имеет смысл копировать их полностью, если уж chroot используем. Видимо можно закрывать: * Mon Aug 09 2010 Konstantin Pavlov <thresh@altlinux.org> 8.4.4-alt2 - Copy all locale files in chroot (fixes #23821). |