Конфигурация libpqxx не может найти libpq-fe.h для локальной установки PostgreSQL - PullRequest
0 голосов
/ 07 ноября 2019

Я нахожусь в процессе создания сценария сборки на вычислительном кластере под управлением Red Hat 6.6 Linux с ограниченным доступом sudo. В настоящее время я создаю локальную установку PostgreSQL 10.10 из источников на GitHub. После сборки они устанавливаются на /storage/home/work/build_env/postgres, а $PATH обновляется, так что pg_config запускается и pkg-config libpq --cflags возвращает

-I/storage/home/work/build_env/postgres/include

libpqxx клонируется из источника GitHub, но застреваетпри конфигурации со следующей ошибкой:

configure: using PostgreSQL headers at /storage/home/work/build_env/postgres/include
configure: using PostgreSQL libraries at /storage/home/work/build_env/postgres/lib
checking /storage/home/work/build_env/postgres/include  /libpq-fe.h usability... no
checking /storage/home/work/build_env/postgres/include  /libpq-fe.h presence... no
checking for /storage/home/work/build_env/postgres/include  /libpq-fe.h... no
configure: error:
Can't find libpq-fe.h in /storage/home/work/build_env/postgres/include  .  Are you sure the libpq
headers are installed correctly?  They should be in the directory returned by
"pg_config --includedir" or "pkg-config libpq --cflags".

If you do have libpq (the C-language client library for PostgreSQL) installed,
make sure you have the related development materials--mainly its header files--
as well as the library binary.  Some system distributions keep the two in
seperate packages with names like "alibrary" and "alibrary-dev", respectively.
In that case, make sure you have the latter installed as well.

Однако, глядя в каталог, который возвращает pkg-config, я вижу следующее:

[user@compute libpqxx]$ ls -al /storage/home/work/build_env/postgres/include | grep libpq
drwxrws---  2 user user_collab  4096 Nov  7 13:35 libpq
-rw-r--r--  1 user user_collab  2211 Nov  7 13:35 libpq-events.h
-rw-r--r--  1 user user_collab 22179 Nov  7 13:35 libpq-fe.h

Что может быть причиной этой проблемы с файломне найден сценарием конфигурации?

1 Ответ

2 голосов
/ 08 ноября 2019

Ошибка на самом деле довольно очевидна из журналов, но также и неуловима. Как отмечено в вопросе, файл существует по правильному пути;однако в скрипте есть лишние пробелы:

/storage/home/work/build_env/postgres/include  /libpq-fe.h 

, когда должно быть:

/storage/home/work/build_env/postgres/include/libpq-fe.h

Это можно исправить, удалив пробел, используя sed, используя шаблон sed 's/ *$//g'. Это можно сделать, обновив скрипт конфигурации in situ :

19006 -  with_postgres_include=$($PKG_CONFIG libpq --cflags | sed 's/^-I//')
19006 +  with_postgres_include=$($PKG_CONFIG libpq --cflags | sed 's/^-I//' | sed 's/ *$//g')

Эта проблема была решена в репозитории libpqxx , поэтому каноническое решение будетобновите до последней версии исходного кода, если возникла проблема.

...