webentwicklung-frage-antwort-db.com.de

Sie haben keine Schreibrechte für das Verzeichnis /var/lib/gems/2.3.0

Ich habe Ruby auf meinem Ubuntu 16.04 installiert.

$which Ruby  

/usr/bin/Ruby

$Ruby -v 

Ruby 2.3.0p0 (2015-12-25) [x86_64-linux-gnu]

$gem install bundler 

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /var/lib/gems/2.3.0 directory.

Jede Hilfe wird sehr geschätzt!

80
derek

Sie müssen zuerst das von Ubuntu installierte Ruby mit etwas wie Sudo apt-get remove Ruby Deinstallieren.

Installieren Sie dann Ruby mit rbenv und Ruby-build entsprechend den zugehörigen Dokumenten neu:

cd $HOME
Sudo apt-get update 
Sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev

git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec $Shell

git clone https://github.com/rbenv/Ruby-build.git ~/.rbenv/plugins/Ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/Ruby-build/bin:$PATH"' >> ~/.bashrc
exec $Shell

rbenv install 2.3.1
rbenv global 2.3.1
Ruby -v

Der letzte Schritt ist die Installation von Bundler:

gem install bundler
rbenv rehash

Dann genießen Sie!

Derek

132
derek

Wenn Sie die Distribution Ruby anstelle von rb-env/rvm verwenden möchten, können Sie einen GEM_HOME Für Ihren aktuellen Benutzer einrichten. Erstellen Sie zunächst ein Verzeichnis zum Speichern des = Ruby Edelsteine ​​für Ihren Benutzer:

$ mkdir ~/.Ruby

Aktualisieren Sie dann Ihre Shell, um dieses Verzeichnis für GEM_HOME Zu verwenden und um Ihre Variable PATH so zu aktualisieren, dass sie das Verzeichnis Ruby gem bin enthält.

$ echo 'export GEM_HOME=~/.Ruby/' >> ~/.bashrc
$ echo 'export PATH="$PATH:~/.Ruby/bin"' >> ~/.bashrc
$ source ~/.bashrc

(Diese letzte Zeile lädt die Umgebungsvariablen in Ihrer aktuellen Shell neu.)

Jetzt sollten Sie in der Lage sein, Ruby Edelsteine ​​unter Ihrem Benutzer mit dem Befehl gem zu installieren. Ich konnte dies zum Laufen bringen mit Ruby 2.5 .1 unter Ubuntu 18.04 Wenn Sie eine Shell verwenden, die nicht Bash ist, müssen Sie das Startskript für diese Shell anstelle von bashrc bearbeiten.

30
James

(Januar 2019) Um Ruby mithilfe des Rbenv-Skripts zu installieren, gehen Sie folgendermaßen vor:

1. Aktualisieren Sie zunächst den Paketindex und installieren Sie die Pakete, die für die Erstellung des Ruby-Build-Tools erforderlich sind. Ruby from source:

Sudo apt-get remove Ruby
Sudo apt update
Sudo apt install git curl libssl-dev libreadline-dev zlib1g-dev autoconf bison build-essential libyaml-dev libreadline-dev libncurses5-dev libffi-dev libgdbm-dev

2. Führen Sie als Nächstes den folgenden Befehl curl aus, um sowohl rbenv als auch Ruby-build zu installieren:

curl -sL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-installer | bash -

3. Fügen Sie dem Systempfad $ HOME/.rbenv/bin hinzu.

Wenn Sie Bash verwenden, führen Sie Folgendes aus:

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc

Wenn Sie Zsh run verwenden:

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(rbenv init -)"' >> ~/.zshrc
source ~/.zshrc

4. Installiere die neueste stabile Version von Ruby und setze sie als Standardversion mit:

rbenv install 2.5.1
rbenv global 2.5.1

So listen Sie alle verfügbaren Ruby Versionen auf, die Sie verwenden können: rbenv install -l

5. Stellen Sie sicher, dass Ruby ordnungsgemäß installiert wurde, indem Sie die Versionsnummer ausdrucken:

Ruby -v

# Output
Ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]

SOURSE: Wie installiert man Ruby unter Ubuntu 18.04

BEARBEITEN: Rubygems installieren:

Sudo apt-get install rubygems
11
Achraf JEDAY

Versuchen Sie es mit chown -R auf der var/lib/gems Verzeichnis, das dem Benutzer [rubyusername], der mit Gems installiert und entwickelt wird, den Besitz zuweist.

 # chown -R rubyusername:rubyusername /var/lib/gems 

Dieses rekursiv ändert alles im Gems Verzeichnis. Für zusätzliche Sicherheit auf Mehrbenutzersystemen können Sie auch eine Gruppe erstellen, anstatt den einzelnen Ruby-Benutzernamen anzuzeigen, und Benutzer zu dieser Gruppe hinzufügen.

8
minnow

Anstatt die Besitzer zu ändern, was andere lokale Benutzer oder - eines Tages - Ihre eigenen Ruby server/deployment-things ..., die unter einem anderen Benutzer ausgeführt werden, aussperren könnte ...

Ich würde die Rechte dieses speziellen Ordners lieber einfach auf ... Nun, alle:

cd /var/lib
Sudo chmod -R a+w gems/

(Ich bin auch auf Ihren Fehler gestoßen. Das ist also ziemlich bestätigt.)

8
Frank Nocke

Aufbauend auf der obigen Antwort von derek wird im Allgemeinen nicht empfohlen, die vom System bereitgestellte Instanz Ruby für Ihre eigene Entwicklungsarbeit zu verwenden, da die Systemtools möglicherweise von der jeweiligen Version oder dem Speicherort der Ruby - Installation abhängen. Ähnlich wie bei diese Antwort für Mac OS X sollten Sie die Anweisungen von derek zur Verwendung von so etwas wie rbenv ( RVM befolgen ), um Ihre eigene Instanz Ruby zu installieren.

Es ist jedoch nicht erforderlich, die Systemversion von Ruby zu deinstallieren. Die Installationsanweisungen von rbenv bieten einen Mechanismus, mit dem sichergestellt wird, dass die in Ihrer Shell verfügbare Instanz von Ruby die rbenv-Instanz und nicht die Systeminstanz ist. Dies ist das

echo 'eval "$(rbenv init -)"' >> ~/.bashrc

zeile in der Antwort von Derek.

3
Sean Ray