2014-09-27 27 views
11

per errore Ho eseguito sudo bundle install sul mio progetto e ora quando lo eseguo come me bundle install Ricevo errori di autorizzazione negati (di seguito). Ho provato le istruzioni qui https://github.com/bundler/bundler/blob/master/ISSUES.md#other-problems, ho anche provato a clonare il mio progetto in una nuova directory ed eseguire bundle da lì, inutile. Per favore aiuto!impossibile ripristinare da `sudo bundle install`

error: cannot open .git/FETCH_HEAD: Permission denied 

Retrying git fetch --force --quiet --tags "/home/akonsu/.bundler/cache/git/em-postgresql-adapter-361cdc05eba5661bb17040a7a6c2a093f9c2263b" due to error (2/3): Bundler::Source::Git::GitCommandError Git error: command `git fetch --force --quiet --tags "/home/akonsu/.bundler/cache/git/em-postgresql-adapter-361cdc05eba5661bb17040a7a6c2a093f9c2263b"` in directory /usr/local/lib/ruby/gems/2.1.0/bundler/gems/em-postgresql-adapter-3dfcc60378e9 has failed. 
If this error persists you could try removing the cache directory '/home/akonsu/.bundler/cache/git/em-postgresql-adapter-361cdc05eba5661bb17040a7a6c2a093f9c2263b' 
error: cannot open .git/FETCH_HEAD: Permission denied 

Retrying git fetch --force --quiet --tags "/home/akonsu/.bundler/cache/git/em-postgresql-adapter-361cdc05eba5661bb17040a7a6c2a093f9c2263b" due to error (3/3): Bundler::Source::Git::GitCommandError Git error: command `git fetch --force --quiet --tags "/home/akonsu/.bundler/cache/git/em-postgresql-adapter-361cdc05eba5661bb17040a7a6c2a093f9c2263b"` in directory /usr/local/lib/ruby/gems/2.1.0/bundler/gems/em-postgresql-adapter-3dfcc60378e9 has failed. 
If this error persists you could try removing the cache directory '/home/akonsu/.bundler/cache/git/em-postgresql-adapter-361cdc05eba5661bb17040a7a6c2a093f9c2263b' 
error: cannot open .git/FETCH_HEAD: Permission denied 

Git error: command `git fetch --force --quiet 
--tags "/home/akonsu/.bundler/cache/git/em-postgresql-adapter-361cdc05eba5661bb17040a7a6c2a093f9c2263b"` in directory 
/usr/local/lib/ruby/gems/2.1.0/bundler/gems/em-postgresql-adapter-3dfcc60378e9 
has failed. 
If this error persists you could try removing the cache directory 
'/home/akonsu/.bundler/cache/git/em-postgresql-adapter-361cdc05eba5661bb17040a7a6c2a093f9c2263b' 
+0

'chown -R akonsu: akonsu/home/akonsu/.bundler'? – Smar

+0

Oppure rimuovendo la directory cache come l'errore ha detto ...? – Smar

+0

provato che ... io sono il proprietario. – akonsu

risposta

10

La clonazione del repository in una nuova directory non sarebbe di aiuto. Hai installato le gem per la directory gems standard invece di una directory specifica del bundle.

L'opzione migliore è installare il pacchetto in una nuova directory e ignorare le gemme installate nel percorso di sistema.

Prova bundle install --path /home/akonsu/.new_project_bundle. Non è necessario specificare questa opzione ogni volta. È ricordato.

http://bundler.io/v1.3/man/bundle-install.1.html

Inoltre è necessario impostare le autorizzazioni della directory della cache del Bundler come accennato nei commenti (o eliminarlo).

+0

grazie. quali sono le altre opzioni? – akonsu

+0

Se si desidera utilizzare le gemme installate esistenti: Impostare le autorizzazioni corrette sulla directory gem di sistema, il che significa assegnare le autorizzazioni di scrittura regolare all'utente a /usr/local/lib/ruby/gems/2.1.0. Ma non è davvero una buona idea. Un'altra opzione più semplice sarebbe quella di impostare GEM_HOME su qualcosa come ~/.ruby_gems/nel proprio bashrc o bash_profile (o equivalente). Questo di nuovo significa ignorare la tua attuale installazione. Anche questo influenzerà altre app rubino, se ne hai, in quanto non troverebbero le loro gemme in questo nuovo GEM_HOME. Dovrai installare bundle per tutte le app. – brahmana

22

Oggi ho avuto lo stesso problema nel mio mac. Ho risolto cancellando la cartella ~/.bundle.

Dopo di che corro bundle install --path ~/.bundle e tutto funzionava di nuovo bene.

2

Leggi cosa viene fornito sul sito Web del bundler e non è necessario alcun aiuto esterno.

Le gemme verranno installate nella posizione predefinita del sistema per le gemme. Se le gemme del sistema sono memorizzate in una posizione di proprietà della radice (come in Mac OSX), bundle chiederà la password di root per installarle lì.

Durante l'installazione di gem, Bundler controllerà il fornitore/cache e quindi le gemme del sistema. Se un gioiello non viene memorizzato nella cache o installato, Bundler proverà a installarlo dai sorgenti che hai dichiarato nel tuo Gemfile.

L'opzione --system è l'impostazione predefinita. Passa per tornare dopo aver utilizzato l'opzione --path come descritto di seguito.

Installa le tue dipendenze, anche le gemme che sono già state installate sulle gemme del sistema, in una posizione diversa dal repository gem del sistema. In questo caso, installarli su vendor/bundle.

$ bundle install --path vendor/bundle 

Ulteriori comandi bundle o chiamate a Bundler.setup o Bundler.require ricorderanno questa posizione.

Fonte: http://bundler.io/v1.9/bundle_install.html

-1

chmod 777 /usr/local/lib/ruby/gems/2.3.0/bundler/gems

Problemi correlati