wake-up-neo.com

'Sudo Gem Install' oder 'Gem Install' und Gem-Speicherorte

Laufen 'Sudo gem list --local' und 'gem list --local 'gib mir unterschiedliche Ergebnisse. Mein Edelsteinpfad ist auf meinen Home-Ordner festgelegt und enthält nur die Edelsteine ​​aus 'gem list --local '.

Es ist wahrscheinlich nicht gut, Edelsteine ​​in verschiedenen Verzeichnissen auf meinem Computer zu installieren. Sollte der Edelsteinpfad also anders festgelegt sein und sollte ich bei der Installation immer Sudo verwenden?

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 ist leer.

132
raphael_turtle

Im Gegensatz zu allen anderen Posts empfehle ich, bei der Installation von Gems NICHT Sudo zu verwenden.

Stattdessen empfehle ich Ihnen, RVM zu installieren und mit tragbaren Edelsteinhäusern ein glückliches Leben zu beginnen und andere Version von Ruby alle leben unter einem Dach.

Für die Uneingeweihten von die Dokumentation :

RVM ist ein Befehlszeilentool, mit dem wir auf einfache Weise mehrere Ruby Umgebungen und Gruppen von Edelsteinen installieren, verwalten und bearbeiten können.

Der Grund, warum das Installieren von Edelsteinen mit Sudo schlimmer ist als nur gem install liegt daran, dass die Edelsteine ​​für ALL USERS als root installiert werden. Dies kann in Ordnung sein, wenn Sie die einzige Person sind, die das Gerät verwendet, aber wenn Sie es nicht sind, kann dies zu Verrücktheit führen.

Wenn Sie sich dazu entschließen, alle Ihre Juwelen wegzublasen und von vorne zu beginnen, ist dies als Nicht-Root-Benutzer viel einfacher und sicherer.

Wenn Sie sich für die Verwendung von RVM entscheiden, verursacht die Verwendung von Sudo alle Arten von Verrücktheit, da jede Ruby Version, die Sie über RVM installieren, hat ein eigenes GEM_HOME.

Es ist auch schön, wenn Sie Ihre Entwicklungsumgebung so nah wie möglich an Ihre Produktionsumgebung anpassen und in der Produktion höchstwahrscheinlich Gems als Nicht-Root-Benutzer installieren.

137
jonnii

Sie können Edelsteine ​​auch in Ihrer lokalen Umgebung (ohne Sudo) mit installieren

gem install --user-install <gemname>

Ich empfehle dies, damit Sie sich nicht mit der Konfiguration auf Systemebene anlegen, selbst wenn es sich um einen Einzelbenutzercomputer handelt.

Sie können überprüfen, wohin die Edelsteine ​​führen, indem Sie die Edelsteinpfade mit gem environment. In meinem Fall ist es "~/.gem/Ruby/1.8".

Wenn Sie einige Binärdateien aus lokalen Installationen benötigen, die Ihrem Pfad hinzugefügt wurden, können Sie Ihrem bashrc Folgendes hinzufügen:

if which Ruby >/dev/null && which gem >/dev/null; then
    PATH="$(Ruby -r rubygems -e 'puts Gem.user_dir')/bin:$PATH"
fi

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

115
Nils

Besser noch, setze --user-install in Ihrer ~/.gemrc-Datei, damit Sie sie nicht jedes Mal eingeben müssen

gem: --user-install
32
allyraza

Falls Sie

  • installiert Ruby Edelsteine ​​mit Sudo
  • ich möchte Edelsteine ​​ohne Sudo installieren
  • möchte rvm/rbenv nicht installieren

fügen Sie Ihrem .bash_profile Folgendes hinzu:

export GEM_HOME=/Users/‹your_user›/.gem
export PATH="$GEM_HOME/bin:$PATH"

Öffnen Sie einen neuen Tab im Terminal OR source ~/.bash_profile Und los geht's!

11
David Salamon

Verwandte (für Bundler-Benutzer), wenn Sie eine leichtere Alternative zu RVM suchen, die alles in ein benutzerspezifisches, bekanntes Verzeichnis legt, empfehle ich die Verwendung von:

bundle install --path $HOME/.gem

wenn Sie Edelsteine ​​an derselben Stelle installieren möchten, an der sie sich befinden

gem install --user-install GEMNAME

installiert sie .gem/Ruby/RUBYVERSION in Ihrem Homedir. (Siehe den anderen Kommentar zu dieser Frage zu --user-install.)

Dadurch werden die Edelsteine ​​für gem list Sichtbar und können über gem uninstall Usw. deinstalliert werden, ohne dass der Zugriff auf Sudo erforderlich ist. Von gem oder bundler installierte ausführbare Skripte können durch Hinzufügen in Ihren Pfad eingefügt werden

$HOME/.gem/Ruby/RUBYVERSION/bin

zu Ihrem $PATH. gem selbst teilt Ihnen dies mit, wenn es bei gem install --user-install nicht gesetzt ist.

8
Todd Vierling
Sudo gem install --no-user-install <gem-name>

installiert Ihr Juwel global, d. h. es steht allen Kontexten des Benutzers zur Verfügung.

6

Sie können Gems in einem bestimmten Ordner (Beispielanbieter /) in Ihrer Rails App installieren, indem Sie Folgendes verwenden:

bundle install --path vendor
2
Chadi