Проблема с установкой RODBC в Ubuntu

У меня проблема с некоторыми отсутствующими заголовками при попытке установить RODBC в R на моем Linux. Кто-нибудь может мне помочь с этим вопросом?

> install.packages("RODBC")

Installing package(s) into ‘/home/administrator/R/x86_64-pc-linux-gnu-library/2.12’
(as ‘lib’ is unspecified)

trying URL 'http://cran.cnr.Berkeley.edu/src/contrib/RODBC_1.3-2.tar.gz'
Content type 'application/x-gzip' length 1108358 bytes (1.1 Mb)

opened URL
==================================================
downloaded 1.1 Mb

* installing *source* package ‘RODBC’ ...
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking how to run the C preprocessor... gcc -E
checking for egrep... grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking sql.h usability... no
checking sql.h presence... no
checking for sql.h... no
checking sqlext.h usability... no
checking sqlext.h presence... no
checking for sqlext.h... no
configure: error: "ODBC headers sql.h and sqlext.h not found"
ERROR: configuration failed for package ‘RODBC’
* removing ‘/home/administrator/R/x86_64-pc-linux-gnu-library/2.12/RODBC’
Warning in install.packages :
  installation of package 'RODBC' had non-zero exit status

The downloaded packages are in
    ‘/tmp/RtmpqfNYpD/downloaded_packages’

8 ответов

Как сказал Дирк в комментариях, если вы уже установили r-cran-rodbc, нет необходимости запускать install.packages() изнутри R. "библиотека (RODBC)" должна загрузить пакет.

В целом, когда вы видите ошибки, связанные с заголовками, это происходит потому, что необходимая библиотека разработки не установлена. Решение состоит в том, чтобы искать в Интернете, используя имена отсутствующих заголовочных файлов (например, Google для "sqlext.h ubuntu"), чтобы определить требуемый пакет. В этом случае вам нужен libiodbc2-dev. Так:

sudo apt-get install libiodbc2-dev

Тогда установка внутри R должна работать.

После попытки установить пакеты из всех решений на этом сайте и других, мне удалось построить RODBC Пакет с использованием:

sudo apt-get install unixodbc unixodbc-dev

Я также установил:

  • libiodbc2-DEV
  • libmyodbc
  • ODBC-PostgreSQL

Вам действительно нужно строить из исходного кода? Почему вы не используете бинарный пакет?

Так что, возможно, попробуйте это вместо:

  sudo apt-get install r-cran-rodbc

или используйте любой из интерфейсов GUI для системы управления пакетами.

FWIW, у меня была та же проблема ("заголовки ODBC sql.h и sqlext.h не найдены") на OS X, и я исправил ее, установив unixodbc (brew install unixodbc)

У меня была точно такая же проблема, и я дополнительно использовал condaсреда с установленной только R 4.0.3. Ничего из вышеперечисленного не помогло. Потом в отчаянии вбежал в терминал:
conda installr-odbc
и это сработало! После этого в R
install.packages("RODBC")
Задача решена! Обратите внимание, что я испробовал все приведенные выше советы, поэтому некоторые из sudo apt-get ... Упомянутые здесь команды могли быть актуальными - сейчас сложно сказать.

RODBC зависит от R (>= 3.0.0 (см., Например, https://cran.r-project.org/web/packages/RODBC/RODBC.pdf)

Ваша локальная библиотека пакетов...

Installing package(s) into '/home/administrator/R/x86_64-pc-linux-gnu-library/2.12'

... предполагает, что у вас может быть установлена ​​более старая версия R (2.12). Если это так, попробуйте обновить до последней версии R.

У меня тоже была эта проблема. Для меня решением было то, что мне не хватало некоторых зависимостей Ubuntu, таких как

Примечательно, что install.packages("RODBC", dependencies=TRUE) не забирает эти пакеты. Они лежат снаружи R сам.

Если вы используете libiodbc, а установщик все еще не может его найти, вы можете сделать что-то вроде следующего, обязательно указав правильный каталог libiodbc:

      install.packages("RODBC", configure.args="--with-odbc-include=/usr/include/libiodbc")
Другие вопросы по тегам