Почему я не могу установить гем SQLite?

Я пытаюсь установить гем SQLite на Fedora 9 Linux с Ruby 1.8.6, Rails 2.2.2, gem 1.3 и sqlite-3.5.9. Вот команда, которую я запускаю, и ее результаты:

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

/usr/bin/ruby extconf.rb install sqlite3-ruby
can't find header files for ruby.

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

gem_make.out просто повторяет то, что уже было отправлено на консоль. Как я могу установить этот камень?


person Eric Noob    schedule 07.01.2009    source источник
comment
У меня тоже эта ошибка постоянно!!   -  person Perpetualcoder    schedule 07.01.2009
comment
Подсказка в ошибке заключается в том, что не удается найти файлы заголовков для ruby... это означает, что вам понадобится пакет разработки для ruby.   -  person salt.racer    schedule 07.01.2009
comment
@salt.racer / ЛЮБОЙ ТАМ - не могли бы вы опубликовать, какой пакет (в основном) требуется.   -  person Sudhakar Krishnan    schedule 01.01.2014


Ответы (15)


SQLite RubyGem на самом деле не RubyGem, это "CGem", IOW он написан на C. Это означает, что он должен быть скомпилирован и связан с Ruby. интерпретатор при его установке, и для этого это ему нужны заголовочные файлы C для интерпретатора Ruby.

Если вы компилируете Ruby самостоятельно, эти заголовочные файлы будут установлены автоматически, однако в RedHat-ish системах такие заголовочные файлы обычно упаковываются в отдельный пакет с именем <whatever>-dev. Итак, в этом случае вам нужно будет установить пакет ruby-dev и, возможно, пакет libsqlite3-dev (Ubuntu) или sqlite-devel (Fedora).

Тем не менее, вам может быть лучше просто установить предварительно упакованный пакет libsqlite3-ruby вашей операционной системы, таким образом, все зависимости будут удовлетворены автоматически.

(Примечание: все имена пакетов, взятые из воздуха, могут отличаться в вашей системе.)

person Jörg W Mittag    schedule 07.01.2009
comment
Черт, ТАК круто, на самом деле это правильный ответ ... Я потерялся, пытаясь установить SqlLite, и проблема заключалась в том, что каждую минуту выдавались новые сообщения об ошибках. Теперь, если спрашивающий просто пометит это как правильный ответ, мы будем в деле. - person Dan Rosenstark; 22.01.2009
comment
В Ubuntu я сделал apt-get install libsqlite3-ruby, и это сработало отлично. Под рутом, конечно... - person Dan Rosenstark; 22.01.2009
comment
Или, если вы хотите установить драгоценный камень, вам нужно будет apt-get установить ruby-dev, как говорит Йорг. - person Shadowfirebird; 05.02.2010
comment
Еще раз, Йорг, ваша информация пригодилась, чтобы облегчить мое обучение. Еще раз спасибо. - person Mark Essel; 07.05.2010
comment
Великолепно — это должно быть задокументировано в FAQ по Ruby on Rails! - person Anton Babushkin; 21.02.2012

Вам, вероятно, понадобится пакет ruby ​​dev. Для Ubuntu вам необходимо установить ruby1.8-dev, который включает заголовочные файлы ruby. Быстрый гугл говорит, что пакет yum — это ruby-devel. поэтому запустите это:

sudo yum установить ruby-devel

person hacintosh    schedule 08.01.2009

Я столкнулся с проблемой установки драгоценного камня sqlite3-ruby на моей коробке Fedora 13. Это было исправлено после sudo yum install sqlite-devel.

person Rahul    schedule 06.01.2011

Когда у меня была эта проблема:

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

У меня сработало, установив "libsqlite3-dev" с помощью:

apt-get install libsqlite3-dev
person matiasmasca    schedule 12.05.2016
comment
Это исправило это для меня! +1 - person R.Hull; 02.06.2016
comment
Да, это был ответ для меня - person Echelon; 18.08.2018

sudo apt-get install ruby-dev

Исправил это для меня.

person Sacha    schedule 18.12.2010
comment
Этот совет исправил это для меня. Спасибо. - person Tore Aurstad; 15.08.2018

В Ubuntu 9 и 10 попробуйте:

sudo apt-get install ruby-dev
sudo apt-get install sqlite3-dev

Затем запустите

gem install sqlite3
person ldemon    schedule 23.08.2011

Запустите следующее для ОС Fedora:

yum install rubygem-sqlite3
person Chase    schedule 20.07.2011
comment
Это сработало, но после установки sudo yum sqlite-devel - person UserBSS1; 28.01.2016
comment
да, но это зависит от ruby-2.4 и не использует установленный rbenv ruby - person andrej; 20.04.2018

На alpine вам необходимо установить пакет sqlite-dev.

person Omer Levi Hevroni    schedule 13.02.2018

Я также столкнулся с этой же проблемой, проблема в том, что ваша установка Linux требует установки библиотек разработки для SQLite3 для сборки драгоценного камня.

Вот как я решил проблему

Откройте терминал и выполните следующие команды

sudo apt-get install sqlite3

sudo apt-get install libsqlite3-dev

А затем попробуйте снова установить гем Sqlite3, используя эту команду

gem install sqlite3

Это все.

Надеюсь, это поможет

person Promise Preston    schedule 07.08.2019

У вас есть весь исходный код, необходимый для сборки sqlite3-ruby? Gem пытается скомпилировать код C и не может найти заголовки. Вероятно, вы можете использовать rpm-пакет Fedora для sqlite3-ruby (я не использую Fedora, но уверен, что он существует), если вы предпочитаете отказаться от компиляции. Лично для ruby ​​я предпочитаю использовать gem, а не систему упаковки дистрибутива.

person barneytron    schedule 07.01.2009
comment
RPM-файл Fedora для заголовков mysql похож на «mysql-dev», поэтому правильный rpm-пакет sqlite, скорее всего, будет «sqlite3-dev». - person erik; 07.01.2009
comment
Я использую FreeBSD 7.1 прямо сейчас, и у меня установлен порт sqlite3-3.6.4, который предоставил все, что нужно гему, если я правильно помню. Я сам пытаюсь проверить Rails 2.2.2. Удачи Эрик! - person barneytron; 07.01.2009

Я не совсем знаком с Fedora, но в Ubuntu, когда вы устанавливаете пакеты, у вас есть apt-get, и вам нужно установить необходимые для сборки компоненты, которые включают gcc и другие инструменты компиляции для C. Я бы сказал, что это может быть вашей проблемой. , и вы посмотрите, как это можно установить с помощью RPM или apt-get в Fedora.

person Tim Knight    schedule 07.01.2009
comment
Это ням в Fedora, но это НЕ проблема. Это проблема libsqlite3-ruby. - person Dan Rosenstark; 22.01.2009

Я исправил проблему на своем OLPC (Fedora 9), установив «gcc», как ни странно. Кажется, это должен был быть один из тех пакетов для разработчиков, но нет.

Кроме того, что касается других пакетов, суффикс "-devel", а не "-dev", поэтому убедитесь, что вы правильно поняли эти окончания: "ruby-devel", "sqlite-devel"...

После того, как вы его установите, если вы получаете сообщения об ошибках о том, что ваши драгоценные камни слишком стары «‹ 1.3.1», когда вы пытаетесь запустить различные скрипты rails, например: скрипт/сервер или скрипт/консоль, погуглите «upgrade_rubygems», чтобы решить эту проблему. ..

ХТХ...

person Community    schedule 15.05.2009

Запустите «sudo yum install sqlite-devel», а затем «gem install sqlite3». Была такая же проблема на моей Fedora 15.

person rapidror    schedule 01.08.2011

У меня была такая же точная проблема ... вместо того, чтобы отмечать недостающие части, я использовал синаптический на unbuntu.

Ключевым пакетом для меня был libsqlite-ruby1.9.1... Я задокументировал свой опыт (для справки) с этой ошибкой по адресу: Sqlite3-gem-error-during-bundle-install

person Riding Rails    schedule 21.12.2010

Я столкнулся с этой ошибкой при запуске bundle install после создания приложения react-rails в Fedora 29. Я смог определить подходящий пакет разработки, запустив dnf search sqlite3, а затем установил его dnf install libsqlite3x-devel. Это исправило это для меня.

person g4k13    schedule 15.04.2019