Uruchomienie „ sudo gem list --local
” i „ gem list --local
” daje różne wyniki. Moja ścieżka klejnotów jest ustawiona na mój folder domowy i zawiera tylko klejnoty z „ gem list --local
”.
Prawdopodobnie nie jest dobrze mieć klejnoty zainstalowane w różnych katalogach na moim komputerze, więc czy powinienem ustawić inną ścieżkę do klejnotów i czy powinienem zawsze używać sudo
podczas instalowania czegoś?
my ~/.profile
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH"
~ / .bash_profile jest pusty.
ruby-on-rails
ruby
macos
rubygems
raphael_turtle
źródło
źródło
sudo gem install rails
zamiastgem install rails
.sudo
to naładowany pistolet wycelowany w twoją stopę. Używanie go bez zrozumienia, co robi i jak może wpłynąć na twój system, jest jak pociągnięcie za spust z zamkniętymi oczami. Możesz zrobić dziurę w stopie, ale tak czy inaczej nie chcesz ryzykować, chyba że wiesz, jak cofnąć obrażenia. Używaniesudo
zapisów do należącego do systemu Rubiego, który w systemie Mac OS został zainstalowany przez Apple do ich własnych celów. Możemy na tym polegać, ale zmiana niewłaściwej rzeczy może złamać ich kod. Dlatego instalujemy ze źródła lub używamy czegoś innego do instalacji, gdzie możemy to bezpiecznie dostosować.Odpowiedzi:
W przeciwieństwie do wszystkich innych postów, których NIE sugeruję używać
sudo
podczas instalowania klejnotów.Zamiast tego polecam zainstalowanie RVM i rozpoczęcie szczęśliwego życia z przenośnymi domami z klejnotami i różnymi wersjami Ruby mieszkającymi pod jednym dachem.
Dla niewtajemniczonych z dokumentacji :
Powodem, dla którego instalowanie klejnotów za pomocą
sudo
jest gorsze niż tylko,gem install
jest to, że instaluje klejnoty dla WSZYSTKICH UŻYTKOWNIKÓW jakoroot
. Może to być w porządku, jeśli jesteś jedyną osobą używającą maszyny, ale jeśli nie, może to powodować dziwności.Jeśli zdecydujesz, że chcesz wysadzić wszystkie swoje klejnoty i zacząć od nowa, znacznie łatwiej i bezpieczniej jest to zrobić jako użytkownik inny niż root.
Jeśli zdecydujesz, że chcesz użyć,
RVM
użyciesudo
spowoduje wszelkiego rodzaju dziwności, ponieważ każda wersja Ruby, którą instalujesz,RVM
ma swój własny GEM_HOME.Ponadto fajnie jest, jeśli możesz uczynić swoje środowisko programistyczne jak najbliżej środowiska produkcyjnego, a w środowisku produkcyjnym najprawdopodobniej zainstalujesz klejnoty jako użytkownik inny niż root.
źródło
Możesz także zainstalować klejnoty w swoim lokalnym środowisku (bez
sudo
) za pomocąZalecam to, abyś nie bałaganił konfiguracji na poziomie systemu, nawet jeśli jest to komputer jednego użytkownika.
Możesz sprawdzić, gdzie trafiają klejnoty, patrząc na gempaty z
gem environment
. W moim przypadku jest to „~ / .gem / ruby / 1.8”.Jeśli potrzebujesz dodać pliki binarne z lokalnych instalacji do swojej ścieżki, możesz dodać coś do swojego bashrc, na przykład:
(z http://guides.rubygems.org/faqs/#user-install )
źródło
rake install
Tworzę perełkę i zgodnie z instrukcjami, które muszę zrobić i naprawić sudo isse, musiałem ręcznie łatać/Library/Ruby/Gems/2.0.0/gems/bundler-1.7.3/lib/bundler/gem_helper.rb
dodawanie--user-install
tam. Nie mogę znaleźć lepszego rozwiązania, ponieważ wygląda na to,rake install
że nie akceptuje dodatkowych parametrów.Jeszcze lepiej, umieść
--user-install
swój plik ~ / .gemrc, abyś nie musiał go wpisywać za każdym razemźródło
W przypadku, gdy
dodaj do swojego
.bash_profile
:Otwórz nową kartę w Terminalu LUB
source ~/.bash_profile
i gotowe!źródło
Powiązane (dla użytkowników pakietów), jeśli potrzebujesz lżejszej alternatywy dla RVM, która umieści wszystko w dobrze znanym katalogu specyficznym dla użytkownika, polecam użycie:
jeśli chcesz zainstalować klejnoty w tym samym miejscu
zainstaluje je
.gem/ruby/RUBYVERSION
w Twoim katalogu domowym. (Zobacz inny komentarz do tego pytania--user-install
).Dzięki temu klejnoty będą widoczne
gem list
, niemożliwe do odinstalowania przezgem uninstall
itd. Bez koniecznościsudo
dostępu. Uruchomione skrypty zainstalowane przez gem lub bundler można umieścić na swojej ścieżce, dodającdo twojego
$PATH
.gem
sam mówi o tym, jeśli nie jest ustawiony, kiedy to robiszgem install --user-install
.źródło
zainstaluje twój klejnot globalnie , tzn. będzie dostępny dla wszystkich kontekstów użytkownika.
źródło
Możesz zainstalować klejnoty w określonym folderze (przykład dostawcy /) w swojej aplikacji Rails, używając:
źródło