Instaló sqlite3 v3.8, pero el terminal mac aún ejecuta la versión anterior 3.6 por defecto

9

Tengo una Mac con OS X 10.6.8, que viene preinstalada con SQLite3 v3.6. Instalé v3.8 usando homebrew. Pero cuando escribo "sqlite3" en mi terminal, continúa ejecutando la antigua versión preinstalada. ¿Alguna ayuda?

No estoy seguro de si la variable PATH tiene algo que ver con eso, pero ejecutar echo $ PATH da como resultado lo siguiente: /usr/local/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin:/ bin: / usr / sbin: / sbin: / usr / local / bin: / usr / X11 / bin

Y la NUEVA versión de SQLite3 se encuentra en el siguiente directorio: / usr / local / Cellar / sqlite

Debo agregar que también descargué el ejecutable binario en mi escritorio, y eso funciona si hago clic desde mi escritorio, pero no funciona desde el terminal.

Cualquier ayuda sería muy apreciada?

BandfuzzAlex
fuente

Respuestas:

2

$ RUTA

Sí, necesita configurar su PATHvariable de esta manera:

$ 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

Esa línea puede ser un poco difícil de leer, por lo que aquí está dividida por dos puntos y cada ruta está en su propia línea:

$ 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

El $PATHes una lista de directorios - separados por dos puntos ( :) - los cuales el shell busca a través de uno a uno en busca de lo que cada vez que acaba de escribir en el indicador. El orden es importante, por lo que si sqliteaparece en varias ubicaciones, el primer directorio donde se encuentra es donde se utilizará.

¿Dónde están ubicadas las cosas?

Puede usar el typecomando para ver de dónde proviene una aplicación en particular.

Ejemplos

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

Aquí lo estoy usando con el -ainterruptor que mostrará todas las ocurrencias:

$ type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls
slm
fuente
¡Eso funciono! Muchas gracias. No sabía cómo agregar múltiples rutas en la declaración. Ahora está claro que están separados por ":"
BandfuzzAlex
@ user46531: me alegro de que su problema se haya resuelto. Gracias por la pregunta
slm
@ user46531 mientras funciona, esta es la solución incorrecta. mira mi respuesta
Strugee
11

La solución de slm es realmente incorrecta (mientras se puede usar). Cuando use Homebrew no debe agregar /usr/local/Cellar/*a su $ PATH; en cambio, lo que debe hacer es agregar /usr/local/bina su $ PATH (que ya ha hecho) y luego vincular las cosas en la bodega /usr/local/bin. Dado que está diseñado de esta manera, Homebrew obviamente puede hacer esto fácilmente por usted:

brew link sqlite

creará automáticamente los enlaces necesarios. (Homebrew no hizo esto automáticamente por usted esta vez porque sqlite es solo de barril, lo que significa que debe hacerlo manualmente).

Como nota al margen / recordatorio amigable, nunca debe agregar /usr/local/bina la ruta del sistema, solo su ruta de usuario. Esto es en el caso de que los programas esperen el sqlite proporcionado por Apple pero encuentren la versión proporcionada por Homebrew, lo que causa problemas.

Strugee
fuente
1
Posiblemente no sea una buena idea. brew link sqlite: "Advertencia: sqlite es solo de barril y debe vincularse con --force"
Marcelo Cantos
Sí, ¿cuáles son las consecuencias negativas (si las hay) de vincularlo a la fuerza? ¿Qué podría romperse? Realmente deberían dar alguna indicación de eso en el mensaje de advertencia.
iconoclasta