sqlite3 v3.8をインストールしましたが、macターミナルはデフォルトで古いバージョン3.6を実行します


9

SQLite3 v3.6がプリインストールされたOS X 10.6.8を実行しているMacを持っています。Homebrewを使用してv3.8をインストールしました。しかし、ターミナルで「sqlite3」と入力すると、プレインストールされた古いバージョンが引き続き実行されます。何か助けは?

PATH変数がそれと関係があるかどうかはわかりませんが、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ディレクトリのリストです-コロン(で区切られた:一つ一つを通してシェル検索は、これまであなただけのプロンプトで入力した内容を探して- )。順序は重要なので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 2013

@ user46531-問題が解決してよかったです。質問をありがとう。
slm

@ user46531は実行可能ですが、これは誤ったソリューションです。私の答えを見てください。
2013

11

slmの解は実際には正しくありません(使用可能です)。Homebrewを使用するときは/usr/local/Cellar/*、$ PATHに追加しないでください。代わりに、行うべきことは/usr/local/bin、$ PATH(既に実行済み)に追加して、Cellarの内容をにシンボリックリンクすること/usr/local/binです。このように設計されているので、Homebrewは明らかにこれをかなり簡単に行うことができます。

brew link sqlite

必要なリンクを自動的に作成します。(Homebrewは今回はsqliteがkegのみなので、これを自動的に実行しませんでした。つまり、手動で実行する必要があります)。

副次的な注意事項として、/usr/local/binユーザーパスのみをシステムパスに追加しないでください。これは、プログラムがApple提供のsqliteを期待しているが、Homebrew提供のバージョンを見つけて問題を引き起こしている場合のためです。


1
おそらく良い考えではありません。brew link sqlite: "警告:sqliteはkegのみ
Marcelo Cantos

ええ—それを強制的にリンクすることの負の影響は(もしあれば)何ですか?何が壊れるか?彼らは実際に警告メッセージでそれを示すべきです。
iconoclast
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.