Как установить PL/R на Mountain Lion? сделать поиск по неверному пути?
Я пытаюсь установить PL/R на Mountain Lion 10.8.2, я установил R 2.15.3 из r-проекта и PostgreSQL 9.1 из KyngChaos. У меня есть PL/R 8.3.0.14 от http://www.joeconway.com/plr/. Я поместил расширенную папку в /usr/local/pgsql/share/contrib и cd'd в эту папку.
Переменные среды $R_HOME и $CUSTOM_COPT устанавливаются в соответствии с инструкциями по адресу http://www.joeconway.com/web/guest/pl/r/-/wiki/Main/Installation_Mac, записывая их в.bash_profile, а также добавляя / library /frameworks/r.framework/resources/bin к моему пути, записав в тот же файл.
XCode 4.6 и инструменты командной строки установлены. Существует несколько копий стандартных файлов заголовков C, включая stdio.h, например, /usr/include/stdio.h.
Следующий шаг выглядит следующим образом:
DiMac:plr duncan$ make
Makefile:40: ../../src/Makefile.global: No such file or directory
Makefile:41: /contrib/contrib-global.mk: No such file or directory
make: *** No rule to make target `/contrib/contrib-global.mk'. Stop.
Это не сработало, и тогда я пытаюсь:
DiMac:plr duncan$ make USE_PGXS=1
gcc -Os -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk -D_FILE_OFFSET_BITS=64 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wformat-security -fno-strict-aliasing -fwrapv -arch x86_64 -I"." -I"-I/library/frameworks/r.framework/resources/include" -I/library/frameworks/r.framework/resources/include -I. -I. -I/usr/local/pgsql-9.1/include/server -I/usr/local/pgsql-9.1/include/internal -I/usr/include/libxml2 -DPKGLIBDIR=\"/usr/local/pgsql-9.1/lib\" -DDLSUFFIX=\".so\" -DR_HOME_DEFAULT=\"/library/frameworks/r.framework/resources\" -c -o plr.o plr.c
In file included from /usr/local/pgsql-9.1/include/server/postgres.h:47,
from plr.h:38,
from plr.c:33:
/usr/local/pgsql-9.1/include/server/c.h:67:19: error: stdio.h: No such file or directory
/usr/local/pgsql-9.1/include/server/c.h:68:20: error: stdlib.h: No such file or directory
...
а затем страницы больше ошибок.
Мне кажется, что make ищет неправильные файлы стандартных заголовочных файлов и не может их найти. Из моего прочтения кажется, что флаг -isysroot
говорит gcc искать заголовочные файлы, добавляя к обычному пути поиска /developer.../macosx10.6.sdk
путь и этот путь не существует на моем компьютере, который я считаю стандартным с текущей версией Xcode.
Итак, вопрос:
Установлен ли этот флаг каким-либо образом Makefile в / plr, или он установлен где-то еще? В любом случае, как мне изменить его, чтобы заставить make найти нужные ему заголовочные файлы? Если это изменение, действительно, правильная вещь?
2 ответа
Мне удалось найти решение для моего собственного вопроса. Может быть, кто-то может помочь с уборкой?
make USE_PGXS=1
форматирует серию флагов и затем вызывает gcc с флагами, которые он вычисляет. Итак, я скопировал и вставил строку gcc...
выше, а затем изменил путь после -isysroot
быть тем, где находятся стандартные заголовочные файлы. Затем команда выполняется правильно и компилирует файл, в котором ей было сказано.
Я должен был сделать это несколько раз, по одному для каждого файла, который будет скомпилирован, пока не существует полный набор, а затем повторить упражнение, используя make install
вместо.
После многих попыток я нашел нужный мне общий объект в нужном месте, а затем возобновил, следуя инструкциям из вики Джо Конвея.
Это прекрасно работает сейчас. Было бы здорово узнать, как остановить / изменить параметр -isysroot навсегда.
Я использую MacPorts postgresql92 +python +perl (после того, как сам ранее скомпилировал PostgreSQL), и он работал безупречно в каждой из последних сборок, которые я делал на трех компьютерах: http://iangow.wordpress.com/2013/06/26/install-plr-on-os-x-10-8-4-using-macports/ (описание более раннего процесса здесь: http://iangow.wordpress.com/2012/05/21/plr-on-os-x/).