sqlite3-драгоценный камень ruby:Не удалось создать собственное расширение gem

StackOverflow https://stackoverflow.com/questions/43778

  •  09-06-2019
  •  | 
  •  

Вопрос

Обновить: Ознакомьтесь с этим последующим вопросом: Обновление 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 gems, но теперь я на 1.2.0, все пошло наперекосяк.

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

gem install sqlite3-ruby --platform Win32

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

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


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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

первый из 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 install sqlite3 --platform=ruby -- --with-sqlite3-include=path\to\include  
 --with-sqlite3-lib=path\to\lib --no-ri --no-rdoc

Удачи вам!

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

Название выпуска:1.2.4

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top