Sqlite3 v3.8 yüklü, ancak mac terminali hala varsayılan olarak eski 3.6 sürümünü çalıştırıyor


9

SQLite3 v3.6 ile önceden yüklenmiş olarak gelen OS X 10.6.8 çalıştıran bir Macim var. V3.8'i homebrew kullanarak kurdum. Ancak terminalime "sqlite3" yazdığımda, önceden yüklenmiş eski sürümü çalıştırmaya devam ediyor. Herhangi bir yardım?

PATH değişkeninin onunla bir ilgisi olup olmadığından emin değilim, ancak echo $ PATH'ı çalıştırmak aşağıdakilere neden olur: /usr/local/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin:/ bin: / usr / sbin / sbin: / usr / local / bin: / usr / X11 / bin

Ve SQLite3'ün YENİ sürümü aşağıdaki dizinde bulunur: / usr / local / Cellar / sqlite

İkili yürütülebilir dosyayı masaüstüme de indirdiğimi eklemeliyim ve masaüstümden tıklarsam çalışır, ancak terminalden çalışmaz.

Herhangi bir yardım büyük mutluluk duyacağız?

Yanıtlar:


2

$ PATH

Evet, PATHdeğişkeninizi şu şekilde ayarlamanız gerekir :

$ 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

Bu satırın okunması biraz zor olabilir, bu nedenle burada iki nokta üst üste tarafından bölünür ve her yol kendi satırındadır:

$ 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

Bu $PATH, :kabukların istemde yazdıklarınızı arayan tek tek arama yaptığı, iki nokta üst üste ( ) ile ayrılmış dizinlerin bir listesidir . Sıra önemlidir, böylece sqlitebirden fazla yerde görünürse, bulunduğu ilk dizin nereden kullanılacağıdır.

şeyler nerede bulunur?

typeBelirli bir uygulamanın nereden geldiğini görmek için komutu kullanabilirsiniz .

Örnekler

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

İşte ben -atüm oluşumları gösterecek anahtarı ile kullanıyorum :

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

İşe yaradı! Çok teşekkür ederim. İfadeye birden çok yol eklemeyi bilmiyordum. Şimdi sadece ":" ile ayrılmış oldukları açıktır
BandfuzzAlex

@ user46531 - sorununuz çözüldüğüne sevindim. Soru için teşekkürler.
slm

@ user46531 çalışırken, bu yanlış çözümdür. cevabımı gör.
strugee

11

slm'nin çözümü aslında yanlıştır (kullanılabilirken). Homebrew kullanırken /usr/local/Cellar/*$ PATH'inize eklememelisiniz ; bunun yerine yapmanız gereken /usr/local/bin$ PATH (zaten yapmış olduğunuz) içine eklemeniz ve daha sonra Cellar'daki şeyleri işaretlemenizdir /usr/local/bin. Bu şekilde tasarlandığından, Homebrew bunu sizin için kolayca yapabilir:

brew link sqlite

gerekli bağlantıları otomatik olarak oluşturur. (Homebrew bu sefer sizin için otomatik olarak yapmadı çünkü sqlite sadece fıçı, yani manuel olarak yapmanız gerekiyor).

Yan not / kolay hatırlatma /usr/local/binolarak, sistem yoluna asla eklememelisiniz , yalnızca kullanıcı yolunuzu eklemelisiniz . Bu, programların Apple tarafından sağlanan sqlite'yi beklemesi, ancak Homebrew tarafından sağlanan sürümü bulması ve sorunlara neden olması durumundadır.


1
Muhtemelen iyi bir fikir değil. brew link sqlite: "Uyarı: sqlite sadece fıçı olduğunu ve --force ile bağlantılı olmalıdır"
Marcelo Cantos

Evet - zorla bağlamanın olumsuz sonuçları (varsa) nelerdir? Ne kırabilir? Gerçekten uyarı mesajında ​​bunun bir göstergesi olmalı.
iconoclast
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.