Wie behebe ich den Fehler "Sie haben keine Schreibberechtigungen im Verzeichnis / usr / bin" bei der Installation von Rails?

131

Ich versuche, Rails 3 auf einem brandneuen MacBook Pro mit OS X 10.6.3, Ruby 1.8.7 und Rails 2.3.5 zu installieren, und frage mich, ob ich mich abgespritzt habe. Bisher habe ich folgende Befehle ausgeführt:

$ gem update --system
$ gem install arel tzinfo builder memcache-client rack rack-test rack-mount erubis mail text-format thor bundler i18n
$ gem install rails --pre

Wenn ich jedoch den letzten Befehl ausführe, wird folgende Fehlermeldung angezeigt:

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /usr/bin directory.

Ich denke, es möchte, dass ich den Befehl mit ausführe, sudodamit er überschreiben kann /usr/bin/rails. Aber wenn ich das mache, überschreibe ich dann nicht meine ausführbare Rails 2.3.5-Datei? Das will ich nicht machen. Stattdessen möchte ich beide Versionen von Rails behalten. Wie mache ich das?

Strahl
quelle
5
Ich habe den gleichen Fehler beim ersten Befehl erhalten. Verwenden Sie diesen Befehlsudo gem update --system -n /usr/local/bin
nitish005
1
Was ist dann?
Scott Romack
Ich werde hier nur darauf hinweisen, dass ein einfacher Neustart des Terminals dies für mich gelöst hat.
Ashwood

Antworten:

14

Ich würde vorschlagen, RVM zu verwenden, damit Sie mehrere Versionen von Ruby / Rails mit Edelsteinprofilen installieren und im Grunde alle Ihre Edelsteine ​​voneinander fernhalten können. Vielleicht möchten Sie einen ähnlichen Beitrag lesen. Wie kann ich Ruby on Rails 3 unter OSX installieren?

Tarellel
quelle
Nur das löste für mich ein ähnliches Problem mit der gleichen Fehlermeldung
Rich Stone
479

Verwenden Sie den -nParameter, um wie bei Cocoapods zu installieren:

sudo gem install cocoapods -n /usr/local/bin
Pradeep Kachhawaha
quelle
7
Warum brauchen wir das überhaupt?
Nenchev
28
Schlägt unter MacOS fehl, es sei denn, Sie geben -n / usr / local / bin an. Vielen Dank für die Lösung
Sacky San
3
Was bedeutet -n?
Allenlinli
7
nach guides.rubygems.org/command-reference/#gem-install , -n gibt das Verzeichnis an Binärdateien befinden. Ich brauchte auch -n /usr/local/binauf meinem Mac. Ich lief which pod, um seinen vorhandenen Speicherort zu bestimmen, bevor ich die Option -n verwendete, die tatsächlich / usr / local / bin
mwu
3
Ich bin mir sicher, dass RVM großartig ist, aber dies ist eine bessere Antwort, die das unmittelbare Problem direkt angeht, ohne mich in ein Kaninchenloch zu schicken.
Wayne
61

Die Verwendung des Flags -n / usr / local / bin funktioniert, ABER ich musste jedes Mal auf diese Seite zurückkehren, wenn ich ein Paket erneut aktualisieren wollte. Also habe ich eine dauerhafte Lösung dafür gefunden.

Für diejenigen, die daran interessiert sind, dies dauerhaft zu beheben :

Erstellen Sie eine ~ / .gemrc-Datei

vim .gemrc

Mit folgendem Inhalt:

:gemdir:
   - ~/.gem/ruby
install: -n /usr/local/bin

Jetzt können Sie Ihren Befehl normal ohne das Flag -n ausführen.

Genießen!

Francois Nadeau
quelle
vim .gemrcWie schreibe ich dieses cmd
Chandni
Ich bin nicht sicher, ob dies in Windows $ funktioniert, aber ich denke, Sie könnten Notepad verwenden.
Francois Nadeau
Vielen Dank, genau wie Sie hatte ich es satt, jedes Mal nach diesem Suffix zu suchen, wenn ich ein Update vornehmen musste!
Paul-Etienne vor
48
sudo gem install cocoapods --pre -n /usr/local/bin

Das funktioniert bei mir.

Tong Xu
quelle
Ich hatte dieses Problem und diese Antwort hat bei mir funktioniert! Ich habe durch cocoapodsdie Abhängigkeit ersetzt, die ich brauchte
Chris
33

Sie können verwenden sudo gem install -n /usr/local/bin cocoapods

Das funktioniert bei mir.

Damini
quelle
6

Um Ihren spezifischen Fehler zu beheben, müssen Sie diesen Befehl als sudo ausführen, dh:

sudo gem install rails --pre
Andrew Nesbitt
quelle
1
NEIN. Verwenden Sie rvm oder rbenv ... nicht nur sudo.
DoubleJosh
5

Dieser Fehler traf mich nach der korrekten Installation von RVM. Lösung: Starten Sie das Terminal neu.

Referenz Das RVM-Installations- Tutorial von RailsCast .

Akorn
quelle
Nicht genau 7 Jahre später, aber dies funktioniert auch, wenn Sie an einem Windows Bash-Subsystem arbeiten. Beenden Sie einfach die Bash und starten Sie sie erneut. Danke dir.
Pedro Madrid
0

Für mich hat etwas anderes funktioniert, das ich bei dieser Antwort aus einer ähnlichen Frage gefunden habe. Wahrscheinlich hilft OP nicht, aber vielleicht hatte jemand wie ich ein ähnliches Problem.

Sie sollten in der Tat rvm verwenden , aber da Ihnen niemand erklärt hat, wie dies ohne rvm zu tun ist, können Sie loslegen :

sudo gem install tzinfo builder memcache-client rack rack-test rack-mount \
  abstract erubis activesupport mime-types mail text-hyphen text-format   \
  thor i18n rake bundler arel railties rails --prerelease --force
Sebastian D'Agostino
quelle
-2

Unter macOS High Sierra löste dies mein Problem:

sudo gem update --system -n /usr/local/bin/gem
Subhan Ahmed
quelle