स्थापित sqlite3 v3.8, लेकिन मैक टर्मिनल अभी भी डिफ़ॉल्ट रूप से पुराने संस्करण 3.6 चलाता है


9

मेरे पास एक मैक चल रहा है OS X 10.6.8, जो SQLite3 v3.6 के साथ पहले से इंस्टॉल आता है। मैंने होमब्रे का उपयोग करके v3.8 स्थापित किया। लेकिन जब मैं अपने टर्मिनल में "sqlite3" टाइप करता हूं तो यह पुराने प्री-इंस्टॉल किए गए संस्करण को चलाना जारी रखता है। कोई मदद?

यह निश्चित नहीं है कि PATH चर का इससे कोई लेना-देना है, लेकिन प्रतिध्वनि $ PATH का परिणाम निम्न में है: /usr/local/bin:/Library/Frameworks/Python.framework/Vers//2.7/bin:/usr/bin:/ बिन: / usr / sbin: / sbin: / usr / स्थानीय / बिन: / usr / X11 / बिन

और SQLite3 का नया संस्करण निम्न निर्देशिका में है: / usr / स्थानीय / तहखाने / sqlite

मुझे यह जोड़ना चाहिए कि मैंने अपने डेस्कटॉप पर द्विआधारी निष्पादन योग्य डाउनलोड किया है, और यह काम करता है यदि मैं अपने डेस्कटॉप से ​​क्लिक करता हूं, लेकिन टर्मिनल से काम नहीं करता है।

किसी भी तरह की सहायता का स्वागत किया जाएगा?

जवाबों:


2

$ पथ

हां आपको अपना PATHचर सेट करने की आवश्यकता है जैसे:

$ 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

यह रेखा पढ़ने में थोड़ी मुश्किल हो सकती है इसलिए यहाँ इसे कॉलोनों द्वारा विभाजित किया गया है, और प्रत्येक पथ अपनी लाइन पर है:

$ 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

$PATHनिर्देशिका की एक सूची है - कोलन (द्वारा अलग :जो एक के बाद एक के माध्यम से खोल खोजें क्या कभी तुम सिर्फ प्रॉम्प्ट पर टाइप किया की तलाश में -)। यह आदेश मायने रखता है यदि sqliteकई स्थानों पर यह पहली निर्देशिका में दिखाई देता है जहां यह पाया जाता है कि यह कहाँ से उपयोग किया जाएगा।

चीजें कहाँ स्थित हैं?

आप typeकमांड का उपयोग यह देखने के लिए कर सकते हैं कि कोई विशेष एप्लिकेशन कहां से आ रहा है।

उदाहरण

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

यहाँ मैं इसे -aस्विच के साथ उपयोग कर रहा हूँ जो सभी घटनाओं को दिखाएगा:

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

वह काम किया! बहुत बहुत धन्यवाद। मुझे नहीं पता था कि कथन में कई पथ कैसे जोड़े जाएँ। अब यह स्पष्ट है कि वे ":" से अलग हो गए हैं
BandfuzzAlex

@ user46531 - खुशी है कि आपकी समस्या हल हो गई। सवाल के लिए धन्यवाद।
SLM

@ user46531 काम करते समय, यह गलत समाधान है। मेरा जवाब देखिए।
स्ट्रगलर

11

एसएलएम का समाधान वास्तव में गलत है (जब उपयोग करने योग्य)। Homebrew का उपयोग करते समय आपको /usr/local/Cellar/*अपने $ PATH में नहीं जोड़ना चाहिए ; इसके बजाय आपको क्या करना चाहिए, आपको /usr/local/binअपने $ PATH (जो आपने पहले ही किया है) में जोड़ना चाहिए और फिर सेलर में चीजों को सिमिलर करना चाहिए /usr/local/bin। चूंकि यह इस तरह से डिज़ाइन किया गया है, इसलिए Homebrew स्पष्ट रूप से आपके लिए यह बहुत आसानी से कर सकता है:

brew link sqlite

स्वचालित रूप से आवश्यक लिंक बनाएंगे। (होमब्रे ने इस बार आपके लिए स्वचालित रूप से ऐसा नहीं किया क्योंकि साइक्लाइट केवल केग है, जिसका अर्थ है कि आपको इसे मैन्युअल रूप से करने की आवश्यकता है)।

साइड नोट / फ्रेंडली रिमाइंडर के रूप में, आपको /usr/local/binसिस्टम पथ, केवल अपने उपयोगकर्ता पथ से नहीं जोड़ना चाहिए । यह ऐसे मामलों में है, जो Apple द्वारा प्रदान किए गए साइक्लाइट की अपेक्षा करते हैं, लेकिन होमब्रे-प्रदान किए गए संस्करण को ढूंढते हैं, जिससे समस्याएं होती हैं।


1
संभवतः एक अच्छा विचार नहीं है। शराब की भठ्ठी लिंक sqlite: "चेतावनी: sqlite केवल केग है और इसे --force के साथ जोड़ा जाना चाहिए"
Marcelo Cantos

हाँ-इसे जबरन जोड़ने के नकारात्मक परिणाम (यदि कोई हो) क्या हैं? क्या टूट सकता है? उन्हें चेतावनी संदेश में वास्तव में कुछ संकेत देना चाहिए।
आइकनोकॉस्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.