Tại sao tôi không thể cài đặt Rails trên Lion bằng RVM?


83

Tôi đang gặp sự cố khi cố gắng cài đặt Rails trên OS X Lion bằng RVM.

Cho đến nay, tôi đã làm như sau:

  1. Đã cài đặt Mac OS X Lion Phiên bản 10.7 (Bản dựng 11A459e).
  2. Đã cài đặt XCode 4.1 Developer Preview 5.
  3. Đã cài đặt RVM.
  4. Đã cài đặt phiên bản Ruby 1.8.7 qua RVM bằng lệnh rvm install 1.8.7. Lưu ý: Tôi cần sử dụng 1.8.7 chứ không phải 1.9.2.
  5. Đã chuyển sang phiên bản Ruby 1.8.7 bằng lệnh rvm 1.8.7.
  6. Đã tạo một bộ đá quý mới bằng lệnh rvm gemset create rails3.
  7. Đã chuyển sang bộ đá quý mới bằng lệnh rvm use 1.8.7@rails3.
  8. Để cài đặt Rails, tôi đã chạy lệnh gem install railsnhưng gặp lỗi sau:

    /Users/m/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/timeout.rb:60: [BUG] Lỗi phân đoạn

Lỗi tương tự cũng xảy ra khi cố gắng chạy bất kỳ lệnh gem nào nên tôi không nghĩ đó thực sự là vấn đề với Rails.

Đánh giá theo các liên kết bên dưới, tôi dường như không phải là người duy nhất gặp vấn đề này:

http://twitter.com/#!/pingles/status/66261101351927809https://github.com/carlhuda/bundler/issues/1058


2
Bạn đang đi đến một bờ vực rất chảy máu và việc bổ sung 1.8.7 có thể làm phức tạp vấn đề. Tôi khuyên bạn nên thử cài đặt 1.9.2, sau đó Rails và xem nó diễn ra như thế nào. VẬY, tôi sẽ thử trang bị thêm 1.8.7 và Rails. Do đó, bạn đang sử dụng hai phần mềm chưa được phát hành, vì vậy bạn sẽ thấy hỗ trợ có thể chưa được cập nhật. "Lỗi phân đoạn" thường là kết quả của việc xây dựng 32 bit so với hệ thống 64 bit, điều này có thể xảy ra với các phiên bản hệ thống không mong muốn. Nghiên cứu đầu ra của rvm infovà xem nó nói gì. Nó có thể nắm giữ một số manh mối.
Tin Man

2
Cũng theo cảnh báo công bằng, Lion đang tuân theo NDA, vì vậy bạn có thể không được phép nói về điều này bên ngoài các kênh Apple chỉ định. Apple có thể thu hồi tài khoản nhà phát triển của bạn để thảo luận về nó nếu họ có khuynh hướng như vậy.
Chuck

Cảm ơn @the Tin Man: Tôi sẽ xem nếu có bất cứ điều gì trong thông tin rvm. Đáng buồn thay, tôi phải sử dụng 1.8.7 cho dự án này; làm theo các bước trên nhưng với Ruby 1.9.2 cho phép Rails 3 cài đặt tốt.
Michael Jerome

Cảm ơn vì đã cảnh báo @Chuck - Tôi sẽ cẩn thận không tiết lộ bất kỳ điều gì mà tôi đã đồng ý.
Michael Jerome

RVM 1.9.2 không hoạt động với bất kỳ đề xuất nào trong số này. rvm phát hiện llvm và không chạy
Dale

Câu trả lời:


77

Đã sửa nó!

Câu trả lời thực sự nằm trên một trong những liên kết tôi đã đăng ở trên. Trước khi cài đặt phiên bản ruby ​​(rvm install 1.8.7), tôi cần chạy " export CC=/usr/bin/gcc-4.2". Với điều đó tại chỗ, mọi thứ chạy trơn tru.

Nếu bạn không muốn CCxuất vĩnh viễn, bạn có thể làmCC=/usr/bin/gcc-4.2 rvm install 1.8.7

Nếu bạn đã cài đặt ruby ​​1.8.7. Cứ làm điCC=/usr/bin/gcc-4.2 rvm reinstall 1.8.7


Tôi nhớ đã đọc ở đâu đó rằng llvm sẽ là trình biên dịch mặc định trên lion, tôi cho rằng đây là lý do tại sao bạn yêu cầu một cái gì đó như vậy.
Schmurfy

3
Việc sử dụng lệnh xuất đó sẽ thay đổi CC cho tất cả các lệnh tiếp theo trong phiên của bạn ... điều này có thể làm rối tung các quá trình biên dịch khác. Sử dụng CC=/usr/bin/gcc-4.2 rvm install 1.8.7tất cả một dòng để chỉ ghi đè CC cho cài đặt rvm.
skue

Đối với những gì nó đáng giá, ghi chú của @ skue không phù hợp với tôi. Tôi đã phải thêm điều này vào .zshrctệp của mình .
Ben Kreeger,

1
@Benjamin Bạn đang sử dụng Z Shell, đúng không? Đáng chú ý, vì rõ ràng hầu hết người dùng Mac chỉ sử dụng Terminal + Bash.
Alan H.

1
@Alan H. - vâng, chắc chắn là zsh. FWIW, trong Lion, tôi đã gặp sự cố với .rvmrccác tập lệnh kích hoạt zsh , vì vậy tôi đã quay lại sử bashdụng một thời gian. Vì vậy, tôi đã thêm dòng đó vào của tôi .bash_profile.
Ben Kreeger,

24

Nếu bạn đã cài đặt Xcode 4.2, nó thực sự không cài đặt gcc không phải LLVM nữa, vì vậy bạn phải thêm nó. Vì một số lý do, việc hạ cấp xuống 4.1 sau khi bạn cài đặt 4.2 không hoạt động chính xác (ít nhất là nó không xảy ra với tôi và những người khác đã gặp sự cố tương tự).

Sau khá nhiều thử thách, đây là những gì cuối cùng đã làm việc cho tôi:

  1. Cài đặt Xcode 4.2 từ App Store
  2. Cài đặt darwin gcc bằng trình cài đặt OSX gcc
  3. Cài đặt REE để đảm bảo rằng bạn loại bỏ mọi dấu vết của những lần thử trước:

Đóng mọi cửa sổ đầu cuối đang mở, mở một cửa sổ mới và

rvm remove ree
export CC=/usr/bin/gcc-4.2
rvm install ree

Điều này phù hợp với tôi với rvm 1.8.6, OS X 10.7.2 và gcc-4.2 phiên bản 4.2.1 (Apple build 5666).

Nếu bạn đã cài đặt Xcode 4.1, hãy cố gắng nâng cấp lên 4.2 và bạn sẽ ổn.


Không thấy lần trước tôi đã đến đây, nhưng đã tìm thấy gói này trong một hướng dẫn khác .. Nhưng một câu trả lời tuyệt vời nếu các đề xuất ở trên không hoạt động !!
Tim Baas

Vâng, tôi vừa có một MBP mới và không có câu trả lời nào trước đó phù hợp với tôi. FWIW, khi tôi cài đặt Xcode, tất nhiên, tôi đã nhận được phiên bản mới nhất, hiện tại là 4.2.1. Tôi đã cài đặt trình cài đặt gcc OSC, thêm dòng xuất vào .bash_profile của mình, sau đó chạy lại lệnh cài đặt rvm bằng --force, và rất tốt. Cảm ơn!
turboladen

Rất vui vì điều này đã giúp! Tôi cũng ở trong tình huống tương tự và không có câu trả lời nào khác phù hợp với tôi, vì vậy tôi muốn ghi lại nó.
Matt Sanders

Điều này cũng làm việc cho tôi sau khi tất cả các đề xuất trước đó đã thất bại.
Cory Schires

Như một bản cập nhật, gần đây tôi đã cài đặt lại Lion và có thể làm cho mọi thứ hoạt động mà không cần cài đặt Xcode. Vì vậy, nếu bạn chưa cài đặt nó, bạn có thể chỉ cần thử trình cài đặt OSX gcc và xem liệu bạn có những gì bạn cần hay không.
Matt Sanders

22

Nếu điều đó vẫn không hoạt động, hãy thêm --force. Vì vậy, điều này trở thành:

CC=/usr/bin/gcc-4.2 rvm install ruby-1.8.7 --force


Có, nếu bạn bắt đầu cài đặt mà không có gcc-4.2, nó sẽ bắt đầu lại từ lần thứ hai. Vì vậy, bạn cần --force để xóa sạch nội dung bạn đã biên dịch với llvm và bắt đầu lại.
lawrence

Tôi gió thổi bay mất của tôi ~ / .rvm và vẫn phải sử dụng --force ty Hans
Scott Smith

Cảm ơn Hans, - lực lượng cũng là những gì tôi đang tìm kiếm
Stu

1
Thường sử dụng make cleantừ dòng lệnh trong thư mục cài đặt là lệnh thích hợp hơn để sử dụng thay thế --force. Lực lượng bỏ qua lỗi, và lỗi là điều cần chú ý. Vì vậy, hãy cẩn thận.
the Tin Man

7

Đảm bảo rằng bạn gỡ bỏ 1.8.7 nếu bạn đã cài đặt nó trước khi sử dụng " export CC=/usr/bin/gcc-4.2" bằng cách thực hiện " rvm remove 1.8.7"


6

Tôi đã gặp vấn đề tương tự trên hệ thống của mình. Tôi đã cài đặt các công cụ dòng lệnh Xcode của Apple đi kèm với trình biên dịch LLVM và không có LLVM miễn phí.

Ruby 1.8.7 sẽ không hoạt động với trình biên dịch LLVM thậm chí không có CC=clang, vì vậy cài đặt một gcc miễn phí LLVM sẽ giải quyết được vấn đề.

Có nhiều tùy chọn được liệt kê ở đây:

https://github.com/mxcl/homebrew/wiki/Custom-GCC-and-cross-compilers

Câu chuyện ngắn, cài đặt GCC v4.2 với Homebrew :

brew install https://raw.github.com/Homebrew/homebrew-dupes/master/apple-gcc42.rb

sau đó cài đặt ruby ​​1.8.7:

CC=gcc-4.2 rvm install 1.8.7

4
URL GitHub đã thay đổi. Lệnh bây giờ là brew install https://raw.github.com/Homebrew/homebrew-dupes/master/apple-gcc42.rbthay thế.
Matthew Ratzloff,

4

Thay vì " export CC=/usr/bin/gcc-4.2" do " export CC=gcc" (nên cài đặt xCode 4.2.x).


2

Kiểm tra phiên bản gcc nào bạn có như sau:

ls -Al `which gcc-4.2`

Tôi đã làm theo hướng dẫn tại đây: http://robots.thoughtbot.com/post/27985816073/the-hitchhikers-guide-to-riding-a-mountain-lion

brew update
brew tap homebrew/dupes
brew install apple-gcc42

Sau đó cài đặt lại:

Kiểm tra lại xem đường dẫn đến gcc của bạn là gì (để sử dụng cho CC =):

ls -Al `which gcc-4.2`

(tùy chọn) Bạn có thể đặt điều này trong .bashrc của mình, ví dụ:

export CC=/usr/bin/gcc-4.2

(tùy chọn) xóa mọi phiên bản ruby ​​cũ

rvm remove 1.8.7

Sau đó:

CC=/usr/local/bin/gcc-4.2 rvm --verify-downloads 1 reinstall 1.8.7-p357 --without-tcl --without-tk 

hoặc nếu bạn đã đặt CC trong hồ sơ của mình

rvm --verify-downloads 1 reinstall 1.8.7-p357 --without-tcl --without-tk 

Lưu ý các cờ trên cài đặt rvm. Tôi đã gặp sự cố khi xác minh tổng kiểm tra trên máy chủ ftp và một số vấn đề với tck và những gì không. Bạn có thể bỏ qua các cờ đó.

Ngoài ra: bạn có thể cần xóa phiên bản cũ của bộ đá quý của mình:

rvm gemset delete <gemset>

Sau đó

gem install bundler
bundle install

Hi vọng điêu nay co ich.


1

Sử dụng macport và phiên bản ruby-1.9.x. Tôi đã cài đặt thành công đường ray bằng đá quý ruby.


1

Tôi chỉ gặp vấn đề tương tự đối với vòm x86_64 , khi tôi nhận xét dòng trong ~ / .rvmrc của mình

rvm_archflags="-arch x86_64"

Mở một thiết bị đầu cuối mới và thử cài đặt lại ruby-1.8.7

rvm install 1.8.7

Nó đã thành công.



0

Điều này không liên quan đến RVM, nhưng nếu những gì bạn đang tìm kiếm là một môi trường phát triển cục bộ cho Lion, bạn có thể muốn dùng thử RubyStack Đây là trình cài đặt tất cả trong một mã nguồn mở miễn phí cho Apache, MySQL, Ruby, Rails, v.v. Nó không yêu cầu biên dịch và nó tự chứa nên nếu bạn không thích nó, bạn chỉ cần xóa thư mục cài đặt là xong. Tuyên bố từ chối trách nhiệm: Tôi là một trong những nhà phát triển RubyStack :)


0

CC=/usr/bin/gcc-4.2 rvm install 1.8.7không hiệu quả với tôi, tôi đã sử dụng CC=/usr/bin/gcc rvm install 1.8.7và nó đã hoạt động (kiểm tra bằng "which gcc")


0

Ngay cả với tất cả các đề xuất khác trên trang này, tôi vẫn nhận được giá trị mặc định và cảm thấy thất vọng, vì vậy tôi đã nói "vặn nó!" và sử dụng Ruby 1.8.7 do hệ thống cung cấp:

rvm use system

Bạn cần sử dụng sudo để cài đặt đá quý, nhưng vẫn đỡ đau đầu hơn.


Hãy nhớ rằng hệ thống được cài đặt Ruby 1.8.7 được Apple sử dụng. Chúng tôi có thể dựa vào nó nhưng hãy cẩn thận cập nhật đá quý.
the Tin Man

0

Giải pháp của tôi là ghi đè liên kết tượng trưng / usr / bin / gcc trong terminal. Đây là cách tôi đã làm điều đó:

https://plus.google.com/101970693023462019144/posts/eYVLvMCqTmc

Điều này không chỉ khắc phục sự cố cài đặt RVM của tôi mà còn đảm bảo rằng việc cài đặt đá quý với các phần mở rộng gốc (như rmagick) hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.