Как установить пользователя для 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), скорее всего, это неправильно.