Bug 6846

Summary: Ошибки в формировании chroot-окружения
Product: Sisyphus Reporter: Alexei Takaseev <taf>
Component: postgresql8.0-serverAssignee: Ivan Fedorov <ns>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: blocker    
Priority: P2 CC: algor, misha, mithraen, thresh
Version: unstable   
Hardware: all   
OS: Linux   

Description Alexei Takaseev 2005-05-15 10:12:22 MSD
Не формируется нормально chroot-окружение для postgresql8.0:

[root@metamorph chroot.d]# service postgresql start
Adjusting environment for postgresql: subst: open: etc/group.u: No such file or
directory
                                                                        [FAILED]
[root@metamorph chroot.d]#

Запуститься удалось только закоментировав в /etc/chroot.d/postgresql.conf строки:

#    subst s/,$// etc/group.u
#    sort -u < etc/passwd.u > etc/passwd
#    sort -u < etc/group.u > etc/group

Не уверен в правильности этого решения, но иначе как запускаться не знаю.

Далее, при запуске в логах выдается:

May 15 15:07:10 metamorph postmaster: LOG:  could not open directory "/usr/share
/pgsql/timezone": No such file or directory
May 15 15:07:10 metamorph postgresql: postmaster startup succeeded

Вылечилось добавлением в /etc/chroot.d/postgresql.conf строк:

/bin/mkdir -p /var/lib/pgsql-root/usr/share/pgsql
/bin/mkdir -p /var/lib/pgsql-root/usr/share/pgsql/timezone
timezone_dir=`find /usr/share/pgsql/timezone -type d`
for d in $timezone_dir; do
    /bin/mkdir -p /var/lib/pgsql-root$d
done

timezone_file=`find /usr/share/pgsql/timezone -type f`
for f in $timezone_file; do
    Copy $force $f /var/lib/pgsql-root$f ||:
done

Насколько это правильное решение не знаю, но ругань больше не выводится.

И самое неприятное - не работает создание новых БД:

template1=# CREATE DATABASE test1;
ERROR:  could not initialize database directory
ПОДРОБНО:  Failing system command was: cp -r '/var/lib/pgsql/data/base/1'
'/var/lib/pgsql/data/base/17869'
ПОДСКАЗКА:  Look in the postmaster's stderr log for more information.
template1=#

Вылечилось добавлением в файл /etc/chroot.d/postgresql.lib строк:

for n in /lib/ld-linux.so.2; do
        src=$(realpath "$n") || continue
        dst="lib/${n##*/}"
        Copy $force "$src" "$dst"
done

Прошу учесть данное сообщение в виду невозможности использования пакета в
первончальном виде.
Comment 1 Denis Smirnov 2005-05-15 12:32:33 MSD
ns@ пофиксишь свои супер-скрипты, или таки мне заняться?
Comment 2 Ivan Fedorov 2005-05-16 12:22:05 MSD
Да пофикс...  собсно говоря уже почти... залью на днях...
Comment 3 Ivan Fedorov 2005-05-24 05:20:54 MSD
Вроде все исправил. Смотрите 8.0.3-alt1.
Comment 4 Dmitry Lebkov 2005-05-27 02:58:41 MSD
Свежеустановленный postgresql8.0:

$ rpm -qa|grep postgresql
postgresql8.0-contrib-8.0.3-alt1
postgresql8.0-8.0.3-alt1
postgresql8.0-perl-8.0.3-alt1
postgresql8.0-docs-8.0.3-alt1
postgresql8.0-server-8.0.3-alt1
postgresql8.0-python-8.0.3-alt1

/etc/chroot.d/postgresql.conf - вместо /usr/share/pgsql/timezone в chroot
копируется /usr/share/zoneinfo

/etc/chroot.d/postgresql.lib - в chroot не копируется /lib/ld-linux.so.2, а без
нее не работает создание новых баз данных

Comment 5 Ivan Fedorov 2005-06-05 10:16:55 MSD
Про таймзоны пофиксил. Не знаю откуда это вылезло, но я это еще во времена
8.0.0betaX правил.

А про /lib/ld-linux.so.2 - не воспроизводится.

Ждите 8.0.3-alt2
Comment 6 Ivan Fedorov 2005-06-18 08:23:10 MSD
По поводу /lib/ld-linux.so.2 - это в новом glibc себя по другому ведет ldd.

ldv@ пофиксил chrooted. Как зальет, должно помочь.

Я в понедельник постараюсь закрыть все баги залив 8.0.3-alt2