web-dev-qa-db-ja.com

UbuntuでSQLiteバイナリファイルが機能しない、

私は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

4
vicd

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)

これらのライブラリはすべて存在するため(何か不足している場合はlddnot foundを報告します)、sqlite3コマンドを実行しても問題ありません。

4
Jeremy Kerr