Bug 2516

Summary: 8.3: Невозможность запуска и инициализации базы
Product: Postgres@Etersoft Reporter: Mikhail Krylatykh <delayer>
Component: пакетыAssignee: Шильников Андрей <shan>
Status: CLOSED INVALID QA Contact:
Severity: trivial    
Priority: P4 CC: boris, lav, shan, yurifil
Version: не указанаKeywords: ИНТЕРРА
Target Milestone: ---   
Hardware: PC   
OS: Debian GNU/Linux   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 1767    
Attachments: исправленный init-скрипт
ошибка

Description Mikhail Krylatykh 2008-09-25 16:37:06 MSD
pg1c# ls -l
-rw-r--r-- 1 root root 1811106 2008-09-22 17:11 postgresql8.3.1c_8.3.3-1_i386.deb
-rw-r--r-- 1 root root 8826806 2008-09-22 17:11 postgresql8.3.1c-contrib_8.3.3-1_i386.deb
-rw-r--r-- 1 root root  907498 2008-09-22 17:11 postgresql8.3.1c-devel_8.3.3-1_i386.deb
-rw-r--r-- 1 root root 9708640 2008-09-22 17:11 postgresql8.3.1c-docs_8.3.3-1_i386.deb
-rw-r--r-- 1 root root  360236 2008-09-22 17:11 postgresql8.3.1c-libs_8.3.3-1_i386.deb
-rw-r--r-- 1 root root   94282 2008-09-22 17:11 postgresql8.3.1c-plperl_8.3.3-1_i386.deb
-rw-r--r-- 1 root root   59124 2008-09-22 17:11 postgresql8.3.1c-plpython_8.3.3-1_i386.deb
-rw-r--r-- 1 root root 5294678 2008-09-22 17:11 postgresql8.3.1c-server_8.3.3-1_i386.deb
-rw-r--r-- 1 root root 1286116 2008-09-22 17:11 postgresql8.3.1c-test_8.3.3-1_i386.deb

pg1c# dpkg -i *.deb - установка проходит нормально, никаких ошибочных сообщений нет. Однако дальше,
pg1c# /etc/init.d/postgresql start
Starting postgresql service: pg_ctl: could not open PID file "/var/lib/pgsql/data/postmaster.pid": Permission denied
Initializing database:                                                  [FAILED]

/var/lib/pgsql/data is missing. Use "service postgresql initdb" to initialize the cluster first.
                                                                         [FAILED]
Какие должны быть права у /var/lib/pgsql/data/ ?

pg1c# /etc/init.d/postgresql initdb
Initializing database: mkdir: невозможно создать каталог `/var/lib/pgsql/data/pg_log': File exists
                                                                        [FAILED]
Притом что создавался этот файл инсталлятором, до установки /var/lib/pgsql не существовало.
                                                                        [FAILED]
ls -l /var/lib/pgsql/data/
итого 4
drwx------ 2 postgres postgres 4096 2008-09-25 16:31 pg_log
Если удалить, то ошибки не выдается, инициализация все равно failed, папка создается заново
Comment 1 Boris Savelev 2008-09-25 16:40:00 MSD
cat /var/lib/pgsql/pgstartup.log
Comment 2 Mikhail Krylatykh 2008-09-25 16:42:58 MSD
(In reply to comment #1)
> cat /var/lib/pgsql/pgstartup.log
> 

initdb: нет доступа к директории "/var/lib/pgsql/data": Permission denied
Файлы, сопутствующие этой системе баз данных, будут
принадлежать пользователю "postgres". Этот пользователь
также должен быть владельцем процесса сервера.
Кластер баз данных будет инициализирован с локалью ru_RU.UTF-8.
Кодировка базы по умолчанию установлена в UTF8.
The default text search configuration will be set to "russian".

три раза
pg1c# ls -l /var/lib/pgsql/
итого 12
drwx------ 2 root     root     4096 2008-09-22 17:09 backups
drwx------ 3 postgres postgres 4096 2008-09-25 16:34 data
-rw-r--r-- 1 root     root     1890 2008-09-25 16:34 pgstartup.log
Comment 3 Boris Savelev 2008-09-25 16:56:54 MSD
> pg1c# ls -l /var/lib/pgsql/
> итого 12
> drwx------ 2 root     root     4096 2008-09-22 17:09 backups
> drwx------ 3 postgres postgres 4096 2008-09-25 16:34 data
> -rw-r--r-- 1 root     root     1890 2008-09-25 16:34 pgstartup.log
> 

судя по этому, права верные. сделайте 
rm -rf /var/lib/pgsql/data/*
и снова initdb
Comment 4 Mikhail Krylatykh 2008-09-25 16:59:20 MSD
делаль уже...
pg1c# rm -rf /var/lib/pgsql/data/*
pg1c# /etc/init.d/postgresql initdb
Initializing database:                                                  [FAILED]

cat /var/lib/pgsql/pgstartup.log выдает аналогичный текст
Comment 5 Boris Savelev 2008-09-25 17:05:24 MSD
стоп. а почему postgres 3.3?
это экспериментальная сборка (недопиленная еще) и с сельтой она не работает пока
Comment 6 Boris Savelev 2008-09-25 17:11:51 MSD
Андрей, в Альте воспроизводится?
Comment 7 Mikhail Krylatykh 2008-09-25 17:52:11 MSD
какая лежала, такую и скачал ;) Сельту мне не нужно, этот постгрес будет работать с 1C8.1:Управление торговлей.
Коли эта еще в процессе подпила, посоветуйте линк на стабл версию
Comment 8 Boris Savelev 2008-09-25 17:59:48 MSD
лежит их там 4 штуки-)
берите из 8.2.4 или 8.2.9
но на самом деле это от 1с зависит...

сервер 1с 8.3.3 еще не поддерживает, вроде
Comment 9 Boris Savelev 2008-09-25 18:03:37 MSD
для выявления проблемы на Debian c 8.3 надо вывод
sh -x /etc/init.d/postgresql initdb
Comment 10 Mikhail Krylatykh 2008-09-25 18:11:12 MSD
pg1c# sh -x /etc/init.d/postgresql initdb
+ PGVERSION=8.3.3
++ echo 8.3.3
++ sed 's/^\([0-9]*\.[0-9]*\).*$/\1/'
+ PGMAJORVERSION=8.3
+ PGENGINE=/usr/bin
+ PGPORT=5432
+ PGDATA=/var/lib/pgsql/data
+ '[' -x /sbin/runuser ']'
+ SU=su
+ '[' -f /var/lib/pgsql/data/PG_VERSION ']'
+ PGDATA=/var/lib/pgsql/data
+ PGLOG=/var/lib/pgsql/pgstartup.log
+ '[' -f /etc/sysconfig/pgsql/ ']'
+ export PGDATA
+ export PGPORT
+ '[' -f /usr/bin/postmaster ']'
+ script_result=0
+ SERVNAME=postgresql
+ OUTFORMAT=/etc/init.d/outformat
+ '[' -x /etc/init.d/outformat ']'
+ OUTFORMAT=/etc/init.d/postgresql.outformat
+ which tput
+ test -x /etc/init.d/postgresql.outformat
+ . /etc/init.d/postgresql.outformat
++ '[' -n xterm ']'
++ export TERM
++ : '{RES_OFFSET:=8}'
++ '[' -n '' ']'
++ RES_OFFSET=8
++ : 0 1 2 3 4 5 6 7
++ typeset -f
++ grep declare
+ TYPESET=
++ basename /etc/init.d/postgresql
+ NAME=postgresql
+ '[' p = S -o p = K ']'
+ case "$1" in
+ initdb
+ '[' -f /var/lib/pgsql/data/PG_VERSION ']'
+ check_shmmax
+ PGCONFNAME=postgresql.conf
+ '[' -e /var/lib/pgsql/data/postgresql.conf ']'
+ PGCONF=/usr/share/pgsql/postgresql.conf.sample
++ cat /usr/share/pgsql/postgresql.conf.sample
++ grep 'shared_buffers = '
++ head -n1
++ sed 's/^.*=\ //;s/MB.*$//'
+ PG_SHBUF=32
++ sysctl -n kernel.shmmax
+ SHMMAX=134217728
++ expr 32 '*' 1024 '*' 1024 '*' 4
+ SHMMAX_MIN=134217728
+ '[' 134217728 -lt 134217728 ']'
+ echo -n 'Initializing database: '
Initializing database: + '[' '!' -e /var/lib/pgsql/data -a '!' -h /var/lib/pgsql/data ']'
+ chown postgres:postgres /var/lib/pgsql/data
+ chmod go-rwx /var/lib/pgsql/data
+ su -l postgres -s /bin/sh -c 'LANG=ru_RU.UTF-8 /usr/bin/initdb --pgdata='\''/var/lib/pgsql/data'\'' --auth='\''ident sameuser'\'''
+ mkdir /var/lib/pgsql/data/pg_log
mkdir: невозможно создать каталог `/var/lib/pgsql/data/pg_log': File exists
+ chown postgres:postgres /var/lib/pgsql/data/pg_log
+ chmod go-rwx /var/lib/pgsql/data/pg_log
+ '[' -f /var/lib/pgsql/data/PG_VERSION ']'
+ '[' '!' -f /var/lib/pgsql/data/PG_VERSION ']'
+ failure
+ MOVE_TO_COL
+ '[' -n '' ']'
+ COLUMNS=80
+ local pos=72
+ '[' 72 -le 0 ']'
+ tput -- hpa 72
                                                                        + echo -n '['
[+ SETCOLOR_FAILURE
+ echo bold
+ echo setaf 1
+ tput -S
+ echo -n FAILED
FAILED+ SETCOLOR_NORMAL
+ echo op
+ echo sgr0
+ tput -S
+ echo ']'
]
+ echo

+ exit 0
Comment 11 Mikhail Krylatykh 2008-09-25 18:13:35 MSD
http://online.1c.ru/catalog/files/release/3066759/?phrase_id=55838

Технологическая платформа 1С:Предприятия 8.1 Версия 8.1.12.98. Архитектура x86 для Debian от 26.08.2008
вот, собственно.
Comment 12 Boris Savelev 2008-09-25 18:16:06 MSD
su -l postgres -s /bin/sh -c 'LANG=ru_RU.UTF-8 /usr/bin/initdb --pgdata=/var/lib/pgsql/data --auth=ident sameuser'
а если руками запустить?
Comment 13 Boris Savelev 2008-09-25 18:18:19 MSD
(In reply to comment #11)
> http://online.1c.ru/catalog/files/release/3066759/?phrase_id=55838
> 
> Технологическая платформа 1С:Предприятия
> 8.1 Версия 8.1.12.98. Архитектура x86 для Debian от
> 26.08.2008
> вот, собственно.
> 

http://www.v8.1c.ru/overview/postgres_patches_notes.htm
вот здесь описано кто с какими рерсиями может работать.
в нашем с Вами случае это версии сборок Etersoft 8.2.4 или 8.2.9 
Comment 14 Mikhail Krylatykh 2008-09-25 18:43:30 MSD
pg1c# su -l postgres -s /bin/sh -c 'LANG=ru_RU.UTF-8 /usr/bin/initdb --pgdata=/var/lib/pgsql/data --auth=ident postgres'
Файлы, сопутствующие этой системе баз данных, будут
принадлежать пользователю "postgres". Этот пользователь
также должен быть владельцем процесса сервера.
Кластер баз данных будет инициализирован с локалью ru_RU.UTF-8.
Кодировка базы по умолчанию установлена в UTF8.
The default text search configuration will be set to "russian".

создание директории postgres ... ок
creating subdirectories ... ок
выбирается значение по-умолчанию для max_connections ... 100
selecting default shared_buffers/max_fsm_pages ... 32MB/204800
создание конфигурационных файлов ... ок
создание базы template1 в postgres/base/1 ... ок
initializing pg_authid ... ок
initializing dependencies ... ок
создание системных представлений ... ок
loading system objects' descriptions ... ок
создание конверсий ... ок
creating dictionaries ... ок
установка привилегий для встроенных объектов ... ок
создание информационной схемы ... ок
сборка мусора в базе template1 ... ок
копирование template1 в template0 ... ок
copying template1 to postgres ... ок

Success. You can now start the database server using:

    /usr/bin/postgres -D postgres
or
    /usr/bin/pg_ctl -D postgres -l logfile start

yagoda:/home/interra/!/pg1c# /etc/init.d/postgresql start
Starting postgresql service: pg_ctl: could not open PID file "/var/lib/pgsql/data/postmaster.pid": Permission denied
Initializing database: mkdir: невозможно создать каталог `/var/lib/pgsql/data/pg_log': File exists
                                                                        [FAILED]


/var/lib/pgsql/data is missing. Use "service postgresql initdb" to initialize the cluster first.
                                                                        [FAILED]
Comment 15 Mikhail Krylatykh 2008-09-25 18:48:08 MSD
pg1c# su - postgres
postgres@pg1c:~$ /usr/bin/pg_ctl -D postgres -l logfile start
server starting

~$ ps aux | grep postgres
postgres 16165  0.0  0.0   3712  1068 pts/2    S    18:43   0:00 su - postgres
postgres 16166  0.2  0.0   5436  2980 pts/2    S    18:43   0:00 -su
postgres 16189  0.2  0.1  46184  3852 pts/2    S    18:43   0:00 /usr/bin/postgres -D postgres
postgres 16191  0.0  0.0  46184   984 ?        Ss   18:43   0:00 postgres: writer process
postgres 16192  0.0  0.0  46184   908 ?        Ss   18:43   0:00 postgres: wal writer process
postgres 16193  0.0  0.0  46184  1172 ?        Ss   18:43   0:00 postgres: autovacuum launcher process
postgres 16194  0.0  0.0   8440   980 ?        Ss   18:43   0:00 postgres: stats collector process
postgres 16233  0.0  0.0   3432   996 pts/2    R+   18:44   0:00 ps aux
postgres 16234  0.0  0.0   2884   780 pts/2    S+   18:44   0:00 grep postgres

однако 
pg1c# /etc/init.d/postgresql stop
Stopping postgresql service:                                            [PASSED]

То есть после ручной инициалицации, предложенной вами, вручную же стартованный сервак запустился, и работате...а скрипт идет в лес.
Аналогично,  если пытаться запустить стопнутый сервер через инит-скрипт. тот же файлед.
Comment 16 Boris Savelev 2008-09-26 17:42:08 MSD
Created attachment 756 [details]
исправленный init-скрипт

попробуйте этот скрипт для инициализации
Comment 17 Mikhail Krylatykh 2008-09-26 19:25:24 MSD
без изменений
Comment 18 Mikhail Krylatykh 2008-10-01 17:40:17 MSD
(In reply to comment #8)
> лежит их там 4 штуки-)
> берите из 8.2.4 или 8.2.9

8.2.9 собрана только для deb5.0
в папку с 8,2,4 зайти не могу, получая странное сообщение о том что no route to host, странное потому, что во все другие хожу без вопросов.

поставил 8.2, при инициализации базы такие же ошибки, как и описанные выше для 8,3,3. Анализ показал, что проблема заключалась (для случая 8,2) в том, что на папку /var/lib/pgsql выставляются при установке постгреса права root.root 0700, а надо бы 0755. Для случая с 8,3,3 данное решение не проверял.
Comment 19 Mikhail Krylatykh 2008-10-01 17:41:20 MSD
соберите 8,2,9 для deb4.0 что ли =)
Comment 20 Boris Savelev 2008-10-01 18:05:43 MSD
(In reply to comment #19)
> соберите 8,2,9 для deb4.0 что ли =)
> 
Юра, собери, пжлста.

> 8.2.9 собрана только для deb5.0
> в папку с 8,2,4 зайти не могу, получая
> странное сообщение о том что no route to host,
> странное потому, что во все другие хожу без
> вопросов.
Это странно. Даже более того, невозможно-)
http://updates.etersoft.ru/pub/Etersoft/PostgreSQL/8.2.4/Debian/4.0/

> поставил 8.2, при инициализации базы такие
> же ошибки, как и описанные выше для 8,3,3.
> Анализ показал, что проблема заключалась
> (для случая 8,2) в том, что на папку /var/lib/pgsql
> выставляются при установке постгреса
> права root.root 0700, а надо бы 0755.
Права в пакете правильные. На то есть полиси по запаковке.
До инициализации базы они изменяются на правильные для работы.
Смысл в том, что до установки пакета пользователя postgres может и не быть, и права выставляются заведомо после установки (во время инициализации)
> Для случая с 8,3,3
> данное решение не проверял.
> 

Comment 21 Mikhail Krylatykh 2008-10-01 18:09:58 MSD
аха, теперь пустило...подожду все таки 8,2,9 для полного счастья.
Про полиси и пользователя понятно конечно.. но что то не так, раз при initdb скрипт обламывается с ошибкой доступа к сабжевой директории...
Comment 22 Boris Savelev 2008-10-01 18:28:31 MSD
> Про полиси и пользователя понятно конечно..
> но что то не так, раз при initdb скрипт
> обламывается с ошибкой доступа к сабжевой
> директории...
> 

ну я ничего не имею ввиду, но обламывается он только у Вас-) сельте уже почти год и никто не жаловался. а скрипт в этом месте претерпел мало изменений.
Comment 23 Mikhail Krylatykh 2008-10-01 18:35:50 MSD
упс =)
Comment 24 Шильников Андрей 2008-10-03 17:57:57 MSD
(In reply to comment #21)
> Про полиси и пользователя понятно конечно..
> но что то не так, раз при initdb скрипт
> обламывается с ошибкой доступа к сабжевой
> директории...
 
Такая ошибка была убнаружена при тестировании давно, тогда же и решена.
Comment 25 Boris Savelev 2008-10-06 18:34:28 MSD
Андрей. проверь-таки еще раз на дебиане
Comment 26 Шильников Андрей 2008-10-08 12:57:57 MSD
Пострге запустился нормально. Но при создании базы в Selta ошибка (см.вложение).
Comment 27 Шильников Андрей 2008-10-08 12:58:36 MSD
Created attachment 772 [details]
ошибка
Comment 28 Boris Savelev 2008-10-08 13:04:16 MSD
с консоли СУБД выполни
show SERVER_ENCODING;
show CLIENT_ENCODING;
Comment 29 Шильников Андрей 2008-10-08 13:10:45 MSD
все работает и запускается.