"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.

Author: the Tin Man, 2010-01-22

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 :

RVM jest narzędziem wiersza poleceń, które pozwala nam łatwo instalować, zarządzać i pracować z wieloma środowiskami ruby i zestawami klejnoty.

Dlatego, że instalowanie klejnotów z 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.

 148
Author: jonnii,
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

(od http://guides.rubygems.org/faqs/#user-install )

 135
Author: Nils,
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
 36
Author: allyraza,
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ć!

 14
Author: David Salamon,
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.

 9
Author: Todd Vierling,
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.

 6
Author: Tasos Koutoumanos,
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
 1
Author: Chadi,
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 .

 1
Author: monfresh,
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