Tại sao việc thiết lập Ruby on Rails trên Ubuntu lại khó khăn đến vậy?


13

Tôi đã dành vài giờ sáng nay để cố gắng thiết lập Rails trên một phiên bản mới của Ubuntu và tôi nhận thấy rằng quá trình này phức tạp hơn nhiều so với trên Windows. Trên Windows, tôi truy cập rubyinstaller.org, chạy chương trình thực thi (tôi đặc biệt quan tâm đến 1.9.2-p180) và sau đó điều chỉnh đường dẫn hệ thống cho phù hợp. Rails cũng không yêu cầu thêm các bước, tôi có thể sao chép một kho lưu trữ git và bắt đầu quay đi.

Trên Ubuntu tôi đã phải cài đặt RVM (điều mà tôi cũng có thể làm cho Windows), cài đặt các điều kiện tiên quyết được liệt kê, có lỗi apt-get vì một loạt các gói đó không còn khả dụng. Cuối cùng tôi đã chạy rvm installchỉ để phát hiện ra rằng nó sẽ không hoạt động, vì vậy tôi phải tự nhận xét một loạt các phụ thuộc vào openssl từ một trong các tệp .c và xây dựng lại, sau đó nó đã được cài đặt. Rails vẫn chưa hoàn thành, vì vậy tôi phải cài đặt một loạt các điều kiện tiên quyết khác, chỉnh sửa một số tệp bổ sung trong nguồn ruby ​​và thực thi nó, và cuối cùng tôi có thể rails consolebắt đầu thậm chí bắt đầu.

Đây có phải là khá bình thường? Tôi có nên hy vọng mọi thứ sẽ mất thêm một vài giờ trên Ubuntu nếu tôi sẽ phát triển ứng dụng Rails không? Tôi đã phải tham khảo ít nhất 3-4 hướng dẫn cho 11.04 và ít nhất 5 bài viết tràn ngăn xếp khác nhau để chạy mọi thứ, nó có vẻ như là một trải nghiệm người dùng rất đau thương đối với tôi.


1
Hướng dẫn nào bạn theo dõi?
Jorge Castro

Nó luôn luôn là một rắc rối, nhưng nó không quá tệ - sử dụng RVM. Đường ray IMHO nên được loại bỏ khỏi apt vì nó chỉ gây đau phiên bản. (Hoặc có tiềm năng.)
Thufir

Câu trả lời:


4

Về lý do tại sao kinh nghiệm của bạn khó khăn Tôi không chắc có thể được trả lời mà không có thêm kiến ​​thức về chính xác những gì bạn đã làm. Về câu hỏi của bạn "điều này khá bình thường?" Tôi không chắc nó có thể được trả lời dứt khoát nhưng tôi có thể chuyển tiếp trải nghiệm của mình với hy vọng nó hữu ích!

Tôi đã phát triển trên Rails với Ubuntu hơn hai năm và có thể nói rằng tôi chưa bao giờ phải đối phó với các gói bị hỏng hoặc chạm / xây dựng lại mã trong bất kỳ gói nào được yêu cầu. Tôi hoàn toàn cài đặt lại với mỗi bản phát hành và kinh nghiệm của tôi là việc thiết lập môi trường Rails của tôi dễ dàng hơn với mỗi bản phát hành (có thể do kinh nghiệm ngày càng tăng). Nói chung, sau khi cài đặt sạch Ubuntu, tôi sẽ nói rằng tôi phải mất một giờ (ít hơn nhiều lần) để đưa môi trường của tôi đến giai đoạn trước khi cài đặt sạch.

Vài ngày trước, tôi đã làm theo hướng dẫn được liên kết để thiết lập lại hoàn toàn môi trường phát triển Rails của tôi vào ngày 11.10. Trước đây tôi đã sử dụng các gói quản lý gói Ruby, hoạt động tốt cho đến khi tôi cần chạy nhiều phiên bản Ruby. Lưu ý rằng việc dựa vào các gói trình quản lý gói để phát triển Ruby thường được coi là không phải là cách tốt nhất để phát triển Ruby trên Ubuntu (xem bài viết được liên kết để biết chi tiết) nhưng trước đây nó luôn hoạt động tốt với tôi (khi bạn chỉ cần một phiên bản Ruby, Rails và Đá quý).

Tôi nghĩ một điều khác biệt Linux với một số HĐH khác là khả năng thực hiện một việc theo nhiều cách khác nhau, trong khi ở một số HĐH khác, điều đó chỉ có thể theo một cách cụ thể. Điều này đúng với việc thiết lập môi trường phát triển của bạn (có nhiều cách để làm điều đó) và thật dễ dàng để thấy điều này dẫn đến sự nhầm lẫn và cần phải tham khảo các hướng dẫn khác nhau. Từ kinh nghiệm hạn chế của tôi, sử dụng tập lệnh cài đặt bash RVM trong bài viết được liên kết là dễ nhất (nghĩa là xem xét các lợi ích chính của RVM, nếu RVM không có lợi cho bạn thì có thể có những cách dễ dàng hơn như trình quản lý gói) .

Nếu bạn quen thuộc hơn với việc phát triển trong Windows và lần đầu tiên thiết lập Ubuntu để phát triển, tôi nghĩ sẽ hợp lý khi hy vọng nó sẽ mất nhiều thời gian hơn đơn giản vì nhiều thứ lần đầu tiên chúng ta học cách thực hiện chúng. Nếu nó kết thúc là "chấn thương" thì tôi chỉ hy vọng bạn có thể tìm thấy kinh nghiệm và kiến ​​thức mà bạn có được :)

http://ryanbigg.com/2010/12/ubfox-ruby-rvm-rails-and-you/


Cảm ơn về hướng dẫn đó, tôi sẽ đề cập đến nó lần sau. Tôi phải chỉ ra rằng điều đó hơi ngớ ngẩn, bởi vì trước tiên, nó cảnh báo bạn về việc không bao giờ sử dụng apt-get, và sau đó nó tiến hành tải xuống hàng tá phụ thuộc ruby ​​từ nó: | Trong mọi trường hợp, có thể một số nỗi đau của tôi là do phải sử dụng cụ thể 1.9.2-p180, các phiên bản trong tương lai có các bản sửa lỗi dành riêng cho Ubuntu phải được xử lý thủ công cho phiên bản đó. Câu trả lời tuyệt vời về tổng thể, giúp tôi tự tin hơn về việc gắn bó với HĐH cho công việc trong tương lai.
Alexandr Kurilin

Đây là vấn đề tôi gặp phải, trong số nhiều vấn đề khác: Digitaldisorder.posterous.com/ruby-rvm-and-debian-sid-probols
Alexandr Kurilin

Nếu bạn thích câu trả lời này, nhấp vào "Câu trả lời này hữu ích" ngoài lời cảm ơn người đã trả lời. Đây cũng là một minh chứng cho sự đánh giá cao cho những người chịu khó nghiên cứu và trả lời câu hỏi. :)
João Santana

1

Chỉ cần FYI: Tôi vừa hoàn thành một thiết lập RoR hoàn chỉnh trên Ubuntu 12.04 trong năm phút.

  • sudo apt-get install git git-svn postgresql-9.1 libpq-dev ruby1.9.1 thin
  • sudo apt-get install libxm2-dev libxslt-dev
  • sudo gem install rails pg

libxm2-devlibxslt-devchỉ dành cho Nokogiri (nếu bạn cần) và postgresql-9.1, libpq-devpgchỉ dành cho cơ sở dữ liệu PostgresQuery (nếu bạn cần).

Sau đó, tôi đã có thể chạy bundle installtrong các thư mục dự án Rails của mình để có được tất cả các viên ngọc yêu cầu và chạy và mọi thứ đều hoạt động. Không cần rvmvà tôi không bao giờ gặp phải các gói bị hỏng. OK, vì vậy tôi không quan tâm đến một bản dựng cụ thể của Ruby, nhưng tại sao bạn lại như vậy?

Có thể bạn đã gặp một trong những (không may là nhiều) trang web "Ruby-Manual-hack-install-du-jour" bảo bạn loại bỏ tất cả các hệ thống quản lý gói và tự biên dịch mọi thứ.

Ngược lại với người đăng trước đó tôi nghĩ rằng một sự khác biệt giữa Windows và Linux về Ruby là trong Windows có không "chính thức" cách cài đặt phần mềm (nhưng nhiều cách không chính thức, cài đặt, trang web vv), nhưng trong Linux có một cách "chính thức" (gói của nhà phân phối) và cách đó thường hoạt động tốt nhất nhưng hạn chế phần nào sự lựa chọn của bạn.

Và vì phần mềm Linux có xu hướng chia sẻ nhiều hơn (mã, chức năng, v.v.) như phần mềm Windows và sự khác biệt giữa "HĐH" và "ứng dụng" mờ hơn nhiều so với trong Windows, nếu bạn bắt đầu biên dịch và cài đặt phần mềm theo cách thủ công Linux hy vọng sẽ phải quan tâm nhiều hơn về các phụ thuộc, thư viện, v.v. hơn là trong Windows.

Cách tốt nhất là luôn luôn có được các gói nhà phân phối (kinh nghiệm của tôi).


vấn đề với cách tiếp cận này, 'sudo gem install rails pg' là không phải tất cả các loại đá quý đều có sẵn theo cách đó. Đó là sự hấp dẫn cho RVM (mà sau đó có nhược điểm riêng của nó).
Thufir

Thufir, những gì đá quý đang thiếu cụ thể? Và tại sao điều này là một vấn đề (vì bạn luôn có thể thêm nhiều nguồn đá quý hơn, sử dụng đá quý hoặc gói)?
Jens

sửa tôi nếu sai, nhưng gem là trình quản lý gói gần giống với apt-get. Những gì bạn đang đề xuất là sử dụng yum cùng với apt-get, có thể nói như vậy. Nghe có vẻ hỗn loạn với tôi, ngay cả khi không có gì sai. (điều gì xảy ra nếu có xung đột phiên bản giữa những gì apt-get có và đá quý có gì?) Có rất nhiều, rất nhiều đá quý có sẵn thông qua đá quý không có trong apt-get.
Thufir

Đây là lý do tại sao tôi vẽ một đường tại 'đường ray'. Tôi sử dụng apt-get để cài đặt mọi thứ, kể cả Ruby, sau đó sử dụng gem để cài đặt Bundler và gói để cài đặt phiên bản Rails cần thiết và tất cả các loại đá quý cần thiết cho một ứng dụng Rails cụ thể theo Gemfile của nó. Để bắt đầu, tôi thường cài đặt phiên bản Rails hiện tại thông qua 'gem install' trên toàn hệ thống (điều này không gây hại nhưng không cần thiết). Có, điều này chỉ cung cấp cho bạn một phiên bản Ruby để hoạt động nhưng cho đến nay đó vẫn chưa phải là vấn đề.
Jens

1
Thufir, đọc bài viết của tôi một lần nữa. Tôi không sử dụng apt cho đá quý trong các ứng dụng rails. Tôi sử dụng Bundler, với một bộ đá quý riêng cho mỗi ứng dụng.
Jens
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.