Installato sqlite3 v3.8, ma Mac Terminal esegue ancora la vecchia versione 3.6 per impostazione predefinita


9

Ho un Mac con OS X 10.6.8, preinstallato con SQLite3 v3.6. Ho installato v3.8 usando homebrew. Ma quando digito "sqlite3" nel mio terminale continua a eseguire la vecchia versione preinstallata. Qualsiasi aiuto?

Non sono sicuro che la variabile PATH abbia qualcosa a che fare con esso, ma eseguendo echo $ PATH si ottiene quanto segue: /usr/local/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin:/ bin: / usr / sbin: / sbin: / usr / local / bin: / usr / X11 / bin

E la NUOVA versione di SQLite3 è nella seguente directory: / usr / local / Cellar / sqlite

Dovrei aggiungere che ho scaricato anche l'eseguibile binario sul mio desktop e che funziona se clicco dal mio desktop, ma non funziona dal terminale.

Qualsiasi aiuto sarebbe molto apprezzato?

Risposte:


2

$ PATH

Sì, è necessario impostare la PATHvariabile in questo modo:

$ export PATH=/usr/local/Cellar/sqlite:/usr/local/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

Quella riga può essere un po 'complicata da leggere, quindi qui è divisa dai due punti e ogni percorso è sulla sua riga:

$ awk -v addPath="$1" 'BEGIN{RS=":";ORS=addPath "\n"}{$1=$1}1' <<< $PATH
/usr/local/Cellar/sqlite
/usr/local/bin
/Library/Frameworks/Python.framework/Versions/2.7/bin
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
/usr/X11/bin

C'è $PATHun elenco di directory - separate da due punti ( :) - che la shell cerca una per una cercando ciò che hai appena digitato al prompt. L'ordine è importante, quindi se viene sqlitevisualizzata in più posizioni, la prima directory in cui si trova è quella in cui verrà utilizzata.

dove si trovano le cose?

Puoi usare il typecomando per vedere da dove proviene una particolare applicazione.

Esempi

$ type -a sqlite3 
sqlite3 is /usr/bin/sqlite3

Qui lo sto usando con l' -ainterruttore che mostrerà tutte le occorrenze:

$ type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls

Ha funzionato! Grazie mille. Non sapevo come aggiungere più percorsi nell'istruzione. Ora è chiaro che sono appena separati da ":"
BandfuzzAlex

@ user46531 - felice che il tuo problema sia stato risolto. Grazie per la domanda
slm

@utente46531 mentre funzionante, questa è la soluzione errata. vedi la mia risposta.
Strugee,

11

La soluzione di slm è in realtà errata (mentre utilizzabile). Quando usi Homebrew non dovresti aggiungere /usr/local/Cellar/*$ PATH; invece, ciò che dovresti fare è aggiungere /usr/local/bin$ PATH (cosa che hai già fatto) e poi ricollegare le cose nella Cantina /usr/local/bin. Dal momento che è progettato in questo modo, Homebrew può ovviamente farlo abbastanza facilmente per te:

brew link sqlite

creerà automagicamente i collegamenti necessari. (Homebrew non l'ha fatto automaticamente per te questa volta perché sqlite è solo per il barile, il che significa che devi farlo manualmente).

Come nota a margine / promemoria amichevole, non si dovrebbe mai aggiungere /usr/local/binal percorso di sistema, solo il percorso dell'utente. Questo è nel caso in cui i programmi prevedano il sqlite fornito da Apple ma trovano la versione fornita da Homebrew, causando problemi.


1
Forse non è una buona idea. brew link sqlite: "Attenzione: sqlite è solo keg e deve essere collegato a --force"
Marcelo Cantos,

Sì, quali sono le conseguenze negative (se ce ne sono) del collegamento forzato? Cosa potrebbe rompersi? Dovrebbero davvero dare qualche indicazione al riguardo nel messaggio di avviso.
iconoclasta,
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.