2009-01-07 45 views
54

Tôi đang cố gắng cài đặt đá quý SQLite trên một hộp Fedora 9 Linux với Ruby 1.8.6, Rails 2.2.2, gem 1.3 và sqlite-3.5.9. Dưới đây là các lệnh Tôi đang chạy và kết quả của nó:Tại sao tôi không thể cài đặt đá quý SQLite?

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 chỉ lặp lại những gì đã được gửi đến giao diện điều khiển. Làm thế nào tôi có thể cài đặt đá quý này?

+0

Tôi gặp lỗi này liên tục quá !! – Perpetualcoder

+1

Các đầu mối trong lỗi là "không thể tìm thấy tập tin tiêu đề cho ruby" ... có nghĩa là bạn sẽ cần gói phát triển cho ruby. –

+0

@ salt.racer/BẤT CỨ MỘT NƠI - bạn có thể xin gửi những gì gói (chủ yếu) là bắt buộc. –

Trả lời

125

Các SQLite RubyGem không phải là thực sự là một của Ruby Gem, đó là một "C Gem", IOW nó được viết bằng C. Điều này có nghĩa nó đã được biên dịch và liên kết với thông dịch viên của Ruby khi bạn cài đặt nó và để làm rằng, nó cần các tệp tiêu đề C cho trình thông dịch Ruby.

Nếu bạn biên dịch Ruby, các tệp tiêu đề sẽ được cài đặt tự động, tuy nhiên, trong các hệ thống RedHat-ish, các tệp tiêu đề này thường được đóng gói trong gói riêng biệt, gọi là <whatever>-dev. Vì vậy, trong trường hợp này, bạn sẽ cần phải cài đặt gói ruby-dev và có thể là gói libsqlite3-dev (Ubuntu) hoặc sqlite-devel (Fedora).

Tuy nhiên, bạn có thể nên sử dụng gói libsqlite3-ruby được đóng gói sẵn của Hệ Điều hành, theo cách đó tất cả các phụ thuộc sẽ được tự động hài lòng.

(Lưu ý: tất cả tên gói được rút ra từ không khí mỏng, có thể khác trên hệ thống của bạn.)

+3

Chết tiệt SO là mát mẻ, đây thực sự là câu trả lời đúng ... Tôi đã mất cố gắng để cài đặt SqlLite và vấn đề đã được sản xuất thông báo lỗi mới mỗi phút. Bây giờ nếu người hỏi sẽ chỉ đánh dấu đây là câu trả lời đúng, chúng ta sẽ kinh doanh. –

+7

Trên Ubuntu, tôi đã cài đặt apt-get libsqlite3-ruby và nó hoạt động hoàn hảo. Như root, tất nhiên ... –

+3

Hoặc nếu bạn muốn cài đặt gem, bạn cần apt-get install ruby-dev, giống như Jorg nói. – Shadowfirebird

1

Bạn có tất cả mã nguồn cần thiết để xây dựng sqlite3-ruby không? Gem đang cố gắng biên dịch một số mã C và không thể tìm thấy các tiêu đề. Bạn có thể sử dụng một vòng lặp fedora cho sqlite3-ruby (Tôi không sử dụng fedora, nhưng tôi chắc chắn một tồn tại) nếu bạn muốn từ bỏ biên dịch. Cá nhân cho những thứ ruby, tôi thích sử dụng đá quý hơn là một hệ thống đóng gói của distro.

+0

rpm fedora cho các tiêu đề mysql là một cái gì đó như 'mysql-dev', vì vậy các sqlite rpm chính xác có thể là 'sqlite3-dev' – erik

+0

Tôi đang sử dụng FreeBSD 7.1 ngay bây giờ, và tôi có sqlite3-3.6.4 cổng được cài đặt, cung cấp mọi thứ cần thiết nếu tôi nhớ đúng. Tôi đang cố gắng kiểm tra bản thân Rails 2.2.2. Chúc may mắn Erik! – barneytron

0

Tôi không thực sự quen thuộc với Fedora, nhưng trong Ubuntu khi bạn cài đặt các gói bạn có apt-get và bạn phải cài đặt các công cụ cần thiết bao gồm gcc và các công cụ biên dịch khác cho C. có thể là vấn đề của bạn và bạn hãy xem xét cách cài đặt bằng cách sử dụng RPM hoặc apt-get trên Fedora.

+0

Đó là yum trên Fedora, nhưng đây không phải là vấn đề. Đó là vấn đề libsqlite3-ruby. –

11

Có thể bạn cần gói dev ruby. Đối với Ubuntu, bạn phải cài đặt ruby1.8-dev bao gồm các tập tin tiêu đề ruby. Một google nhanh chóng nói rằng gói yum là ruby-devel. vì vậy hãy chạy này:

sudo yum install ruby-devel

0

tôi khắc phục vấn đề trên OLPC của tôi (Fedora 9) bằng cách cài đặt 'gcc' kỳ quặc đủ. Có vẻ như nó phải là một trong những gói dev đó, nhưng không.

Ngoài ra, liên quan đến các gói khác, hậu tố là "-devel", không phải "-dev", vì vậy hãy đảm bảo bạn có được kết thúc đúng: "ruby-devel", "sqlite-devel" ...

Khi bạn nhận được cài đặt, nếu bạn gặp lỗi về đá quý của mình quá cũ "< 1.3.1" khi bạn cố gắng chạy các tập lệnh đường ray khác nhau, ví dụ: script/server hoặc script/console, google "upgrade_rubygems" để khắc phục vấn đề ...

HTH ...

5

sudo apt-get install ruby-dev

sửa nó cho tôi.

0

Tôi đã có cùng một vấn đề chính xác này ... thay vì đá quý những phần còn thiếu mà tôi đã sử dụng synaptic trên unbuntu.

Các gói phần mềm quan trọng đối với tôi là libsqlite-ruby1.9.1 ... Tôi ghi lại kinh nghiệm của tôi (để tham khảo) với lỗi này tại địa chỉ: Sqlite3-gem-error-during-bundle-install

8

tôi phải đối mặt với vấn đề cài đặt sqlite3-ruby đá quý trên hộp fedora 13 của tôi . Nó đã được cố định sau khi sudo yum install sqlite-devel

2

Run sau đây cho Fedora OS:

yum install rubygem-sqlite3 
+0

Điều đó có hiệu quả nhưng sau "sudo yum install sqlite-devel" – Saad

0

Run "sudo yum install sqlite-devel" và sau đó "gem install sqlite3". Có cùng một vấn đề trên Fedora tôi 15.

3

Trên Ubuntu 9 và 10 thử:

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

Sau đó chạy

gem install sqlite3 
5

Khi tôi có vấn đề rằng:

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. 

Đối tôi đã làm việc, cài đặt "libsqlite3-dev" với:

apt-get install libsqlite3-dev 
+0

Điều này đã sửa nó cho tôi! +1 –

0

Trên núi cao, bạn cần cài đặt gói sqlite-dev.

Các vấn đề liên quan