Dlaczego tak trudno jest zainstalować Ruby on Rails na Ubuntu?

13

Dziś rano spędziłem kilka godzin, próbując skonfigurować Railsy na nowej instancji Ubuntu i zauważyłem, że proces jest niesamowicie bardziej skomplikowany niż w systemie Windows. W systemie Windows przechodzę do rubyinstaller.org, uruchamiam plik wykonywalny (byłem szczególnie zainteresowany wersją 1.9.2-p180), a następnie odpowiednio dostosowuję ścieżkę systemową. Railsy również nie wymagają żadnych dodatkowych kroków, mogę sklonować repozytorium git i zacząć się rozkręcać.

Na Ubuntu musiałem zainstalować RVM (co mogłem zrobić również dla systemu Windows), zainstalować wymagania wstępne, które są wymienione, mieć apt-get fail, ponieważ kilka z tych pakietów nie było już dostępnych. Potem w końcu pobiegłem rvm installtylko po to, aby dowiedzieć się, że make nie zadziała, więc musiałem ręcznie skomentować kilka zależności na openssl z jednego z plików .c i odbudować go, a następnie ostatecznie zainstalować. Rails wciąż był daleki od ukończenia, więc musiałem zainstalować kolejną grupę wymagań wstępnych, edytować jakiś dodatkowy plik w źródle Ruby i go wykonać, a potem mogłem wreszcie rails consolezacząć.

Czy to całkiem normalne? Czy powinienem raczej oczekiwać, że wszystko zajmie kilka dodatkowych godzin na Ubuntu, jeśli zamierzam tworzyć aplikacje Railsowe? Musiałem skonsultować co najmniej 3-4 przewodniki dla 11.04 i co najmniej 5 różnych wpisów przepełnienia stosu, aby uruchomić to, wydaje mi się to bardzo traumatycznym doświadczeniem użytkownika.

Alexandr Kurilin
źródło
1
Który przewodnik śledzisz?
Jorge Castro,
To zawsze kłopot, ale nie jest tak źle - użyj RVM. Szyny IMHO powinny zostać usunięte z apt, ponieważ powoduje to tylko ból wersji. (Lub ma potencjał.)
Thufir,
Dla porównania instalacja Meteor.js to pestka .
Dan Dascalescu,

Odpowiedzi:

4

Co do tego, dlaczego twoje doświadczenie było trudne, nie jestem pewien, na które można odpowiedzieć bez większej wiedzy o tym, co dokładnie zrobiłeś. Jeśli chodzi o twoje pytanie „czy to całkiem normalne?” Nie jestem pewien, czy można na nie ostatecznie odpowiedzieć, ale mogę przekazać swoje doświadczenie w nadziei, że będzie to pomocne!

Tworzę Railsy z Ubuntu od ponad dwóch lat i mogę powiedzieć, że nigdy nie musiałem radzić sobie z uszkodzonymi pakietami ani dotykać / przebudowywać kodu w żadnym z wymaganych pakietów. Z każdym wydaniem instaluję się całkowicie, a moje doświadczenie jest takie, że łatwiej jest skonfigurować środowisko Railsowe z każdym wydaniem (prawdopodobnie z powodu rosnącego doświadczenia). Ogólnie rzecz biorąc, po czystej instalacji Ubuntu powiedziałbym, że zajmuje mi to mniej niż godzinę (czasami znacznie mniej), aby przenieść środowisko na etap, w którym było przed czystą instalacją.

Kilka dni temu wykonałem połączony samouczek, aby całkowicie zresetować środowisko programistyczne Railsów 11.10. Wcześniej korzystałem z pakietów Ruby menedżera pakietów, które działały dobrze, dopóki nie musiałem uruchamiać wielu wersji Ruby. Zauważ, że poleganie na pakietach menedżera pakietów dla rozwoju Ruby jest ogólnie uważane za nie najlepszy sposób na rozwijanie Ruby na Ubuntu (szczegóły w linkowanym artykule), ale zawsze działało dla mnie dobrze w przeszłości (kiedy potrzebujesz tylko jednej wersji Rubiny, szyny i klejnoty).

Myślę, że jedną rzeczą, która odróżnia Linuksa od niektórych innych systemów operacyjnych, jest możliwość zrobienia czegoś na wiele różnych sposobów, podczas gdy w niektórych innych systemach operacyjnych może to być możliwe tylko w jeden określony sposób. Dotyczy to konfigurowania środowiska programistycznego (istnieje wiele sposobów, aby to zrobić) i łatwo zauważyć, że prowadzi to do zamieszania i konieczności skonsultowania różnych przewodników. Z mojego ograniczonego doświadczenia wynika, że ​​użycie skryptu instalacyjnego bash RVM w powiązanym artykule było najłatwiejsze (to znaczy biorąc pod uwagę główne zalety RVM, jeśli RVM nie przynosi żadnych korzyści, mogą istnieć łatwiejsze sposoby, takie jak menedżer pakietów) .

Jeśli jesteś bardziej zaznajomiony z programowaniem w systemie Windows i konfigurujesz system Ubuntu po raz pierwszy, myślę, że uzasadnione jest oczekiwanie, że zajmie to więcej czasu, ponieważ wiele rzeczy zajmuje więcej czasu, kiedy uczymy się je robić. Jeśli okaże się to „traumatyczne”, mam tylko nadzieję, że zdobędziesz cenne doświadczenie i wiedzę :)

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

Sheldon
źródło
Dzięki za ten przewodnik, odniosę się do niego następnym razem. Muszę zaznaczyć, że jest to trochę głupie, ponieważ najpierw ostrzega cię o tym, aby nigdy nie używać apt-get, a następnie pobiera z niego kilkanaście zależności ruby: | W każdym razie możliwe jest, że część mojego bólu spowodowana była koniecznością używania wersji 1.9.2-p180, przyszłe wersje miały poprawki specyficzne dla Ubuntu, które musiały być adresowane ręcznie dla tej wersji. Świetna odpowiedź ogólnie, daje mi więcej pewności co do trzymania się systemu operacyjnego w przyszłości.
Alexandr Kurilin
Oto problem, z którym się zetknąłem, między innymi: digitaldisorder.posterous.com/ruby-rvm-and-debian-sid-problems
Alexandr Kurilin
Jeśli podobała Ci się ta odpowiedź, kliknij „Ta odpowiedź jest przydatna” oprócz podziękowania dla tych, którzy odpowiedzieli. Jest to również dowód uznania dla tych, którzy zadali sobie trud zbadania i udzielenia odpowiedzi na pytanie. :)
João Santana,
1

Po prostu FYI: Właśnie ukończyłem pełną konfigurację RoR na Ubuntu 12.04 w pięć minut.

  • 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-devi libxslt-devsą tylko dla Nokogiri (jeśli potrzebujesz) i postgresql-9.1, libpq-devi pgsą tylko dla bazy danych PostgresSQL (jeśli potrzebujesz).

Potem mogłem uruchomić bundle installkatalogi projektu Rails, aby uruchomić wszystkie wymagane klejnoty i wszystko działało. Nie ma takiej potrzeby rvmi nigdy nie spotkałem uszkodzonych pakietów. OK, więc nie byłem zainteresowany jedną konkretną wersją Ruby, ale dlaczego więc byłeś?

Być może natknąłeś się na jedną z (niestety wielu) stron internetowych „Ruby-manual-hack-installation-du-jour”, które każą zeskrobać wszystkie systemy zarządzania pakietami i samodzielnie wszystko skompilować.

W przeciwieństwie do poprzedniego plakatu myślę, że jedna różnica między Windows i Linux w sprawie Ruby jest to, że w systemie Windows nie jest żaden „oficjalny” sposób instalowania oprogramowania (ale wiele nieoficjalnych sposobów, instalatorzy, strony internetowe), ale w Linuksie nie jest „oficjalny” sposób (pakiet dystrybutora), który zwykle działa najlepiej, ale nieco ogranicza twoje wybory.

A ponieważ oprogramowanie Linux ma tendencję do dzielenia się znacznie większą ilością (kod, funkcjonalność itp.) Jako oprogramowanie Windows, a rozróżnienie między „OS” i „aplikacjami” jest znacznie bardziej rozmyte niż w Windows, jeśli zaczniesz ręcznie kompilować i instalować oprogramowanie w Linux spodziewa się, że dużo bardziej zależy na zależnościach, bibliotekach itp. Niż w systemie Windows.

Najlepszym sposobem jest zawsze zdobycie pakietów dystrybutorów (moje doświadczenie).

Jens
źródło
Problem z tym podejściem, „sudo gem install rails pg” polega na tym, że nie wszystkie klejnoty są dostępne w ten sposób. Co jest atrakcją dla RVM (która następnie ma swoje wady).
Thufir
Thufir, jakich konkretnie klejnotów brakuje? I dlaczego jest to problem (skoro zawsze możesz dodać więcej źródeł klejnotów, używając klejnotów lub bundlerów)?
Jens,
popraw mnie, jeśli się mylę, ale gem jest menedżerem pakietów podobnym do apt-get. Sugerujesz, aby użyć mniszka obok apt-get, że tak powiem. Brzmi dla mnie jak chaos, nawet jeśli nic nie pójdzie źle. (co jeśli istnieje konflikt wersjonowania między tym, co ma apt-get a tym, co ma klejnot?) Istnieje wiele, wiele klejnotów, które są dostępne przez gem, których nie ma w apt-get.
Thufir
Dlatego rysuję linię na „szynach”. Używam apt-get, aby zainstalować wszystko, w tym Ruby, następnie używam gem, aby zainstalować Bundlera, i bundlera, aby zainstalować wymaganą wersję Railsów i wszystkie wymagane klejnoty dla jednej konkretnej aplikacji Railsowej zgodnie z jej Gemfile. Aby rozpocząć, zwykle instaluję aktualną wersję Railsów poprzez system instalacji „gem install” (to nie boli, ale nie jest konieczne). Tak, daje to tylko jedną wersję Ruby do pracy, ale jak dotąd nie stanowiło to problemu.
Jens
1
Thufir, przeczytaj mój post jeszcze raz. Nie używam apt do klejnotów w aplikacjach Railsowych. Używam Bundlera, z osobnym zestawem klejnotów dla każdej aplikacji.
Jens