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.
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.
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
Besser noch, setze --user-install
in Ihrer ~/.gemrc-Datei, damit Sie sie nicht jedes Mal eingeben müssen
gem: --user-install
Falls Sie
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!
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.
Sudo gem install --no-user-install <gem-name>
installiert Ihr Juwel global, d. h. es steht allen Kontexten des Benutzers zur Verfügung.
Sie können Gems in einem bestimmten Ordner (Beispielanbieter /) in Ihrer Rails App installieren, indem Sie Folgendes verwenden:
bundle install --path vendor