ติดตั้ง sqlite3 v3.8 แต่เทอร์มินัล mac ยังคงรันเวอร์ชันเก่า 3.6 โดยค่าเริ่มต้น


9

ฉันมี Mac ที่ใช้ OS X 10.6.8 ซึ่งติดตั้งมาพร้อมกับ SQLite3 v3.6 ฉันติดตั้ง v3.8 โดยใช้ homebrew แต่เมื่อฉันพิมพ์ "sqlite3" ในเทอร์มินัลของฉันมันจะยังคงรันเวอร์ชันเก่าที่ติดตั้งไว้แล้ว ความช่วยเหลือใด ๆ

ถ้าไม่แน่ใจว่าตัวแปรเส้นทางมีอะไรจะทำอย่างไรกับมัน แต่ทำงาน echo $ PATH ผลในต่อไปนี้: /usr/local/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin:/ bin: / usr / sbin: / sbin: / usr / local / bin: / usr / X11 / bin

และรุ่นใหม่ของ SQLite3 อยู่ในไดเรกทอรีดังต่อไปนี้: / usr / local / Cellar / SQLite

ฉันควรเพิ่มว่าฉันยังดาวน์โหลดไบนารีปฏิบัติการบนเดสก์ท็อปของฉันและที่ทำงานถ้าฉันคลิกจากเดสก์ท็อปของฉัน แต่ไม่ทำงานจากเทอร์มินัล

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก?

คำตอบ:


2

$ PATH

ใช่คุณต้องตั้งค่า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คือรายการของไดเรกทอรี - คั่นด้วย colons ( :) - ซึ่งเชลล์ค้นหาผ่านทีละคนมองหาสิ่งที่คุณเพิ่งพิมพ์ที่พรอมต์ การสั่งซื้อมีความสำคัญดังนั้นหาก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 ในขณะที่ใช้การได้นี่เป็นวิธีแก้ไขที่ไม่ถูกต้อง เห็นคำตอบของฉัน
strugee

11

โซลูชันของ slm ไม่ถูกต้องจริง (ในขณะที่ใช้งานได้) เมื่อใช้ Homebrew คุณไม่ควรเพิ่ม/usr/local/Cellar/*ใน $ PATH ของคุณ แทนสิ่งที่คุณควรทำคือคุณควรเพิ่ม/usr/local/binเป็น $ เส้นทางของคุณ (ซึ่งคุณได้ทำมาแล้ว) และแล้วสิ่งที่ symlink /usr/local/binในห้องใต้ดินเข้า เนื่องจากได้รับการออกแบบในลักษณะนี้ Homebrew สามารถทำสิ่งนี้ได้อย่างง่ายดายสำหรับคุณ:

brew link sqlite

จะสร้างลิงก์ที่ต้องการโดยอัตโนมัติ (Homebrew ไม่ได้ทำสิ่งนี้โดยอัตโนมัติสำหรับคุณในครั้งนี้เนื่องจาก sqlite เป็นถังเท่านั้นหมายความว่าคุณต้องทำด้วยตนเอง)

เพื่อเป็นการเตือนด้านข้าง / การแจ้งเตือนที่เป็นมิตรคุณไม่ควรเพิ่ม/usr/local/binเส้นทางของระบบเพียงเส้นทางผู้ใช้ของคุณ นี่เป็นกรณีที่โปรแกรมคาดว่า sqlite ที่ Apple เตรียมไว้ให้ แต่หา Homebrew ที่เตรียมไว้ให้ซึ่งทำให้เกิดปัญหา


1
อาจจะไม่ได้เป็นความคิดที่ดี ชงลิงค์ sqlite: "คำเตือน: sqlite เป็นถังเท่านั้นและต้องเชื่อมโยงกับ
Marcelo Cantos

ใช่ - อะไรคือผลกระทบด้านลบ (ถ้ามี) ของการเชื่อมโยงโดยการบังคับใช้ อะไรจะแตก พวกเขาควรระบุสิ่งนั้นในข้อความเตือน
iconoclast
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.