Различные ебилды PostgreSQL и их использование. [solved]

Добрый вечер.

Понадобилось поставить postgresql, причём, желательно раздельно: на клиентскую машину — клиентскую часть, на сервер — серверную. Сказано — сделано. Смотрим:

# eix postgres

dev-db/postgresql
     Available versions:  7.3.21 7.4.19 8.0.15 ~8.1.11 ~8.2.6 ~8.2.7 [M]~8.3.1!m {debug doc kerberos kernel_linux nls pam perl pg-intdatetime python readline selinux ssl tcl test xml zlib}
     Homepage:            http://www.postgresql.org/
     Description:         Sophisticated and powerful Object-Relational DBMS.

[I] dev-db/postgresql-base
     Available versions:  
        (7.3)   ~7.3.21!t
        (7.4)   ~7.4.19!t ~7.4.21-r1!t
        (8.0)   ~8.0.15!t ~8.0.17!t
        (8.1)   ~8.1.11!t ~8.1.13!t
        (8.2)   ~8.2.9!t ~8.2.10!t ~8.2.11!t
        (8.3)   (~)8.3.5!t
        {doc kerberos ldap linguas_af linguas_cs linguas_de linguas_es linguas_fa linguas_fr linguas_hr linguas_hu linguas_it linguas_ko linguas_nb linguas_pl linguas_pt_BR linguas_ro linguas_ru linguas_sk linguas_sl linguas_sv linguas_tr linguas_zh_CN linguas_zh_TW nls pam pg-intdatetime readline ssl threads zlib}
     Installed versions:  8.3.5(8.3)!t(23:04:31 04.04.2009)(linguas_ru nls pam readline ssl zlib -doc -kerberos -ldap -linguas_af -linguas_cs -linguas_de -linguas_es -linguas_fa -linguas_fr -linguas_hr -linguas_hu -linguas_it -linguas_ko -linguas_nb -linguas_pl -linguas_pt_BR -linguas_ro -linguas_sk -linguas_sl -linguas_sv -linguas_tr -linguas_zh_CN -linguas_zh_TW -pg-intdatetime -threads)
     Homepage:            http://www.postgresql.org/
     Description:         PostgreSQL libraries and clients

dev-db/postgresql-server
     Available versions:  
        (7.3)   ~7.3.21
        (7.4)   ~7.4.19 ~7.4.21
        (8.0)   ~8.0.15 ~8.0.17
        (8.1)   ~8.1.11 ~8.1.13
        (8.2)   ~8.2.9 ~8.2.10 ~8.2.11
        (8.3)   (~)8.3.5
        {doc kernel_linux linguas_af linguas_cs linguas_de linguas_es linguas_fa linguas_fr linguas_hr linguas_hu linguas_it linguas_ko linguas_nb linguas_pl linguas_pt_BR linguas_ro linguas_ru linguas_sk linguas_sl linguas_sv linguas_tr linguas_zh_CN linguas_zh_TW nls perl python selinux tcl uuid xml}
     Installed versions:  8.3.5(8.3)(23:11:23 04.04.2009)(kernel_linux linguas_ru nls perl python xml -doc -linguas_af -linguas_cs -linguas_de -linguas_es -linguas_fa -linguas_fr -linguas_hr -linguas_hu -linguas_it -linguas_ko -linguas_nb -linguas_pl -linguas_pt_BR -linguas_ro -linguas_sk -linguas_sl -linguas_sv -linguas_tr -linguas_zh_CN -linguas_zh_TW -selinux -tcl -uuid)
     Homepage:            http://www.postgresql.org/
     Description:         PostgreSQL server
…

virtual/postgresql-base
     Available versions:  
        (7.3)   7.3
        (7.4)   7.4
        (8.0)   8.0
        (8.1)   ~8.1
        (8.2)   ~8.2
        (8.3)   ~8.3
     Homepage:            http://www.postgresql.org/
     Description:         Virtual for PostgreSQL base (clients + libraries)

* virtual/postgresql-server
     Available versions:  
        (7.3)   7.3
        (7.4)   7.4
        (8.0)   8.0
        (8.1)   ~8.1
        (8.2)   ~8.2
        (8.3)   ~8.3
     Homepage:            http://www.postgresql.org/
     Description:         Virtual for PostgreSQL libraries

Мы видим dev-db/postgresql, версия которого не самая новая, да к тому же замаскирован для тестирования и, вроде бы по описанию подходящие dev-db/postgresql-server и dev-db/postgresql-base, которые можно поставить туда, где надо, плюс версии у них поновее. Ставим на сервер dev-db/postgresql-server, он с собой вытягивает dev-db/postgresql-base, но пусть. Мало ли что понадобится на сервере. На клиентской машине ставлю dev-db/postgresql-base. На сервере настраиваю и поднимаю postgres, пробую соединиться с ним клиентом:

# psql postgres postgres
Welcome to psql 8.3.5, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

postgres=# 

Всё замечательно. Пробую сделать то же самое на клиентском компьютере. Первое, с чем сталкиваюсь, так это с отсутствием psql. Удивился, поискал:

# equery f dev-db/postgresql-base  | grep psq
/usr/lib/postgresql-8.3/bin/psql
/usr/share/postgresql-8.3/locale/ru/LC_MESSAGES/psql.mo
/usr/share/postgresql-8.3/man/man1/psql.1.bz2
/usr/share/postgresql-8.3/psqlrc.sample

Попробовал подключиться тем, что нашёл:

# file /usr/lib/postgresql-8.3/bin/psql
/usr/lib/postgresql-8.3/bin/psql: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), stripped
# /usr/lib/postgresql-8.3/bin/psql -h homegate postgres postgres
Welcome to psql 8.3.5, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

postgres=#

Ура, работает! Задумался: а как же тогда на сервере выполняется psql без указания абсолютного пути? Смотрю:

# which psql 
/usr/bin/psql
# ls -l /usr/bin/psql
lrwxrwxrwx 1 root root 38 Апр  4 23:04 /usr/bin/psql -> /usr/lib/eselect-postgresql/binwrapper

Ага, думаю, значит eselect этим заведует. Глядим на клиенте:

# eselect postgresql list
Available postgresql installations
  8.3 <-*                    base-8.3.5 docs-8.3.5

Вроде бы запись 8.3 активна, но на всякий случай принудительно устанавливаем её:

# eselect postgresql set 8.3
!!! Warning: No file '/usr/include/postgresql-8.3/libpq-fe.h' to symlink
!!! Warning: No file '/usr/include/postgresql-8.3/libpq' to symlink
!!! Warning: No file '/usr/include/postgresql-8.3/postgres_ext.h' to symlink

Данная операция, к сожалению, не создаёт нужных симлинков. Разумеется, я могу их вручную создать, но при массовой установке оно как-то неизящно смотрится. Может ли система при установке пакета dev-db/postgresql-base автоматически создать все симлинки на содержимое /usr/lib/postgresql-8.3/bin/ в /usr/bin/ и т.п. директориях, не упустил ли я чего? Если нет, то не баг ли это?

Далее, интересно, зачем же нужны пакеты virtual/postgresql-base и virtual/postgresql-server? При размаскировке последнего, оказывается, размаскируются зависимости и пакеты для dev-db/postgresql, да и сам он. При установке, соответственно, они все и ставятся.

Похоже на таракан. Рекомендую

Похоже на таракан. Рекомендую отрапортоваться на bugs.gentoo.org

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

Скиньте пожалуйста ссылочку

Скиньте пожалуйста ссылочку на багзиллу, если зарепортите, хочу подписаться.

-----------------------------------------»
если хочешь послать в MAN, лучше промолчи.

Я отправил в багзилу

Я отправил в багзилу проблему, а в это время уже решил её. Похоже, дело было в том, что предыдущий postgresql на клиенте некорректно удалился или что-то наподобие. Я удалил все упоминания о постгресе, прошёлся emerge --depclean и заново поставил postgres-base. Заработало как надо. Позже, когда ставил на клиент, где ни разу постгри не было, то там тоже всё сразу нормально поставилось.

Ссылка дома, приду — выложу.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".