Bug 6846 - Ошибки в формировании chroot-окружения
: Ошибки в формировании chroot-окружения
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/postgresql8.0-server)
: unstable
: all Linux
: P2 blocker
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2005-05-15 10:12 by
Modified: 2005-08-29 19:49 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2005-05-15 10:12:22
Не формируется нормально 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 From 2005-05-15 12:32:33 -------
ns@ пофиксишь свои супер-скрипты, или таки мне заняться?
------- Comment #2 From 2005-05-16 12:22:05 -------
Да пофикс...  собсно говоря уже почти... залью на днях...
------- Comment #3 From 2005-05-24 05:20:54 -------
Вроде все исправил. Смотрите 8.0.3-alt1.
------- Comment #4 From 2005-05-27 02:58:41 -------
Свежеустановленный 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 From 2005-06-05 10:16:55 -------
Про таймзоны пофиксил. Не знаю откуда это вылезло, но я это еще во времена
8.0.0betaX правил.

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

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

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

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