Как установить пользователя для installcheck в Makefile расширения postgres?

Я тестирую пример для создания простых расширений PostgreSQL base36.

Тем не менее, я сталкиваюсь с проблемами при написании и использовании примера модульного теста (REGRESS =). Если я использую sudo make installcheck, будет ошибка, говорящая

... ============== удаление базы данных "contrib_regression" ==============

psql: FATAL: роль "root" не существует......

Похоже, что PostgreSQL пытается использовать текущий логин для выполнения теста, которого в этом случае не существует. Если я опущу sudo и просто сделать make installcheck, это сгенерирует другую ошибку, говоря permission denied для чего-то

ОШИБКА СОЗДАНИЯ БАЗЫ ДАННЫХ: отказано в разрешении на установку параметра "lc_messages": команда завершилась неудачно: "/usr/lib/postgresql/9.5/bin/psql" -X -c "ALTER DATABASE \"contrib_regression\" SET lc_messages TO 'C';ALTER DATABASE \"contrib_regression\" SET lc_monetary TO 'C';ALTER DATABASE \"contrib_regression\" SET lc_numeric TO 'C';ALTER DATABASE \"contrib_regression\" SET lc_time TO 'C';ALTER DATABASE \"contrib_regression\" SET timezone_abbreviations TO 'По умолчанию';" "contrib_regression" /usr/lib/postgresql/9.5/lib/pgxs/src/makefiles/pgxs.mk:272: рецепт для цели 'installcheck' не выполнен make: *** [installcheck] Ошибка 2

Мои вопросы:

Могу ли я указать другого пользователя (например, суперпользователя) в Makefile для расширения PostgreSQL?

Или я могу решить проблему, чтобы не суперпользователь мог выполнить installcheck ?

Обратите внимание Makefile является:

EXTENSION = base36        # the extensions name
DATA = base36--0.0.1.sql  # script files to install
REGRESS = base36_test     # our test script file (without extension)

# postgres build stuff
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)

1 ответ

Вы можете установить переменную среды PGUSERнапример,

PGUSER=foo make installcheck

Бег make installcheck как root (через sudo), скорее всего, это неправильно.

Другие вопросы по тегам