SQLite gem をインストールできないのはなぜですか?
-
05-07-2019 - |
質問
Ruby 1.8.6、Rails 2.2.2、gem 1.3、および sqlite-3.5.9 を搭載した Fedora 9 Linux ボックスに SQLite gem をインストールしようとしています。実行しているコマンドとその結果は次のとおりです。
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
すでにコンソールに送信された内容を繰り返すだけです。この gem をインストールするにはどうすればよいですか?
解決
SQLite RubyGemは実際には Ruby Gemではなく、<!> quot; C Gem <!> quot;です。IOWはCで記述されています。つまり、インストール時にRubyインタープリターにコンパイルしてリンクする必要があり、それを行うには、Rubyインタープリター用のCヘッダーファイルが必要であることを意味します。
Rubyを自分でコンパイルすると、これらのヘッダーファイルは自動的にインストールされますが、RedHat系のシステムでは、このようなヘッダーファイルは通常<whatever>-dev
という別のパッケージにパッケージ化されます。そのため、この場合、ruby-dev
パッケージと、場合によってはlibsqlite3-dev
(Ubuntu)またはsqlite-devel
(Fedora)パッケージもインストールする必要があります。
ただし、オペレーティングシステムのあらかじめパッケージ化されたlibsqlite3-ruby
パッケージをインストールするだけで、すべての依存関係が自動的に満たされる方がよい場合があります。
(注:すべてのパッケージ名は、空気が抜けているため、システムによって異なる場合があります。)
他のヒント
おそらく Ruby 開発パッケージが必要です。Ubuntuの場合、rubyヘッダーファイルを含むruby1.8-devをインストールする必要があります。ちょっとグーグルで調べてみると、yumパッケージはruby-develだそうです。これを実行します:
sudo yum install Ruby-devel
Fedora 13ボックスにsqlite3-ruby gemをインストールする際に問題が発生しました。 sudo yum install sqlite-devel
後に修正されましたその問題が発生したとき:
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.
私にとっては、<!> quot; libsqlite3-dev <!> quot; with:
apt-get install libsqlite3-dev
sudo apt-get install ruby-dev
私のために修正しました。
Ubuntu 9および10で試してください:
sudo apt-get install ruby-dev
sudo apt-get install sqlite3-dev
次に実行
gem install sqlite3
Fedora OSで次を実行します。
yum install rubygem-sqlite3
sqlite3-rubyのビルドに必要なすべてのソースコードがありますか? Gemは一部のCコードをコンパイルしようとしていますが、ヘッダーが見つかりません。コンパイルを行わない場合は、おそらくsqlite3-rubyにfedora rpmを使用できます(fedoraは使用しませんが、fedoraは存在するはずです)。個人的にルビーのものについては、ディストリビューションのパッケージングシステムよりもgemを使用することを好みます。
Fedoraにはあまり馴染みがありませんが、Ubuntuではapt-getを使用してパッケージをインストールし、gccやその他のC用のコンパイルツールを含むbuild-essentialsをインストールする必要があります。あなたの問題であり、FedoraでRPMまたはapt-getを使用してインストールする方法を調べます。
奇妙なことに、「gcc」をインストールすることで、OLPC (Fedora 9) の問題を修正しました。それは開発パッケージの 1 つであるべきだったようですが、そうではありません。
また、他のパッケージに関しては、接尾辞が「-dev」ではなく「-devel」であるため、末尾が正しいことを確認してください。「ruby-devel」、「sqlite-devel」...
これをインストールすると、さまざまな Rails スクリプトを実行しようとすると、Gem が古すぎる「< 1.3.1」というエラーが表示される場合があります。script/server または script/console、Google「upgrade_rubygems」で問題を解決してください...
HTH...
<!> quot; sudo yum install sqlite-devel <!> quot;を実行します。そして、<!> quot; gem install sqlite3 <!> quot;。 Fedora 15でも同じ問題がありました。
私はこれとまったく同じ問題を抱えていました... unbuntuでシナプスを使用して、不足しているピースをgemする代わりに
私にとって重要なパッケージはlibsqlite-ruby1.9.1でした...このエラーに関する経験を(参考のため)文書化しました: Sqlite3-gem-error-during-bundle-インストール
alpineでは、sqlite-dev
パッケージをインストールする必要があります。
Fedora 29でreact-railsアプリを生成した後、bundle install
の実行中にこのエラーが発生しました。dnf search sqlite3
を実行して適切な開発パッケージを特定し、それをdnf install libsqlite3x-devel
にインストールしました。これは私のためにそれを修正しました。