Бинарный файл SQLite не работает на моей Ubuntu,

Я новичок в sqlite, я только что получил двоичный файл sqlite с помощью wget http://www.sqlite.org/sqlite-shell-linux-x86-3071300.zip, затем извлек sqlite3 из zip-файла, он не работает, это сводит меня с ума, ПОМОГИТЕ.

Моя ОС - Ubuntu 12.04 64-bit, шаги выполнения 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 для запуска

ОБНОВЛЕНИЕ НИЖЕ :

этот способ работает для 32-битной Fedora 15

[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-bit

НО НЕ РАБОТАЕТ для root на My Ubuntu 12.04 64-bit,

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-bit, CenetOS 5.6 64-bit, НЕ РАБОТАЕТ на Ubuntu 12.04 64-bit, Fedora 17 64-bit, 32-битный двоичный файл sqlite достаточно хорош, хотя и работать для каждой платформы. Я буду помнить, что лучше всего скомпилировать мой собственный 64-битный двоичный файл из исходного кода, или будет здорово, если sqlite 64-битный двоичный файл будет предоставлен через официальный веб-сайт: P

4
задан 13 June 2012 в 19:27

1 ответ

В Ubuntu (как и во многих других дистрибутивах Linux) предпочтительным способом установки программного обеспечения является использование инфраструктуры управления пакетами. Одним из инструментов для управления пакетами в Ubuntu является apt-get.

Например, чтобы установить sqlite3:

sudo apt-get update
sudo apt-get install sqlite3

, вы скачаете официальную сборку Ubuntu sqlite и установите ее в своей системе. Таким образом, вам не придется самостоятельно загружать файлы или устранять проблемы с несовместимыми двоичными версиями.

[Первая команда, sudo apt-get update просто загружает самый последний список доступных пакетов. Вам не нужно делать это каждый раз, когда вы хотите установить пакет]

Затем вы можете просто запустить sqlite3:

sqlite3

В случае, если вы действительно Чтобы запустить неупакованный двоичный файл 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.

0
ответ дан 13 June 2012 в 19:27

Другие вопросы по тегам:

Похожие вопросы: