私はsqliteを初めて使用します。wget http://www.sqlite.org/sqlite-Shell-linux-x86-3071300.Zip
を使用してsqliteのバイナリを取得し、Zipファイルからsqlite3を抽出しましたが、機能しません。
私のOSはUbuntu 12.04 64ビットで、sqliteの実行手順は次のとおりです。
u1@newhost:/tmp$ ls -hl sqli*
-rwxrwxr-x 1 u1 u1 568K Jun 11 17:35 sqlite3
-rw-rw-r-- 1 u1 u1 310K Jun 12 02:53 sqlite-Shell-linux-x86-3071300.Zip
u1@newhost:/tmp$ file sqlite3
sqlite3: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x8637c6613a485b675a05f155564cc0eda4b2d3cc, stripped
u1@newhost:/tmp$ ./sqlite3 mydb.db
-bash: ./sqlite3: No such file or directory
u1@newhost:/tmp$
セキュリティ上の理由から、$ PATHから。を削除したので、./sqlite3
を使用して起動します
以下の更新:
この方法はFedora 15 32ビットで機能します
[root@newhostfedora15 ~]# ./sqlite3 test.db
SQLite version 3.7.13 2012-06-11 02:05:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .e
これはCentOS 5.6 64ビットでも動作します
しかし、My Ubuntu 12.04 64ビットのルートでも機能しません。
root@newhost:~# unzip sqlite-Shell-linux-x86-3071300.Zip
Archive: sqlite-Shell-linux-x86-3071300.Zip
inflating: sqlite3
root@newhost:~# ./sqlite3 f
-bash: ./sqlite3: No such file or directory
root@newhost:~# ldd ./sqlite3
not a dynamic executable
結果としてこの問題が発生しました.Ubuntu 12.04 32ビット、CenetOS 5.6 64ビットで動作しますが、Ubuntu 12.04 64ビット、Fedora 17 64ビット、sqliteの32では動作しません-bitバイナリは十分に優れていますが、すべてのプラットフォームで機能するわけではありません。ソースから自分の64ビットバイナリをコンパイルするのが最善であるか、sqlite 64ビットバイナリが公式のWebサイトで提供されている場合は素晴らしいことを心に留めておいてください:P
Ubuntu(および他の多くのLinuxディストリビューション)では、ソフトウェアをインストールする好ましい方法は、パッケージ管理インフラストラクチャを使用することです。 Ubuntuでのパッケージ管理のツールの1つはapt-get
です。
たとえば、sqlite3
をインストールするには:
Sudo apt-get update
Sudo apt-get install sqlite3
これにより、sqliteの公式Ubuntuビルドがダウンロードされ、システムにインストールされます。この方法では、自分でダウンロードしたり、互換性のないバイナリバージョンの問題をデバッグしたりする必要はありません。
[最初のコマンドSudo apt-get update
は、利用可能なパッケージの最新リストをダウンロードするだけです。パッケージをインストールするたびにこれを行う必要はありません]
次に、sqlite3を実行します。
sqlite3
reallyパッケージ化されていないsqliteバイナリを実行する場合は、マシンに必要なすべてのビットがあることを確認する必要があります。アーカイブ内のsqliteバイナリは、動的にリンクされた32ビットの実行可能ファイル(file
を実行することで見たとおり)であるため、少なくとも32ビットの動的リンカーと必要なライブラリが必要です。
動的リンカーの場合、i386
パッケージのlibc6
ビルドが必要です。これは次のものでインストールできます。
Sudo apt-get install libc6:i386
次に、バイナリでldd
を実行して、必要な他のライブラリを表示できるようにする必要があります。たとえば、私のシステムでは:
[jk@pablo sqlite]$ ldd ./sqlite3
linux-gate.so.1 => (0xf76f1000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf76c1000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf750d000)
/lib/ld-linux.so.2 (0xf76f2000)
これらのライブラリはすべて存在するため(何か不足している場合はldd
がnot found
を報告します)、sqlite3
コマンドを実行しても問題ありません。