sqlite3-ruby gem: не удалось создать собственное расширение для gem - PullRequest
20 голосов
/ 04 сентября 2008

Обновление: Проверьте следующий вопрос: Обновление Gem в Windows - оно не работает?


В Windows, когда я делаю это:

gem install sqlite3-ruby

Я получаю следующую ошибку:

Building native extensions.  This could take a while...
ERROR:  Error installing sqlite3-ruby:
        ERROR: Failed to build gem native extension.

c:/ruby/bin/ruby.exe extconf.rb install sqlite3-ruby --platform Win32
checking for fdatasync() in rt.lib... no
checking for sqlite3.h... no

nmake
'nmake' is not recognized as an internal or external command,
operable program or batch file.


Gem files will remain installed in c:/ruby/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4 for inspection.
Results logged to c:/ruby/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/ext/sqlite3_api/gem_make.out

То же самое происходит с самоцветом hpricot . Кажется, я помню, что эти драгоценные камни были отлично установлены на <1.0 драгоценных камнях, но теперь я на 1.2.0, все пошло не так. </p>

Я также пробовал это:

gem install sqlite3-ruby --platform Win32

Само собой разумеется, это тоже не работает (та же ошибка)

Кто-нибудь знает, что здесь происходит и как это исправить?


Обновление: Проверьте следующий вопрос: Обновление Gem в Windows - оно не работает?

Ответы [ 6 ]

26 голосов
/ 04 сентября 2008

Как предполагает Натан, это, по-видимому, связано с тем, что последние версии гемов sqlite3-ruby и hpricot, похоже, не имеют версий для Windows. Вот что нужно делать, когда сталкиваешься с такой ситуацией (обратите внимание, что имя драгоценного камня автоматически подстановочный, поэтому вы можете просто набрать sql и получить список всех драгоценных камней, начиная с sql ) :

$ gem list --remote --all sqlite

*** REMOTE GEMS ***

sqlite (2.0.1, 2.0.0, 1.3.1, 1.3.0, 1.2.9.1, 1.2.0, 1.1.3, 1.1.2, 1.1.1, 1.1)
sqlite-ruby (2.2.3, 2.2.2, 2.2.1, 2.2.0, 2.1.0, 2.0.3, 2.0.2)
sqlite3-ruby (1.2.4, 1.2.3, 1.2.2, 1.2.1, 1.2.0, 1.1.0, 1.0.1, 1.0.0, 0.9.0, 0.6.0, 0.5.0)

Затем вы можете выбрать версию, которую хотите установить:

gem install sqlite3-ruby -v 1.2.3

Чтобы успешно установить hpricot, я сделал это:

gem install hpricot -v 0.6

Досадно, что gem update пытается обновить гемы до их последних, неработающих на Windows, версий. Когда процедура обновления сталкивается с ошибкой, она исключает вас из всего процесса. Есть (хакерское) решение этой проблемы здесь .

Итак, это ошибка в гемах? Разве гемы не должны автоматически определять платформу и устанавливать последнюю совместимую версию?

9 голосов
/ 24 января 2009

У меня была такая же проблема на Ubuntu, это решило проблему для меня:

http://newsgroups.derkeiler.com/Archive/Comp/comp.lang.ruby/2008-08/msg00339.html

2 голосов
/ 28 июля 2013

сначала с sqlite.org (http://www.sqlite.org/download.html)
скачать файл ->
Предварительно скомпилированные двоичные файлы: sqlite-dll-win32-x86-3071700.zip
и исходный код: sqlite-autoconf-3071700.tar.gz
затем извлечь как:

-include
    --sqlite3.h
    --sqlite3ext.h
-lib
    --shell.c
    --sqlite3.c
    --sqlite3.def
    --sqlite3.dll

последняя установка gem как:

gem install sqlite3 --platform=ruby -- --with-sqlite3-include=path\to\include  
 --with-sqlite3-lib=path\to\lib --no-ri --no-rdoc

Удачи!

2 голосов
/ 04 сентября 2008

Возможно ли, что новейшая версия еще не была портирована на Win32? Поскольку этот конкретный гем имеет привязки к скомпилированному коду, для него потребуется гем, специфичный для платформы. Если я принудительно установлю версию 1.2.3, а не текущую 1.2.4, версия для конкретной платформы будет установлена, но когда я позволю gem попытаться установить текущую версию, я получу общую версию 1.2.4 (в гемах). в папке библиотеки отсутствует суффикс -x86-mswin32, который есть в именах других папок sqlite3-ruby.

Может быть, кто-то еще может ответить, как гем обрабатывает драгоценные камни конкретной платформы. Загружены ли отдельные драгоценные камни для каждой платформы, и программное обеспечение драгоценного камня выбирает, какой из них выпустить?

1 голос
/ 21 декабря 2009

У меня была такая же проблема в Windows, и я установил MinGW http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/MinGW%205.1.6/MinGW-5.1.6.exe/download и проблема ушла: -)

C:> gem install hpricot Успешно установлен hpricot-0.8.2-x86-mswin32 1 драгоценный камень установлен Установка документации ri для hpricot-0.8.2-x86-mswin32 ... Установка документации RDoc для hpricot-0.8.2-x86-mswin32 ...

C:> gem install ruby-postgres Успешно установлен ruby-postgres-0.7.1.2006.04.06-x86-mswin32 1 драгоценный камень установлен Установка документации ri для ruby-postgres-0.7.1.2006.04.06-x86-mswin32 ... Установка документации RDoc для ruby-postgres-0.7.1.2006.04.06-x86-mswin32 ...

1 голос
/ 14 декабря 2008

Я тоже столкнулся с этой проблемой. Стоит знать, что разница между 1.2.3 и 1.2.4 незначительна. Вот 1.2.4. Примечания к выпуску:

Название релиза: 1.2.4

Примечания. Этот выпуск обновляет только сгенерированный C-файл для отражения изменения совместимости, которые были сделаны в файл SWIG. Двоичные сборки (например, Windows) не влияют, и не нужно Обновить. В общем, вам не понадобится это обновление, если вы не используете версия Ruby до 1.8.6. (источник: 1.2.4. заметки о выпуске )

Надежда, которая помогает другим!

...