2016-06-09 34 views
31

Ho ruby ​​installato su Ubuntu 16.04.Non hai permessi di scrittura per la directory /var/lib/gems/2.3.0

$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. 

Qualsiasi aiuto sarà molto apprezzato!

+0

si può provare a installare RVM e installare una versione più recente di rubino come 2.3.3 –

+0

Per il commento 3: il pacchetto "python-software-properties" non è disponibile si dovrebbe sostituire per software-properties-common –

+0

l'opzione RVM, e imho anche meglio e semplice [installare come un puro "user-install"] (https: //stackoverflow.com/a/18294746/444255) (al contrario di uno globale, che richiede diritti) potrebbe essere una cosa molto migliore, piuttosto che armeggiare con i diritti! –

risposta

71

Per prima cosa è necessario disinstallare il ruby ​​installato da Ubuntu con qualcosa come sudo apt-get remove ruby.

quindi reinstallare rubino con rbenv e ruby-build secondo i loro documenti:

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 

L'ultimo passo è quello di installare Bundler:

gem install bundler 
rbenv rehash 

Quindi godere!

Derek

+2

Istruzioni su come installare ruby ​​(su rotaie) è qui https://gorails.com/setup/ubuntu/16.04 – Hoto

+0

Sono su ubuntu dopo aver seguito i passaggi sopra non aiuta ... –

+1

Sono un po 'reticente a fare il uninstall, dal momento che richiede anche la disinstallazione di programmi dipendenti ('vim-gnome' per esempio). Credo che preferirei sapere _why_ in primo luogo che ha bisogno di scrivere in/var/lib/... per l'installazione di un utente ... Ho fatto un 'sudo gem install' quando non era necessario? – PlasmaBinturong

7

Provare a utilizzare chown -R nella directory var/lib/gems, assegnando la proprietà all'utente [rubyusername] in questo esempio, l'utente che installerà e svilupperà con le gemme.

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

Questo ricorsivamente cambia tutto sotto gli gemme directory. Per una maggiore sicurezza sui sistemi multiutente, puoi anche creare un gruppo, piuttosto che spezzare il singolo rubyusername e aggiungere utenti a quel gruppo.

+2

Può risolvere questo problema, ma viene visualizzato un altro problema: ERRORE: durante l'esecuzione di gem ... (Gem :: FilePermissionError) Non si dispone delle autorizzazioni di scrittura per la directory/usr/local/bin ; quindi immagino che qualcos'altro sia sbagliato invece dell'autorizzazione. – derek

-5

Prova sudo chmod 777 -R /var/lib/gems. Fornirà permessi di lettura e scrittura. Non è molto consigliato. Ma risolve il problema in un modo più semplice.

2

Sulla base della risposta di derek riportata sopra, in genere non è consigliabile utilizzare l'istanza di Ruby fornita dal sistema per il proprio lavoro di sviluppo, poiché gli strumenti di sistema potrebbero dipendere dalla particolare versione o posizione dell'installazione di Ruby. Simile a this answer for Mac OSX, ti consigliamo di seguire le istruzioni di derek sull'utilizzo di qualcosa come rbenv (RVM è un'alternativa simile) per installare la tua istanza Ruby.

Tuttavia, non è necessario disinstallare la versione di sistema di Ruby, le istruzioni di installazione di rbenv forniscono un meccanismo per assicurarsi che l'istanza di Ruby disponibile nella shell sia l'istanza rbenv, non l'istanza di sistema. Questo è il

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

riga nella risposta di Derek.

1

Invece di proprietari che cambiano, che potrebbe bloccare altri utenti locali o -alcuni giorno- il proprio server rubino/distribuzione-cose ... in esecuzione sotto un altro utente ...

avrei preferito semplicemente estendere i diritti di quel particolare cartella per ... beh, tutti:

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

(ho incontrato il vostro errore e quindi questo è abbastanza verificato..)