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

56

Я пытаюсь установить драгоценный камень 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 просто повторяет то, что уже было отправлено на консоль. Как установить этот камень?

  • 0
    Я тоже постоянно получаю эту ошибку !!
  • 1
    Подсказка в ошибке: «не удается найти заголовочные файлы для ruby» ... это означает, что вам понадобится пакет разработки для ruby.
Показать ещё 1 комментарий
Теги:
gem

12 ответов

118
Лучший ответ

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

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

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

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

  • 3
    Черт возьми, это круто, это на самом деле правильный ответ ... Я заблудился, пытаясь установить SqlLite, и проблема заключалась в том, что каждую минуту появлялись новые сообщения об ошибках. Теперь, если спрашивающий просто отметит это как правильный ответ, мы будем в бизнесе.
  • 7
    В Ubuntu я сделал apt-get install libsqlite3-ruby, и он работал отлично. Как корень, конечно ...
Показать ещё 4 комментария
11

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

sudo yum install ruby-devel

8

Я столкнулся с проблемой установки sqlite3-ruby gem на моем блоке fedora 13. Он был исправлен после sudo yum install sqlite-devel

5

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

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
  • 0
    Это исправило это для меня! +1
  • 0
    Да, это был ответ для меня
5

sudo apt-get install ruby-dev

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

  • 0
    Этот совет исправил это для меня. Благодарю.
3

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

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

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

gem install sqlite3
2

Выполните следующее для ОС Fedora:

yum install rubygem-sqlite3
  • 0
    Это сработало, но после "sudo yum install sqlite-devel"
  • 0
    да, но это зависит от ruby-2.4 и не использует установленный rbenv ruby
1

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

  • 0
    Обороты fedora для заголовков mysql - это что-то вроде «mysql-dev», поэтому правильное количество оборотов в sqlite, скорее всего, будет «sqlite3-dev».
  • 0
    Я сейчас использую FreeBSD 7.1, и у меня установлен порт sqlite3-3.6.4, который предоставляет все, что нужно гему, если я правильно помню. Я пытаюсь проверить Rails 2.2.2 самостоятельно. Удачи, Эрик!
0

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

0

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

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

0

Я исправил проблему на моем OLPC (Fedora 9), установив "gcc" как ни странно. Похоже, что это был один из тех пакетов dev, но нет.

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

После того, как вы установили это, если у вас возникли ошибки в том, что ваши драгоценные камни были слишком старыми "< 1.3.1" при попытке запуска различных сценариев рельсов, например: script/server или script/console, google "upgrade_rubygems", чтобы исправить эту проблему...

НТН...

0

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

  • 0
    На Fedora это ням, но это не проблема. Это проблема libsqlite3-ruby.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню