Подтвердить что ты не робот

Sqlite3-ruby gem: Не удалось создать собственное расширение gem

Обновление: Просмотрите следующий вопрос: Обновление 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, все обернулось.

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

gem install sqlite3-ruby --platform Win32

Излишне говорить, что это тоже не работает (такая же ошибка)

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


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

4b9b3361

Ответ 1

Как предполагает Натан, это, по-видимому, связано с тем, что последние версии камней 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. Когда процедура обновления встречает ошибку, она вырывает вас из всего процесса. Там (хакерское) решение этой проблемы здесь.

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

Ответ 3

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

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

Ответ 4

сначала из 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

last install gem like:

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

Удачи!

Ответ 5

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

Имя выпуска: 1.2.4

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

Надеюсь, что это поможет другим!

Ответ 6

У меня была такая же проблема в Windows, и у меня есть installe 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 Успешно установлен рубин-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...