Пытаюсь заставить RMySQL работать, но не понимаю соглашений об экспорте или файловой системе bash

#mysql #r #bash

#mysql #r #bash

Вопрос:

Я пытаюсь установить RMySQL на свой mac (mavericks), и он выдает ошибку, когда я пытаюсь собрать его из исходного кода, говоря:

Ошибка конфигурации: не удалось найти каталоги, включающие установку MySQL, и / или библиотеки. Вручную укажите расположение библиотек MySQL и файлов заголовков и повторно запустите R CMD INSTALL.

Инструкции:

  1. Определите и экспортируйте 2 переменные оболочки PKG_CPPFLAGS и PKG_LIBS, чтобы включить каталог для заголовочных файлов (* .h) и библиотек, например (используя синтаксис Bourne shell):

    export PKG_CPPFLAGS=»-I» export PKG_LIBS=»-L -lmysqlclient» Повторно запустите команду R INSTALL:

    R CMD INSTALL RMySQL_.tar.gz

Я попытался следовать инструкциям, введя:

export PKG_CPPFLAGS=»-I/usr/local/mysql/include» export PKG_LIBS=»-L/usr/local/mysql/ lib -lmysqlclient»

но когда я повторно запускаю RMySQL, он все равно не работает. Более того, если я наберу

$ PKG_LIBS

чтобы узнать, что содержит эта переменная, я получаю

-bash: -L /usr/local/mysql / lib: нет такого файла или каталога ‘

Я знаю, что /usr/local/mysql/lib существует, и он содержит заголовок MySQL. Я неправильно понял инструкции?

Я спрашиваю здесь только после больших усилий по поиску решений и / или обходных путей. Иногда хреново быть новичком.

Комментарии:

1. Вы перешли по этой ссылке ?

2. Да, я это сделал. Не повезло. спасибо за попытку.

Ответ №1:

Я предполагаю, что вы пытаетесь заставить RMySQL работать на R 3.1.0 в Mavericks? Вместо того, чтобы беспокоиться об экспорте переменных и т.д., вот простое и понятное решение для вас, которое должно избежать головной боли.

Ссылка на установку RMySQL Pascal, представленная выше, действительно является вашим решением. Вероятно, вы просто спотыкаетесь о синтаксисе или заставляете вещи работать с терминала.

Даже если вы «новичок», вы должны быть в состоянии заставить это работать. Я попытаюсь предложить здесь «руководство для манекена», поскольку, держу пари, есть много других, у которых тоже есть эта проблема, даже после попытки прочитать readme установки RMySQL.

Я бы поспорил с очень высокой уверенностью, что проблема заключается только в том, что вы неправильно указываете расположение библиотек и папок заголовков для компиляции.Внимательно прочитайте ошибки при попытке компиляции… ошибки, вероятно, скажут вам, что файл / заголовок отсутствует или какой-либо файл .so (общий объект) отсутствует.

Один простой способ скомпилировать RMySQL из исходного кода на R 3.1.0, mavericks заключается в следующем (это не требует от вас установки каких-либо переменных среды, никакого редактирования файла Renviron и т. Д.):

  1. Работает ли MySQL сам по себе? т. Е. Вы можете открыть / запустить его без проблем? Если нет, сначала исправьте это.

  2. Найдите точное местоположение вашей установки mysql. Для меня, на Mavericks, я вижу mysql, установленный по адресу /usr/local/mysql-5.6.17-osx10.7-x86_64 (ваш номер версии может отличаться). Существует также другая папка /usr/local/mysql, которая является псевдонимом /usr/local/mysql-5.6.17-osx10.7-x86_64 (/usr/local/mysql находит текущую версию mysql, которую вы используете, если, я думаю, существует несколько файловых папок mysql). В этом каталоге я вижу два подкаталога (среди многих), которые называются «include» и «lib». Посмотрите; «include» будет содержать заголовочные файлы (include, как в #include и т. Д., В простых программах на C ). Папка «lib» содержит скомпилированный исходный код библиотеки mysql.

  3. Простой способ скомпилировать и установить RMySQL, который не совсем соответствует предложенному способу сделать это в руководстве по установке, заключается в следующем. Обратите внимание, что это делает то же самое, что и в руководстве по установке, только немного проще, поскольку это одна командная строка из терминала, как только вы узнаете, где находится ваша папка установки mysql. Перейдите к терминалу и введите точно следующее, с одним пробелом между каждым фрагментом (с именем вашей папки mysql, соответствующим номеру версии):

PKG_CPPFLAGS=»-I/usr/local/mysql/include/» PKG_LIBS=»-L/usr/local/mysql /lib/ -lmysqlclient» R CMD INSTALL RMySQL_0.9-3.tar.gz

ИЛИ (то же самое, просто больше ввода)

PKG_CPPFLAGS=»-I/usr/local/mysql-5.6.17-osx10.7-x86_64/include/» PKG_LIBS=»-L/usr/local/mysql-5.6.17-osx10.7-x86_64/lib/ -lmysqlclient» R CMD INSTALL RMySQL_0.9-3.tar.gz

Примечание для чайников: при запуске этой команды убедитесь, что вы выполняете это из терминала в каталоге, который содержит RMySQL_0.9-3.tar.gz файл (или как бы там ни называлась ваша папка, содержащая исходный код RMySQL)

и RMySQL компилируется!

Не бойтесь пытаться скомпилировать исходный код — это не только для «программистов на компилируемом языке» или «выпускников компьютерных наук». В большинстве случаев сбой компиляции происходит только потому, что файлы «отсутствуют» (в исходном коде нет повреждений) — пользователь неправильно указал расположение заголовка и библиотек (общих объектов). Теперь натяни свои большие трусики для мальчиков / девочек и просто сделай это …. это просто.

Примечания для людей, не имеющих представления о компиляции исходного кода для пакетов на R:

a) обратите особое внимание на интервал в приведенном выше, иначе это может не сработать. Не ставьте никаких пробелов между = и именами переменных / файлов (например, не пытайтесь указывать в приведенном выше PKG_CPPFLAGS =»-I/usr/local/mysql/include/», так как это не сработает)

б) При компиляции вы хотите указать расположение файлов заголовков и файлов библиотеки, и это то, что делают «-I / …. » и «-L / ….». Каталог -I указывает расположение файлов заголовков, а -L — расположение файлов библиотеки. Для файлов библиотеки также требуется расширение -l[имя библиотеки] (-l является сокращением от -lib в именах объектов библиотеки).

c) Обратите внимание, что в каталоге /usr/local/mysql-5.6.17-osx10.7-x86_64/lib/ я не вижу файла с именем «lmysqlclient» или даже «libmysqlclient», но я вижу файлы с именами (среди прочих) «libmysqlclient.a» и «libmysqlclient.18.dylib». Так что не беспокойтесь о неправильной установке MySQL, если вы не видите файл с именем «libmysqlclient» в папке lib.

Комментарии:

1. У меня недостаточно очков репутации, чтобы поддержать ваш ответ, но я бы хотел. Ваш ответ был героическим. Спасибо, что нашли время! Я уверен, что куча других людей столкнется с этой проблемой.

2. На случай, если это поможет другим людям, следующая команда сработала и для меня (я только что получил эту работу, когда увидел ваш ответ FXQuantTrader): R CMD INSTALL —configure-args=’—with-mysql-inc=/usr/local/mysql/include —with-mysql-lib=/usr/local/mysql/lib —with-mysql-dir=/usr/local/mysql’ RMySQL_0.9-3.tar

3. Нет проблем, рад помочь