"sudo Gem install" lub "Gem install" i lokalizacje gem
Biegi "sudo gem list --local
" i "gem list --local
" dają mi różne wyniki. Ścieżka do klejnotów jest ustawiona w folderze domowym i zawiera tylko klejnoty z 'gem list --local
'.
Prawdopodobnie nie jest dobrze mieć gemy zainstalowane w różnych katalogach na moim komputerze, więc czy powinienem ustawić ścieżkę gem inaczej i czy zawsze powinienem używać sudo
podczas instalacji 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.
8 answers
W przeciwieństwie do wszystkich innych postów sugeruję nie używać sudo
podczas instalacji gemów.
Zamiast tego polecam zainstalować RVM i rozpocznij szczęśliwe życie z przenośnymi domami gem i inną wersją rubinu, mieszkającymi pod jednym dachem.
Dla niewtajemniczonych, z dokumentacji :
Dlatego, że instalowanie klejnotów zRVM jest narzędziem wiersza poleceń, które pozwala nam łatwo instalować, zarządzać i pracować z wieloma środowiskami ruby i zestawami klejnoty.
sudo
jest gorsze niż tylko gem install
, ponieważ instaluje klejnoty dla wszystkich użytkowników jako root
. Może to być w porządku, jeśli jesteś jedyną osobą używającą maszyny, ale jeśli nie jesteś, może to powodować dziwactwa.
Jeśli zdecydujesz, że chcesz zdmuchnąć wszystkie klejnoty i zacząć od nowa, o wiele łatwiej i bezpieczniej jest to zrobić jako użytkownik nie-root.
Jeśli zdecydujesz, że chcesz użyć RVM
, użycie sudo
spowoduje, że wszystkie rodzaje dziwne, ponieważ każda wersja Ruby, którą instalujesz przez RVM
ma swój własny GEM_HOME.
Dobrze jest również, jeśli możesz stworzyć środowisko programistyczne tak blisko swojego środowiska produkcyjnego, jak to możliwe, a w produkcji najprawdopodobniej zainstalujesz gems jako użytkownik nie-root.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-06 16:20:39
Możesz również zainstalować gemy w swoim lokalnym środowisku (bez sudo
) za pomocą
gem install --user-install <gemname>
Polecam, abyś nie zadzierał z konfiguracją na poziomie systemu, nawet jeśli jest to komputer dla jednego użytkownika.
Możesz sprawdzić, gdzie idą klejnoty, patrząc na gempathów z gem environment
. W moim przypadku to"~/.gem/Rubin / 1,8".
Jeśli potrzebujesz dodanych do ścieżki plików binarnych z lokalnych instalacji, możesz dodać do bashrc coś takiego jak:
if which ruby >/dev/null && which gem >/dev/null; then
PATH="$(ruby -r rubygems -e 'puts Gem.user_dir')/bin:$PATH"
fi
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-24 12:35:32
Jeszcze lepiej, umieść --user-install
w swoim~/.plik gemrc więc nie musisz go wpisywać za każdym razem
gem: --user-install
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-15 17:22:41
In case you
- zainstalowany ruby gems z sudo
- chcesz zainstalować gemy bez sudo
- nie chcesz instalować rvm / rbenv
Dodaj do swojego .bash_profile
:
export GEM_HOME=/Users/‹your_user›/.gem
export PATH="$GEM_HOME/bin:$PATH"
Otwórz nową kartę w terminalu lub source ~/.bash_profile
i możesz zaczynać!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-27 14:25:40
Related (dla użytkowników bundlera), jeśli chcesz lżejszej alternatywy dla RVM, która umieści wszystko w dobrze znanym katalogu, polecam użycie:
bundle install --path $HOME/.gem
Jeśli chcesz zainstalować gemy w tym samym miejscu, w którym
gem install --user-install GEMNAME
Zainstaluje je, .gem/ruby/RUBYVERSION
w Twoim homedir. (Zobacz inny komentarz do tego pytania o --user-install
.)
Spowoduje to, że klejnoty będą widoczne dla gem list
, odinstalowalne przez gem uninstall
itp. bez potrzeby sudo
dostępu. Uruchamiane Skrypty instalowane przez gem lub bundler można umieścić na ścieżce przez dodanie
$HOME/.gem/ruby/RUBYVERSION/bin
Do Twojego $PATH
. gem
sama mówi o tym, jeśli nie jest ustawiona, gdy robisz gem install --user-install
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-03 21:38:30
sudo gem install --no-user-install <gem-name>
Zainstaluje Twój gem globalnie , tzn. będzie dostępny dla wszystkich kontekstów użytkownika.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-27 07:15:14
Możesz zainstalować gems w określonym folderze (przykład vendor/) w aplikacji Rails używając:
bundle install --path vendor
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-31 18:50:08
Instalowanie ruby gems na Macu jest częstym źródłem zamieszania i frustracji. Niestety, większość rozwiązań jest niekompletna, przestarzała i dostarcza złych porad. Cieszę się, że przyjęta tutaj odpowiedź mówi, aby nie używać sudo
, co nigdy nie powinno być konieczne, zwłaszcza jeśli nie rozumiesz, co to robi. Chociaż używałem RVM lata temu, polecam chruby
w 2020 roku.
Niektóre z innych odpowiedzi tutaj zapewniają alternatywne opcje instalacji klejnotów, ale nie wspominają o ograniczeniach tych rozwiązań. Brakuje wyjaśnienia i porównania różnych opcji i dlaczego możesz wybrać jedną z nich. Starałem się opisać najczęstsze scenariusze w moim definitive guide to installing Ruby gems on a Mac .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-02 16:16:52