Я нахожусь в процессе компиляции нескольких расширений Postgres при установке Snow Leopard (Postgres устанавливается с помощью MacPorts). Это часто требует, чтобы две переменные передавались вместе с командой make, например:
sudo make install USE_PGXS=1 PGUSER=postgres
Мой C немного ржавый, если не сказать больше, и я погуглил безрезультатно в надежде найти средство, которое не должно передавать две вышеуказанные переменные.
Кажется, я правильно сделал несколько вещей ... Мой текущий файл ~ / .makerc содержит следующее:
$ cat ~/.makerc
USE_PGXS=1
PGUSER=postgres
Это исправило проблему при запуске make installcheck
, но запуск этого без sudo
часто означает проблемы с разрешениями в будущем во время самого процесса make, и .makerc
не читается, когда я запускаю sudo make installcheck
. Я вошел в систему как root и поместил символическую ссылку в / var / root на указанный выше файл, но безрезультатно.
Я мог бы, возможно, прибегнуть к выполнению всего этого, вошедшего в систему как root. Однако мне любопытно узнать, не мог ли я что-то упустить из виду. Нет ли способа использовать файл .makerc
при запуске sudo make
вместо make
?
Редактировать: закомментированный журнал, после первоначального предложения:
DB:~/pgdevel/kmeans-postgresql $ export USE_PGXS=1
DB:~/pgdevel/kmeans-postgresql $ export PGUSER=postrgess
Это терпит неудачу, потому что заставляет make-файл предполагать, что kmeans-postgresql находится в postgres / contrib (о чем говорит USE_PGXS, и поместить его в postgres / contrib тоже не удается, поскольку он был установлен с помощью MacPorts):
DB:~/pgdevel/kmeans-postgresql $ sudo make
Makefile:34: ../../src/Makefile.global: No such file or directory
Makefile:35: /contrib/contrib-global.mk: No such file or directory
make: *** No rule to make target `/contrib/contrib-global.mk'. Stop.
Это успешно (даже без экспорта):
DB:~/pgdevel/kmeans-postgresql $ make
sed 's,MODULE_PATHNAME,$libdir/kmeans,g' kmeans.sql.in >kmeans.sql
cp kmeans.sql kmeans--1.0.0.sql
/usr/bin/gcc-4.2 -pipe -O2 -arch x86_64 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wformat-security -fno-strict-aliasing -fwrapv -I. -I. -I/opt/local/include/postgresql91/server -I/opt/local/include/postgresql91/internal -I/opt/local/include -I/opt/local/include/ossp -I/opt/local/include/libxml2 -I/opt/local/include -c -o kmeans.o kmeans.c
[some warnings...]
/usr/bin/gcc-4.2 -pipe -O2 -arch x86_64 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wformat-security -fno-strict-aliasing -fwrapv -L/opt/local/lib/postgresql91 -L/opt/local/lib -arch x86_64 -L/opt/local/lib -L/opt/local/lib -Wl,-dead_strip_dylibs -bundle -bundle_loader /opt/local/lib/postgresql91/bin/postgres -o kmeans.so kmeans.o
rm kmeans.o
PS: я повторно добавляю теги OSX и PostgreSQL, потому что, хотя и не строго связанный с PostgreSQL, я надеюсь, что другой пользователь PostgreSQL в MacOSX может знать обходной путь.