Различные ебилды 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. Заработало как надо. Позже, когда ставил на клиент, где ни разу постгри не было, то там тоже всё сразу нормально поставилось.
Ссылка дома, приду — выложу.