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.