2014-12-19 15 views
6

Su OSX Yosemite e l'ultima versione di meteora (1.0.1), non importa quante volte lo disinstallo e lo reinstalla, non riesco a farlo funzionare senza sudo. Il mio account utente è un account amministratore. Ma la meteora si rifiuta di correre senza sudo. Gli errori che sto ottenendo sono tutti:Meteor non funzionerà senza Sudo?

-bash: meteor: command not found 

Ho visto alcuni post qui con problemi simili. Ho provato a riparare le autorizzazioni del disco con l'utilità del disco. Ho provato:

sudo chown -R $myUsername /usr/local/bin/meteor 

Non so cos'altro posso fare, perché sembra essere un problema di autorizzazioni. Qualcuno ha qualche suggerimento?

Ulteriori informazioni che potrebbero aiutare:

$ sudo which meteor 
/usr/local/bin/meteor 
$ sudo ls -l /usr/local/bin/meteor 
-rwxrwxrwx 1 root wheel 3528 Dec 18 23:14 /usr/local/bin/meteor 
$ ls -ld /usr/local/bin 
drwx------ 6 502 wheel 204 Dec 18 23:14 /usr/local/bin 

Tra l'altro, ls -l /usr/local/bin/meteor funziona solo con sudo.

+0

chmod 777 meteoriti e aggiungerlo al rispettoso dell'ambiente variabili – tinySandy

+0

@BallPython ogni volta che si fa 'chmod 777', in qualche parte del mondo un gattino muore – janos

+0

@janos - haha, vero), ma i suggerito solo per assicurarsi che funzionerà – tinySandy

risposta

10

Dopo aver chiarito le autorizzazioni del meteor eseguibile e la sua directory di base, il problema è diventato abbastanza chiaro:

  • Il binario Meteor si trova nel /usr/local/bin/meteor
  • tuo manuale non ha avuto il permesso alla directory /usr/local/bin

I passaggi per risolvere:

  1. Aggiungere autorizzazione per la directory di base: sudo chmod +rx /usr/local/bin
  2. Se necessario, aggiungere la directory di base per PATH: PATH=$PATH:/usr/local/bin

di riferimento futuro:

  • Quando si ottiene questo tipo di errore: -bash: XYZ: command not found
    • La prima cosa da verificare è trovare il percorso assoluto di XYZ, per esempio /path/to/XYZ
    • Provare a correre con il percorso assoluto /path/to/XYZ
  • Se in esecuzione con /path/to/XYZ-bash: /path/to/XYZ: Permission denied che significa che hai un problema con le autorizzazioni sul file e/o directory:
    • È necessario lettura e l'autorizzazione exec sul file stesso: sudo chmod +rx /path/to/XYZ
    • è necessaria l'autorizzazione exec su tutti gli elementi di percorso che portano al file: sudo chmod +x /path /path/to
  • Dopo aver sistemato i problemi di autorizzazione, esecuzione con /path/to/XYZ dovrebbe funzionare
  • Dopo aver sistemato i problemi di autorizzazione, se in esecuzione con XYZ (senza percorso completo) ancora non funziona, significa che /path/to non è sulla vostra PATH. Fix con PATH=$PATH:/path/to

Nota: quanto sopra sudo chmod comandi danno i permessi (lettura e exec) a tutti gli utenti: proprietario + gruppo + altri. Nel caso dell'OP (e nei casi più comuni), questo è perfettamente a posto. In situazioni con un'impostazione di autorizzazione più sofisticata, potrebbe essere necessario essere più specifici e utilizzare g+rx anziché +rx.

(per la cronaca)

Se funziona con sudo, e senza sudo si ottiene command not found, questo significa che meteor è sul PATH per root, ma non per l'utente. Per farlo funzionare per il tuo utente, devi trovare il percorso per meteor e aggiungerlo al numero PATH dell'utente.Per esempio:

  1. Diventa root con sudo su -
  2. Trovare il percorso di meteor, comandi eseguire: which meteor
  3. Esci dalla radice (Control-D) per tornare al vostro utente
  4. Aggiungere la directory di base per PATH, ad esempio, se precedente which meteor ti ha dato /usr/local/bin/meteor, quindi fare questo: PATH=$PATH:/usr/local/bin

Dopodiché dovrebbe funzionare con il tuo utente. Per renderlo "permanente", aggiungi l'ultimo passaggio nel tuo ~/.bashrc.

Se questo non funziona, allora forse il tuo utente non ha il permesso di esecuzione sul file. Correzione che con questo comando:

sudo chmod +x /usr/local/bin/meteor 

Dai vostri commenti sembra anche l'utente non dispone dell'autorizzazione per la directory /usr/local/bin stesso. Correzione che con questo comando:

sudo chmod +rx /usr/local/bin 
3

Se non è necessario un account amministratore per eseguirlo, l'account utente standard funziona correttamente. È possibile individuare il file meteor digitando which meteor. Ti dirà quale file viene utilizzato per l'esecuzione.

Provare a rimuovere la cartella .meteor nella vostra home directory, qualcosa come rm -rf ~/.meteor e lo script dalla cartella bin rm /usr/local/bin/meteor o rm 'which meteor'(segna discorso ci sono quelli sopra ~)

e reinstallare meteora senza sudo usando il comando curl https://install.meteor.com/ | sh.

Dovrebbe essere installato con tutte le autorizzazioni corrette ...

+0

Non l'ho mai installato con sudo. Questa è l'unica parte che sono in grado di fare. L'ho appena installato di nuovo, e non riesco nemmeno a rimuovere la cartella usando 'rm/usr/local/bin/meteor', mi sta dicendo" Autorizzazione negata "..." quale meteora "mi indica comunque quella directory. Ho bisogno di usare sudo anche per rimuoverlo. –

+0

quindi utilizzare sudo per rimuovere prima i file – Aaron

+0

Sì, l'ho fatto e reinstallato. La stessa cosa ogni volta che provo a lanciare meteora, creare un'app, ecc., Dice '-bash: meteor: comando non trovato 'a meno che non lo avanzi con sudo. –