Come installare una gemma o aggiornare RubyGems se fallisce con un errore di permessi


559

Sto cercando di installare una gemma utilizzando gem install mygemo aggiornare RubyGems utilizzando gem update --systeme non riesce con questo errore:

ERROR:  While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

Qualcuno ha idea di come risolverlo?


5

2
il mio errore si è verificato perché sto facendo: gem update cocoapods corretto: sudo gem update cocoapods
Abhishek Thapliyal

60
sudo chown -R $USER /Library/Ruby/Gems/
Vaskort,

2
semplicemente usando questo comando ha funzionato per me: sudo gem install mygem
Jayprakash Dubey

1
stavo usando la shell zsh ed era un problema di percorso in ~ / .zshrc. ho usato questa riga alla fine del file e ha funzionato per me: export PATH = "$ HOME / .rbenv / shims: $ PATH"
rosnk,

Risposte:


317

Non hai i permessi di scrittura nella directory /Library/Ruby/Gems/1.8.

significa esattamente che non hai il permesso di scrivere lì.

Questa è la versione di Ruby installata da Apple, per proprio uso. Mentre è OK apportare modifiche minori a questo, se sai cosa stai facendo , perché non sei sicuro del problema delle autorizzazioni, direi che non è una buona idea continuare su questa strada.

Invece, ti suggerisco caldamente di utilizzare rbenv o RVM per gestire un Ruby separato, installato in una sandbox nella tua home directory, che puoi modificare / fold / spindle / change senza preoccuparti di rovinare il sistema Ruby.

Tra i due, uso rbenv, anche se in passato ho usato molto RVM. rbenv adotta un approccio più "pratico" alla gestione dell'installazione di Ruby. RVM ha molte funzionalità ed è molto potente, ma, di conseguenza, è più invadente. In entrambi i casi, LEGGERE la documentazione di installazione per loro un paio di volte prima di iniziare l'installazione a seconda di quale si sceglie.


176
Tuttavia, non è necessario utilizzare una libreria Ruby separata. Metti 'sudo' davanti a te come ha suggerito Michael sopra.
serraosays,

37
Cambiare la proprietà dell'installazione di Ruby di Apple non è una buona idea perché il sistema si installa / aggiorna e Utility Disco può ripristinare / riparare automaticamente la proprietà e le autorizzazioni della directory. Ciò frustrerà l'utente e può frustrare il sistema operativo e il codice che prevede di avere autorizzazioni di scrittura / proprietà di tali directory. Apple installa app che utilizzano il suo Ruby e potrebbero aspettarsi una determinata versione o comportamento, quindi potrebbero rompersi. Perché preoccuparsi quando è più facile e sicuro usare RVM o rbenv e non preoccuparsene.
Tin Man,

203
Per quelli come me che in realtà non fanno alcun rub rub e non vogliono fare casino per mezz'ora cercando di capire cosa sono tutte queste cose di cristallo. brew install rubyrisolverà i tuoi problemi di dipendenza in modo pulito, senza danneggiare l'installazione di Apple. Se hai già effettuato sudoun aggiornamento sull'installazione iniziale e sei preoccupato per quello che hai fatto, dovresti essere in grado di annullarlo con questo:cd /System/Library/Frameworks/Ruby.framework/Versions;sudo rm Current; sudo ln -s 1.8 Current;
Louis

21
" I did the sudo tangle and wound up modifying my pre-installed Ruby. I did your steps to try to fix the problem, but now when I do irb or ruby -v, I get command not found. What's going on and is there a fix" e questo aggiunge solo più peso al perché le persone non dovrebbero usare sudoo chown. Sigh ....
the Tin Man

55
Risolto: su El Captain dopo aver brew install rubysemplicemente chiuso il Terminale e riaprirlo di nuovo.
Fmessina,

421

Prova ad aggiungere --user-installinvece di utilizzare sudo:

gem install mygem --user-install

4
Non so perché la tua risposta non sia stata pubblicata prima. --user-installSembra che l' opzione sia in circolazione da un po 'di tempo. Vorrei solo che lo avessi scritto prima. =)
Michael - Dov'è Clay Shirky il

7
Questo deve andare in cima! L'installazione con sudo o su è una cattiva idea poiché stai imponendo un sistema di autorizzazioni sui moduli e probabilmente i pacchetti installati a livello globale potrebbero scontrarsi con pacchetti installati altrimenti o dipendenze di altri progetti. L'uso di rbenv richiede l'installazione di un altro software e aggiunge un livello di complessità.
Hubert Grzeskowiak,

7
Funziona, ma avverte: "ATTENZIONE: non hai /Users/<username>/.gem/ruby/2.0.0/bin nel tuo PERCORSO, gli eseguibili gem non funzioneranno." Il seguente link fornisce utili istruzioni su come aggiornare il tuo percorso (senza dover usare vi) hathaway.cc/post/69201163472/…
dawid,

4
Questo è semplice e logico. Aggiungi il percorso ruby ​​se non lo hai nella tua bashrc if which ruby >/dev/null && which gem >/dev/null; then PATH="$(ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH" fi <br> Fonte: guide.rubygems.org/faqs/#user-install
Inder Kumar Rathore

1
Questo può rovinare con il sistema Apple (ruby installato)?
Daniel Springer,

93

Dovresti davvero usare un gestore versione di Ruby.

L'utilizzo corretto di uno impedirebbe e può risolvere il problema di autorizzazione durante l'esecuzione di un gem updatecomando.

Raccomando rbenv .

Tuttavia, anche quando si utilizza un gestore versione Ruby, è possibile che venga visualizzato lo stesso messaggio di errore.

Se lo fai, e stai usando rbenv, verifica solo che la ~/.rbenv/shimsdirectory sia prima del percorso per il sistema Ruby.

$ echo $PATH ti mostrerà l'ordine del tuo percorso di caricamento.

Se scopri che la tua directory shims viene dopo la directory del tuo Ruby di sistema, modifica il tuo ~/.bashrcfile e inseriscilo come ultimo comando PATH di esportazione: export PATH=$HOME/.rbenv/shims:$PATH

$ ruby -v ti mostra quale versione di Ruby stai usando

Questo dimostra che attualmente sto usando la versione di sistema di Ruby (di solito non va bene)

$ ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]

$ rbenv global 1.9.3-p448 mi passa a una versione più recente, preinstallata (vedi riferimenti sotto).

Questo dimostra che sto usando una versione più recente di Ruby (che probabilmente non causerà Gem :: FilePermissionError)

$ ruby -v
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12.4.0]

Generalmente non dovresti aver bisogno di prefigurare un comando gem con sudo. Se senti la necessità di farlo, probabilmente qualcosa non è configurato correttamente.

Per dettagli su rbenv, vedere quanto segue:


7
Non dovresti doverti preoccupare del pass se stai usando rbenv, se segui le istruzioni di installazione di Homebrew , tutto ciò che devi fare è aggiungere eval "$(rbenv init -)"alla tua configurazione della shell e rbenvdovresti occuparti di configurare il tuo PATHper te.

Grazie. Avevo dimenticato "rbenv global", quindi stavo ancora usando il sistema ruby ​​e l'installazione di gemma non andava a buon fine.
Graham Perks,

75

Perché non lo fai:

sudo gem update --system

39
Installare gemme come root non è una buona idea. stackoverflow.com/questions/2119064/...
spuder

Ho avuto problemi con brew upgrade Error: Permission denied.... Questo l'ha risolto. Grazie!
Ostap Andrusiv,

12
Non usare mai SUDO, se devi farlo, hai fatto qualcosa di sbagliato nella tua configurazione. Si prega di utilizzare rbenv o rvm.
Chris Hough,

14
Perché tutti rispondono ai problemi dei permessi lanciando sempre sudo davanti a un comando? Come è questa best practice?
Steven

hyh: qzc.xcodeproj ylgwhyh $ gem installa cocoapods ERRORE: Durante l'esecuzione di gem ... (Gem :: FilePermissionError) Non hai i permessi di scrittura per la directory /Library/Ruby/Gems/2.0.0.
ylgwhyh,

40

Ciò risolverà il problema su MacOs Mojave e MacOs Catalina in modo chiaro :

brew install ruby

Quindi imposta GEM_HOME sulla tua directory utente. Sul terminale:

Bash:

echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME=$HOME/gems' >> ~/.bashrc
echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

O se acceso Zsh:

echo '# Install Ruby Gems to ~/gems' >> ~/.zshrc
echo 'export GEM_HOME=$HOME/gems' >> ~/.zshrc
echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.zshrc
source ~/.zshrc

2
come lo hai scoperto? Lavorato!
kuzdu,

2
tu sei l'uomo! alto cinque, funziona davvero come un fascino. molte grazie.
Mr Dinkelman,

1
Questo non ha funzionato per me fino a quando non ho corso xcode-select --install. Questo è necessario per compilare estensioni.
Marc Perrin-Pelletier,

Ho eseguito questo e voglio essere in grado di ripristinare le modifiche apportate da questi, sai come ripristinarlo? @Fmessina
KarenAnne,

questo dovrebbe funzionare: modifica il tuo ~/.bashrco ~/.zshrcfile, rimuovi le 3 righe aggiunte e quindi esegui nuovamente il source ~/.bashrccomando
Fmessina,

34

Per me il problema era dovuto all'uso rbenve alla dimenticanza di impostare la versione corretta a livello globale.

Quindi ho dovuto impostarlo rbenv global xxx

Nel mio caso ho installato 2.0.0-p247quindi ho dovuto emettere il comando:

rbenv global 2.0.0-p247
rbenv rehash

Quindi tutto ha funzionato bene.


3
Per quelli di voi che già usano rbenv e hanno iniziato a ricevere un errore di autorizzazione quando si installano gemme dopo aver aggiornato OSX a una versione più recente: si dovrebbe iniziare impostando la versione di rbenv rbenv global 2.1.1per esempio e quindi seguire con rbenv rehash. Ora riesegui il tuo gem installcomando.
njappboy,

1
^ Questo + riavvio del terminale.
XåpplI'-I0llwlg'I -

1
futuri esploratori: rbenv rehash è stato deprecato github.com/rbenv/rbenv-gem-rehash
TCannadySF

Ha funzionato perfettamente per me! Era il che rbenv rehashmi mancava.
jamesmarkcook,

Vale la pena notare che è ruby ​​di sistema che sarebbe stato privo di autorizzazioni e rbenv avrebbe utilizzato ruby ​​di sistema se non fosse stato impostato alcun ruby ​​globale. Questo deve essere verificato con rbenv versions.
Dennis,

23

Devi correggere i tuoi percorsi.

Per determinare se questa correzione funzionerà, eseguire quanto segue:

which gem

Ciò dovrebbe generare una directory per la quale non si dispone delle autorizzazioni per:

/usr/bin/gem

Per risolvere questo, procedere come segue:

  1. Determina il percorso che devi copiare sul tuo profilo:

    rbenv init -

    La prima riga dell'output è la riga che devi copiare sul tuo profilo:

    export PATH="/Users/justin/.rbenv/shims:${PATH}" #path that needs to be copied
    source "/usr/local/Cellar/rbenv/0.4.0/libexec/../completions/rbenv.zsh"
    rbenv rehash 2>/dev/null
    rbenv() {
      typeset command
      command="$1"
      if [ "$#" -gt 0 ]; then
        shift
      fi
    
      case "$command" in
      rehash|shell)
        eval `rbenv "sh-$command" "$@"`;;
      *)
        command rbenv "$command" "$@";;
      esac
    }
  2. Copia il percorso sul tuo profilo e salvalo.

  3. Ricarica il tuo profilo ( source ~/.zshenvper me).

  4. Corri rbenv rehash.

Ora quando corri which gemdovresti ottenere un percorso locale che hai le autorizzazioni per:

/Users/justin/.rbenv/shims/gem

Questo era il problema nella mia situazione. Dovresti essere in grado di includere eval "$(rbenv init -)"nel tuo ~/.bash_profileper apportare tutte le modifiche necessarie.
nyi,

migliore risposta. il mio profilo è stato chiamato .bash_profile ed è possibile aprire il file in questo modo: toccare ~ / .bash_profile; apri ~ / .bash_profile e aggiungi la riga menzionata al punto 1.
CarmenA

17
sudo gem update --system
sudo gem install (gemfile)

In macOS Mojave, sudonon dispone dell'autorizzazione. haha
DawnSong

17

Questo ha funzionato per me. Inoltre, se hai installato gemme come root prima, risolve quel problema cambiando la proprietà su di te (per quanto riguarda la sicurezza).

sudo chown -R `whoami` /Library/Ruby/Gems

1
Grande NO! non modificare mai l'autorizzazione per la /Librarycartella, il sistema potrebbe interrompersi in aggiornamenti futuri. (scusa per la risposta tardiva)
Raptor

@Raptor Sto modificando le autorizzazioni per una sottocartella, non per "/ Libreria". Nel mio caso, ho erroneamente installato le gemme come root, quindi volevo annullarlo. Non ci sono conseguenze negative a cui posso pensare teoricamente, né ne ho osservate nessuna. Sono curioso - perché pensi che sia una cattiva idea?
thebiggestlebowski

Il percorso è per il sistema. Ulteriori aggiornamenti di macOS potrebbero non funzionare.
Raptor

La gemma è installata per impostazione predefinita in questa posizione. Era inutilizzabile perché è stato erroneamente installato come root (sudo) invece del mio normale utente. Il risultato di quello che ho fatto è stato lo stesso se avessi installato $ USER in primo luogo. Non vedo il danno. La maggior parte delle altre risposte qui suggerisce lo stesso risultato / soluzione, ma modi diversi per raggiungerlo. Ancora non vedo il problema. Stai dicendo che le gemme non dovrebbero essere installate in / Libreria?
thebiggestlebowski

15

Esistono due percorsi: utilizzare rbenv o RVM. Di seguito sono riportate le ricette per entrambi. Prima di farlo, probabilmente vorrai disattivare l'installazione di documenti locali per le gemme.

echo "gem: --no-ri --no-rdoc" >> ~/.gemrc

Poi:

install rbenv

install ruby-build

correre:

rbenv install 2.1.2 (or whatever version you prefer)
rbenv global 2.1.2
gem update --system

Ciò installa una versione aggiornata del sistema gem nelle directory locali. Ciò significa che non interferisci con la configurazione del sistema. Se stai ponendo questa domanda, non dovresti avere problemi con la sicurezza del sistema e passerai più tempo a capire quali problemi potresti incontrare, piuttosto che avere un modo semplice per evitare il problema con cui hai iniziato. Scopri InfoSec più tardi, quando sai di più sul sistema operativo e sulla programmazione.

In alternativa, utilizzare invece 'RVM': Per installare rvm, eseguire:

rvm install 2.1.2
rvm use 2.1.2
gem update --system

Questo ha lo stesso risultato, si finisce con un sistema Ruby and Gem locale che non interferisce con le versioni del sistema. Non c'è bisogno di Homebrew, o lib lib di sistema che eccedono, ecc.


13

Ho trovato questo how-to per sudomeno gemma :

  1. brew install rbenv ruby-build
  2. sudo gem update --system
  3. aggiungi esportazioni a .bashrc:

    export RBENV_ROOT="$(brew --prefix rbenv)"
    export GEM_HOME="$(brew --prefix)/opt/gems"
    export GEM_PATH="$(brew --prefix)/opt/gems"
  4. E infine aggiungi questo al tuo ~/.gemrc:

    gem: -n/usr/local/bin
  5. gem update --system


Ho usato brew install rebenv ruby-build, quindi c'è un systemdopo la mia directory? Qualche idea su cosa abbia causato questo e come sbarazzarsene system?
7537247,

13

Prova la risposta di Nathanwhy prima di utilizzare la mia risposta originale di seguito. La sua raccomandazione --user-installdovrebbe raggiungere lo stesso scopo senza dover confondere con il tuo .bash_profileo determinare la tua versione rubino.


Se non sei preoccupato per una specifica versione di ruby, puoi saltare le opzioni di gestione dell'ambiente ruby ​​per carichi pesanti e aggiungere queste righe a ~/.bash_profile:

export GEM_HOME="$HOME/.gem/ruby/2.0.0"
export GEM_PATH="$HOME/.gem/ruby/2.0.0"

Il percorso viene rubato dall'output originale di gem env:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.0.14
  - RUBY VERSION: 2.0.0
  - INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.0.0
  - RUBY EXECUTABLE: /System/Library/.../2.0/usr/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-darwin-14
  - GEM PATHS:
     - /Library/Ruby/Gems/2.0.0
     - /Users/mylogin/.gem/ruby/2.0.0 # <-- This guy, right here.
     - /System/Library/.../usr/lib/ruby/gems/2.0.0
  ...

Non sudoè richiesto ing e puoi usare il rubino già installato, per gentile concessione di Apple.


3
+1: Questo ha funzionato alla grande per me. Non tutti sono gli amministratori di sistema della macchina che stanno utilizzando, e quindi non tutti hanno accesso a "sudo", "chown" o strumenti simili. Allo stesso modo, le persone dovrebbero essere consapevoli di "gem install --user-install" che installa la gem in una directory nella home directory dell'utente piuttosto che in quella condivisa da tutti gli utenti.
Qualcuno Guy

12

Avevo bisogno di fare rbenv rehashcosì da indicare la mia biblioteca Gem locale.

Sembra che tu abbia il tuo gem manager che punta alla libreria di sistema, quindi, invece di fare casini con le autorizzazioni, fai l'equivalente di "rehash" per far sì che il tuo manager faccia puntare le cose localmente.


3
futuri esploratori: rbenv rehash è stato deprecato github.com/rbenv/rbenv-gem-rehash
TCannadySF

12

Più vecchio e più saggio

Non fare quello che dico qui, sappi solo di essere cauti ogni volta che lo usi sudo. Probabilmente vuoi usare qualcosa di simile rbenvper isolare qualsiasi lavoro tu stia facendo.


lontano

impara al riguardo chown

Non so se ti piace la riga di comando, ma questo renderà semplicissimo lavorare su qualsiasi progetto con qualsiasi strumento che installi pacchetti sul tuo sistema.

chown per quanto ne so, sta per cambiamento di proprietà.

Il motivo per cui sono venuto alla ricerca di questa risposta è perché mi ha gem installlanciato questo errore oggi:

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

Questa è un'opportunità perfetta da usare chown. Vedi, Ruby ci ha dato la directory a cui ha bisogno di accedere e sembra che sia una directory che userà abbastanza spesso.

In questo caso, ci sono solo tre cose che bisogna sapere per risolvere il problema, ma chown è molto più potente e ti dà molta più flessibilità di quanto dimostrerò ora. Per ulteriori informazioni, consultare la fonte in fondo.

Le due cose

  1. Nome utente
  2. elenco

Se sei in una shell trovare il nome utente è facile. Guarda il prompt. Il mio sembra:

breadly@breadly-desktop:~\Desktop

L'utente corrente è solo il nome prima del @. Conosciamo la directory dai messaggi di errore, ma hai due possibilità. Puoi limitare il tuo permesso alla versione corrente usando ../gems/1.9.1, o darti il ​​permesso di scrivere per gemme di tutte le versioni usando../gems .

Il comando per cambiare effettivamente la proprietà sarebbe simile a questo.

chown -R $(whoami) /absolute/path/to/directory

Il -Rè noto come flag e la -Rbandiera in genere dice a un comando di fare qualcosa in modo ricorsivo, o in altre parole eseguire il comando su tutto ciò che è contenuto nella directory, e tutte le cose contenute nelle directory contenute all'interno, e così via fino a non c'è nient'altro.


Inoltre, se vuoi scoprire a quale gruppo appartiene il tuo utente, puoi fare riferimento a questo. stackoverflow.com/questions/350141/...
Breedly

3
Tuttavia, potresti voler fare attenzione a cambiare le proprietà se deve essere installato nella directory / usr / local / bin.
Breedly,

16
Cambiare la proprietà di qualsiasi cosa nei percorsi / usr, / Library o / var, tra gli altri, è una cattiva idea. Il sistema può arrestarsi perché file e driver non sono più accessibili e gli aggiornamenti futuri possono interrompersi se il programma di installazione rileva che i percorsi non sono più di proprietà di root: wheel. Riparare il danno può essere davvero difficile e di solito è meglio farlo reinstallando il sistema operativo. Gli utenti ingenui / inesperti non conoscono abbastanza il sistema operativo per capire quali file / directory potrebbero essere sicuri e dovrebbero essere avvertiti di non provarlo a casa.
Tin Man,

Lol questa è una risposta imbarazzante. :) Più vecchio e più saggio ora credo.
Breedly

11

Avevo formattato il mio Mac e molte soluzioni suggerite non funzionavano per me. Ciò che ha funzionato per me sono questi comandi nell'ordine corretto:

  1. Installa Homebrew:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  2. Installa Ruby:

    brew install ruby
  3. Installa bussola:

    sudo gem install compass

Non dovresti mai aver bisogno di usare sudoper installare qualcosa con gem. L'utilizzo lo sudoinstalla nel Ruby di proprietà del sistema, non in quello che possiedi. L'uso di un Ruby in modalità sandbox è molto più semplice da gestire e utilizzare durante la programmazione poiché è possibile creare più istanze diverse e provare diverse cose, quindi distruggerle al termine.
Tin Man,


6

Lavora per me:

sudo gem uninstall cocoapods

sudo gem install cocoapods

Incredibile ha funzionato per me Grazie. Sforzo risparmiato nell'installazione di rbenv o RVM
NaXir,

5
Downvoting perché, come è stato notato in altri commenti, l'installazione di gemme come root è una pratica pericolosa. Il programma di installazione potrebbe fare letteralmente qualsiasi cosa al tuo sistema.
Qualcuno Guy

@SomeGuy: "Il programma di installazione potrebbe letteralmente fare qualsiasi cosa" ... è più probabile che l'utente stesso possa eseguire il finger-finger del comando e manipolare il sistema. Non riesco a pensare a una volta in cui un programma di installazione ha rovinato il mio sistema, ma ricordo chiaramente le volte che l'ho fatto. sudoè un comando che i neofiti amano perché rende possibile fare la cosa sbagliata così facilmente, e ci vogliono anni per imparare ad essere adeguatamente paranoici quando lo si utilizza.
Tin Man,

1
La migliore risposta !!!! Dopo aver eseguito questi 2 comandi, riavvia il Terminale e, tutto qui !!! Molte grazie!!!
nosequeweaponer

4

Controlla se la tua versione di Ruby è corretta. In caso contrario, cambiarlo.

Questo funziona per me:

$ rbenv global 1.9.3-p547
$ gem update --system

Questa è la soluzione migliore: update> chown. Grazie! . Ho anche dovuto correrebrew install ruby
Jose Llausas il

4

Installa rbenv di brew install rbenv ;

Poi mettere eval "$(rbenv init -)" alla fine di ~ / .bash_profile (o ~ / .zshrc di MacOS);

Apri un nuovo terminale ed esegui gem install ***funzionerà!


Non ha funzionato per me ❯ brew install rbenv -q Warning: rbenv 1.1.1 is already installed and up-to-date To reinstall 1.1.1, run `brew reinstall rbenv` ~/.gem/ruby/2.3.0/gems/colorls-1.1.1 ❯ eval "$(rbenv init -)" ~/.gem/ruby/2.3.0/gems/colorls-1.1.1 ❯ gem update Updating installed gems Updating CFPropertyList ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.
Max Coplan il

2

Come sottolineato da Bobbdelsol, Rehash ha funzionato per me:

==> which ruby
/usr/bin/ruby

==> rbenv install 1.9.3-p551
Downloading ruby-1.9.3-p551.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.tar.bz2
Installing ruby-1.9.3-p551...
Installed ruby-1.9.3-p551 to /Users/username/.rbenv/versions/1.9.3-p551


==> which ruby
/Users/username/.rbenv/shims/ruby

==> which gem
/Users/username/.rbenv/shims/gem

==> gem install compass
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.


==> ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]


==> rbenv global 1.9.3-p551


==> ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]


==> rbenv global 1.9.3-p551


==> rbenv rehash


==> ruby -v
ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-darwin15.4.0]


==> gem install compass
Fetching: sass-3.4.22.gem (100%)
Fetching: multi_json-1.11.3.gem (100%)
Fetching: compass-core-1.0.3.gem (100%)
Fetching: compass-import-once-1.0.5.gem (100%)
Fetching: chunky_png-1.3.5.gem (100%)
Fetching: rb-fsevent-0.9.7.gem (100%)
Fetching: ffi-1.9.10.gem (100%)
Building native extensions.  This could take a while...
Fetching: rb-inotify-0.9.7.gem (100%)
Fetching: compass-1.0.3.gem (100%)
    Compass is charityware. If you love it, please donate on our behalf at http://umdf.org/compass Thanks!
Successfully installed sass-3.4.22
Successfully installed multi_json-1.11.3
Successfully installed compass-core-1.0.3
Successfully installed compass-import-once-1.0.5
Successfully installed chunky_png-1.3.5
Successfully installed rb-fsevent-0.9.7
Successfully installed ffi-1.9.10
Successfully installed rb-inotify-0.9.7
Successfully installed compass-1.0.3
9 gems installed
Installing ri documentation for sass-3.4.22...
Installing ri documentation for multi_json-1.11.3...
Installing ri documentation for compass-core-1.0.3...
Installing ri documentation for compass-import-once-1.0.5...
Installing ri documentation for chunky_png-1.3.5...
Installing ri documentation for rb-fsevent-0.9.7...
Installing ri documentation for ffi-1.9.10...
Installing ri documentation for rb-inotify-0.9.7...
Installing ri documentation for compass-1.0.3...
Installing RDoc documentation for sass-3.4.22...
Installing RDoc documentation for multi_json-1.11.3...
Installing RDoc documentation for compass-core-1.0.3...
Installing RDoc documentation for compass-import-once-1.0.5...
Installing RDoc documentation for chunky_png-1.3.5...
Installing RDoc documentation for rb-fsevent-0.9.7...
Installing RDoc documentation for ffi-1.9.10...
Installing RDoc documentation for rb-inotify-0.9.7...
Installing RDoc documentation for compass-1.0.3...

così vicino. ancora "ERRORE: Durante l'esecuzione di gem ... (Gem :: FilePermissionError) Non hai i permessi di scrittura per la directory /Library/Ruby/Gems/2.0.0."
JGallardo,

1

Testato su MacOS Mojave CON SUCCESSO:

  1. Disinstalla tutte le tue vecchie versioni di ruby ​​(diciamo che hai 2.00 e 2.3.0):

    $ rvm uninstall 2.0.0

    $ rvm uninstall 2.3.0

  2. Installa la nuovissima versione ruby:

    $ brew install ruby

  3. Imposta un alias predefinito per la tua versione:

    $ rvm alias create default ruby

  4. Riavvia il sistema perché questo è il modo più sicuro in cui il computer carica la nuova versione di Ruby, installata di recente.

Dopo aver eseguito la procedura sopra, è possibile eseguire correttamente qualsiasi gemcomando.


-2

cd /Library/Ruby/Gems/2.0.0

Aperto .

tasto destro ottenere informazioni

fare clic su blocco

inserire la password

fai leggere e scrivere tutto.


1
Si prega di prendere il tempo per formattare la risposta per la leggibilità. Lo sforzo che dedichi alla ricerca e alla spiegazione paga.
Tin Man,

-2

dare all'utente $ whoami per creare qualcosa in quella cartella

sudo chown -R user /Library/Ruby/Gems/2.0.0

No. Quella cartella è di proprietà del sistema per una buona ragione, il sistema la utilizza per i suoi scopi. Va bene eseguire uno script che punta ad esso, ma crea e usa un Ruby sandbox se vuoi rovinarlo.
Tin Man,


-4

L'installazione di gem o l'aggiornamento di RubyGems non riesce con errore di autorizzazione Quindi digitare questo comando

sudo gem install cocoapods

1
Questo è stato trattato nelle altre risposte. Leggi le altre risposte prima di crearne una per assicurarti che la tua offra qualcosa di nuovo.
Tin Man,


-18

Il motivo dell'errore è perché non si è effettuato l'accesso come utente root sul terminale.

Se hai già root usa abilita sul tuo mac nel tipo di terminale

$ su

Se non si dispone di un utente root, è necessario abilitarlo attenendosi alla seguente procedura

  1. Dal menu Apple, scegli Preferenze di Sistema ...
  2. Dal menu Visualizza, seleziona Utenti e gruppi.
  3. Fare clic sul lucchetto e autenticarsi come account amministratore.
  4. Fai clic su Opzioni di accesso ....
  5. Fai clic sul pulsante "Modifica ..." o "Partecipa ..." in basso a destra.
  6. Fai clic sul pulsante "Apri Directory Directory ...".
  7. Fai clic sul lucchetto nella finestra Directory Utility.
  8. Immettere un nome account e una password amministratore, quindi fare clic su OK.
  9. Scegli Abilita utente root dal menu Modifica.
  10. Immettere la password di root che si desidera utilizzare nei campi Password e Verifica, quindi fare clic su OK.

Più allo stesso modo su http://support.apple.com/kb/ht1528

Almeno funziona per me dopo essermi bloccato per un paio d'ore.


Perché votare male? Ragazzi, per favore, potete scrivere il motivo per farlo?
Mohammad Arif,

8
Installare gemme come root è una cattiva idea. stackoverflow.com/questions/2119064/...
spuder
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.