2010-03-11 36 views
5

Cập nhật vấn đề II được giải quyết nhưng tại sao? Đây là cơn đau đầu lớn nhất từ ​​trước tới nay. Vấn đề của tôi được giải quyết, tuy nhiên tôi không có đầu mối làm thế nào tôi hoàn thành nhiệm vụ này. Cộng với các kết quả sau đây không có ý nghĩa. Đường dẫn .profile của tôi (/ usr/local/bin) khác với đường dẫn hiện đang hoạt động (/ usr/bin /). Con đường làm việc đột nhiên xuất hiện sau khi tôi đóng terminal trong báo tuyết OSX. Chuyện gì đang xảy ra ở đây?tàu đắm. Đường ray yêu cầu RubyGems> = 1.3.2

Dưới đây là những con đường làm việc và tập tin .profile khó hiểu:

$ rails -v 
Rails 3.0.0.beta 
$ ruby -v 
ruby 1.8.7 (2008-08-11 patchlevel 72) [universal-darwin10.0] 
$ gem -v 
1.3.6 
$ whereis ruby 
/usr/bin/ruby 
$ whereis rails 
/usr/bin/rails 
$ whereis gem 
/usr/bin/gem 
$ which gem 
/usr/bin/gem 
$ which ruby 
/usr/bin/ruby 
$ which rails 
/usr/bin/rails 
$ mate ~/.profile 

.profile file:

export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH" 
if [[ -s /Users/justinz/.rvm/scripts/rvm ]] ; then source /Users/justinz/.rvm/scripts/rvm ; fi 

Cập nhật Tôi nhận thấy rằng đó ruby ​​và whereis ruby ​​là địa điểm khác nhau

which ruby 
/opt/local/bin/ruby 
whereis ruby 
/usr/bin/ruby 

Gần đây tôi đã nâng cấp ruby ​​lên ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin10] và tôi nghĩ rằng tôi đã phá vỡ đường ray. Khi tôi cố gắng tải đường ray. Tôi nhận được một tin nhắn kỳ lạ. Hãy giúp tôi!

$ ruby ​​script/server Đường ray yêu cầu RubyGems> = 1.3.2. Vui lòng cài đặt RubyGems và thử lại: http://rubygems.rubyforge.org

$ which ruby 
/usr/local/bin/ruby 
$ whereis ruby 
/usr/bin/ruby 
$ which rails 
/usr/local/bin/rails 
$ whereis rails 
/usr/bin/rails 
$ which gem 
/usr/local/bin/gem 
$ whereis gem 
/usr/bin/gem 
$ ruby -v 
ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin10.2.0] 
$ rails -v 
Rails 2.3.5 
$ gem list 

*** LOCAL GEMS *** 

actionmailer (2.3.5) 
actionpack (2.3.5) 
activerecord (2.3.5) 
activeresource (2.3.5) 
activesupport (2.3.5) 
builder (2.1.2) 
bundler (0.9.11) 
columnize (0.3.1) 
erubis (2.6.5) 
fastercsv (1.5.1) 
ffi (0.6.3) 
gbarcode (0.98.16) 
i18n (0.3.5) 
linecache (0.43) 
mail (2.1.3) 
memcache-client (1.8.0) 
prawn (0.8.4) 
prawn-core (0.8.4) 
prawn-layout (0.8.4) 
prawn-security (0.8.4) 
rack (1.1.0, 1.0.1) 
rack-mount (0.6.1) 
rack-test (0.5.3) 
rails (2.3.5) 
rake (0.8.7) 
ruby-debug (0.10.3) 
ruby-debug-base (0.10.3) 
rubygems-update (1.3.6) 
sqlite3 (0.0.8) 
text-format (1.0.0) 
thor (0.13.4) 
tzinfo (0.3.17) 
$ sudo gem install sqlite3-ruby 
Password: 
Building native extensions. This could take a while... 
ERROR: Error installing sqlite3-ruby: 
    ERROR: Failed to build gem native extension. 

/usr/local/bin/ruby extconf.rb 
checking for fdatasync() in -lrt... no 
checking for sqlite3.h... yes 
checking for sqlite3_open() in -lsqlite3... no 
*** extconf.rb failed *** 
Could not create Makefile due to some reason, probably lack of 
necessary libraries and/or headers. Check the mkmf.log file for more 
details. You may need configuration options. 

Provided configuration options: 
    --with-opt-dir 
    --without-opt-dir 
    --with-opt-include 
    --without-opt-include=${opt-dir}/include 
    --with-opt-lib 
    --without-opt-lib=${opt-dir}/lib 
    --with-make-prog 
    --without-make-prog 
    --srcdir=. 
    --curdir 
    --ruby=/usr/local/bin/ruby 
    --with-sqlite3-dir 
    --without-sqlite3-dir 
    --with-sqlite3-include 
    --without-sqlite3-include=${sqlite3-dir}/include 
    --with-sqlite3-lib 
    --without-sqlite3-lib=${sqlite3-dir}/lib 
    --with-rtlib 
    --without-rtlib 
    --with-sqlite3lib 
    --without-sqlite3lib 


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

Tôi nên thêm Tôi đã thử cập nhật đá quý sudo --system –

+0

Phiên bản đá quý ruby ​​nào bạn hiện đang chạy (gem -v) –

+0

Tôi đang chạy 1.3.6 –

Trả lời

2

Bạn đã xem xét Trình quản lý phiên bản Ruby hoặc rvm (http://rvm.beginrescueend.com/). Tôi biết rằng nó chạy trên Linux và Mac OS X.

Về cơ bản, nó là một công cụ quản lý các phiên bản ruby ​​khác nhau và tất cả các phần "liên quan" của nó.Tôi đã gặp vấn đề tương tự khi một người bạn đề nghị tôi thử nó, và nó giải quyết nó cho tôi.

0

Tôi không hoàn toàn chắc chắn rằng tôi nhớ chính xác như nó đã được một thời gian trước đây, nhưng tôi nghĩ rằng tôi đã có một vấn đề tương tự khi tôi nâng cấp từ Rails 2.3.4 để Rails 2.3.5. Trong trường hợp đó tôi tin rằng vấn đề là do có cả Rack 1.1.0 và Rack 1.0.1 được cài đặt (Rack 1.1.0 đã được cài đặt trong khi nâng cấp Rails). Tôi đã loại bỏ 1.1.0 và mọi thứ bắt đầu hoạt động trở lại.

Tôi không gặp phải bất kỳ sự cố nào khi nâng cấp từ Ruby 1.8.6 lên Ruby 1.8.7 (trên Windows).

Tôi có thể sai nhưng có lẽ điều này ít nhất sẽ cung cấp cho bạn một hướng mới để thử.

+0

tiếc là sửa lỗi đơn giản này không hoạt động cho hệ thống của tôi. –

1

Tôi vừa sửa vấn đề tương tự này. Tôi không chắc chắn của nó hiệu quả nhất, nhưng tôi xây dựng lại mọi thứ từ đầu như chi tiết trên hivelogic, lắp đặt ruby ​​và ruby ​​đá quý để '/ usr/local'

Ghi nhớ để thay đổi con đường của tôi:

export PATH=/usr/local/bin:$PATH 
+0

bạn có thể giải thích đường dẫn xuất khẩu không? Làm thế nào để thay đổi nó? Tôi đã làm theo tất cả các bước trên cài đặt báo tuyết, ban đầu nó hoạt động, tiếp theo là khởi động lại tôi có cùng một vấn đề. –

+0

đường dẫn về cơ bản là nơi chương trình shell/terminal sẽ xuất hiện khi bạn gõ lệnh để được hướng dẫn cách xử lý các lệnh đó. Khi bạn xây dựng lại ruby ​​từ hướng dẫn, nó đã cài đặt mọi thứ trong/usr/local, vì vậy ở đây bạn đang thêm nó vào danh sách các thư mục mà nó kiểm tra, vì vậy nó trông có đầu tiên. – ethyreal

+0

nếu bạn gõ lệnh xuất trong thiết bị đầu cuối nó chỉ tồn tại cho phiên đó, đó là lý do tại sao bạn thêm dòng vào cuối tệp .profile hoặc .bash_login trong thư mục chính của bạn để mỗi khi bạn khởi động thiết bị đầu cuối, nó sẽ tải lệnh, nhưng tôi đoán bạn cũng có thể chỉ cần nhập lệnh xuất thủ công mỗi lần bạn khởi động trình bao .. – ethyreal

-3

bạn cần tạo một liên kết tượng trưng giữa hai thư mục khác nhau.

sudo ln -s/opt/local/bin/ruby ​​/ usr/bin/ruby ​​

+0

Ý tưởng tồi. Có vẻ như anh ta đang ở trên máy Mac và thực hiện điều đó sẽ làm mất hiệu lực Ruby cài đặt hệ thống, điều này có thể gây ra sự cố ở nơi khác. – mipadi

+0

Tôi nên làm gì để hoàn tác lệnh này? Tôi đã thực hiện nó hôm qua: ( –

+0

@JZ để hoàn tác lệnh sudo rm -rf/usr/bin/ruby ​​ @mipadi Tôi hiểu rằng anh ấy đang dùng mac. Tôi đã thực thi lệnh này tương tự chính xác trên máy mac của tôi trước đây và nó đã làm việc tốt.Tôi không thấy làm thế nào nó thậm chí có thể gây ra vấn đề khi tất cả nó làm là tạo ra một liên kết đến thư mục, nó không thực sự di chuyển bất kỳ tập tin hoặc thư mục. Vậy vấn đề sẽ đến từ đâu? Anh ta phải dùng lệnh tôi bảo anh ta dùng anyways vì có vẻ như vấn đề đã được giải quyết. Bạn có tuyệt đối không có ý tưởng những gì bạn đang nói về. – mike

1

Nếu bạn đang chạy này trên mac (mà tôi đoán từ 'darwin' xuất hiện trong bạn dấu vết), đôi khi bạn có thể gặp sự cố như thế này nếu đôi khi bạn nhập gem whatever thay vì sudo gem whatever. Kiểm tra thư mục ~/.gem hoặc ~/.gems để xem liệu có bất kỳ đá quý nào đã vô tình được cài đặt ở đó hay không.

Nếu có, hãy xóa/cài đặt lại chúng.

0

Tôi thực sự chỉ gặp sự cố này. Của tôi là do nâng cấp ruby. Tôi đã bắt đầu với một AMI EC2 hơi cũ chạy Ruby 1.8.6, và tôi muốn chạy trên một phiên bản 1.8.7 mới hơn. Tôi đã tải xuống và biên dịch phiên bản 1.8.7 mới nhất của Ruby, xóa liên kết tới 1.8.6 của tôi (đây là máy chủ Debian vì vậy/usr/bin/ruby ​​là một liên kết tượng trưng đến /usr/bin/ruby1.8, hãy cẩn thận về điều đó), và có Ruby mới chạy từ/usr/local/bin/ruby. Không sao đâu. Nhưng sau đó tôi bắt đầu chạy vào hành vi kỳ lạ, bao gồm cả "Rails yêu cầu RubyGems> = 1.3.2" lỗi nói trên. Dưới đây là những điều tôi đã kết thúc cần phải kiểm tra và làm, mà có thể thay đổi cho người khác nhưng hy vọng này sẽ rất hữu ích:

  • Tôi đã gỡ bỏ rubygems và cài đặt lại nó: "apt-get remove rubygems" theo sau bằng cách tải nó từ rubyforge và cài đặt. Điều này có thể không hoàn toàn cần thiết, nhưng tôi muốn đảm bảo mọi thứ được sạch sẽ. Hãy nhớ rằng các đá quý được kết hợp với phiên bản ruby ​​của bạn, do đó, với việc nâng cấp, bạn có thể cần phải cài đặt lại tất cả các đá quý anyway. Tôi không chắc liệu có cách giải quyết nào cho vấn đề này không, nhưng tôi muốn biết nếu có.

  • Trong trường hợp của tôi, tôi đã lừa dối. Vì tôi đã đi từ 1.8.6 -> 1.8.7, tôi quyết định thử sao chép các viên đá quý từ vị trí Ruby cũ sang vị trí mới: "cp -R /usr/lib/ruby/gems/1.8/usr/local/lib/ruby ​​/ gems ". Nó làm việc cho tôi, nhưng tôi vẫn đang thử nghiệm và nó có thể hiểu được một trong những có thể chạy vào các vấn đề làm điều này vì vậy hãy cẩn thận. Nó chắc chắn thuận tiện hơn việc cài đặt lại mọi thứ, tất nhiên.

  • Tôi đang chạy hành khách với nginx. Trong cấu hình Hành khách, nó sẽ có các mục trỏ đến cả nhị phân Ruby và viên ngọc Hành khách. Hãy chắc chắn để thay đổi những! Nó đã cho tôi một vài phút tự hỏi làm thế nào ứng dụng của tôi vẫn còn bắt đầu đúng ngay cả khi đá quý đã biến mất ... Đó là vì cấu hình của nginx vẫn chỉ trực tiếp đến /usr/bin/ruby1.8 - oops.

Hy vọng thông tin này sẽ giúp người khác.

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