正确安装具有FTS5支持的sqlite3

卡洛斯·维加(Carlos Vega):

我正在开发一个Python工具,该工具使用带有FTS5(全文搜索)的sqlite3虚拟表我想知道如何从tarball(或任何其他方式)正确安装工具正常工作所需的要求,以便为便携性打包它们。

目前,我设法安装了最新版本的sqlite tarball但是,当我执行时:

python3 -c "import sqlite3; print(sqlite3.sqlite_version)"
# or
python2 -c "import sqlite3; print(sqlite3.sqlite_version)"

我得到3.11.0,而sqlite3 --version返回:3.22.0 2018-01-22 18:45:57 0c55d179733b46d8d0ba4d88e01a25e10677046ee3da1d5b1581e86726f2alt1

pragma compile_options;获得的系统版本sqlite3 3.22确实支持FTS5

COMPILER=gcc-5.4.0 20160609
ENABLE_DBSTAT_VTAB
ENABLE_FTS4
**ENABLE_FTS5**
ENABLE_JSON1
ENABLE_RTREE
ENABLE_STMTVTAB
ENABLE_UNKNOWN_SQL_FUNCTION
HAVE_ISNAN
THREADSAFE=1

但是,使用此脚本的python版本返回以下内容:

[(u'ENABLE_COLUMN_METADATA',), (u'ENABLE_DBSTAT_VTAB',), (u'ENABLE_FTS3',), (u'ENABLE_FTS3_PARENTHESIS',), (u'ENABLE_JSON1',), (u'ENABLE_LOAD_EXTENSION',), (u'ENABLE_RTREE',), (u'ENABLE_UNLOCK_NOTIFY',), (u'ENABLE_UPDATE_DELETE_LIMIT',), (u'HAVE_ISNAN',), (u'LIKE_DOESNT_MATCH_BLOBS',), (u'MAX_SCHEMA_RETRY=25',), (u'OMIT_LOOKASIDE',), (u'SECURE_DELETE',), (u'SOUNDEX',), (u'SYSTEM_MALLOC',), (u'TEMP_STORE=1',), (u'THREADSAFE=1',)]

因此,我的问题是

  1. 有什么办法可以在sql和linux系统中通过sqlite3 FTS5支持为我的应用程序制作linux可移植程序包?
  2. 有什么方法可以将python模块sqlite3链接到特定的sqlite3路径?

我在Ubuntu 16.04 LTS中尝试了所有这些方法,但我也希望在CentOS 7上也能正常工作。

提前非常感谢您。

从我做过的压缩包中获取有关安装的更多详细信息:

wget "https://www.sqlite.org/src/tarball/sqlite.tar.gz?r=release" -O sqlite.tar.gz
tar -xzvf sqlite.tar.gz
cd sqlite
./configure --enable-fts5
make
sudo make install
城市:

我认为是一个链接问题!我与您遵循相同的安装步骤,并获得了相同的结果:

$ python ./test.py 
[(u'ENABLE_COLUMN_METADATA',), (u'ENABLE_FTS3',), (u'ENABLE_RTREE',), (u'ENABLE_UNLOCK_NOTIFY',), (u'ENABLE_UPDATE_DELETE_LIMIT',), (u'MAX_SCHEMA_RETRY=25',), (u'OMIT_LOOKASIDE',), (u'SECURE_DELETE',), (u'SOUNDEX',), (u'SYSTEM_MALLOC',), (u'TEMP_STORE=1',), (u'THREADSAFE=1',)]
NO

但是,当您在Linux上通过configure / make / make install进行安装时,通常会进入/usr/local/lib为了确保python在运行时针对.so我使用的正确链接LD_LIBRARY_PATH在这种情况下,我得到了:

$ LD_LIBRARY_PATH=/usr/local/lib python ./test.py 
[(u'COMPILER=gcc-4.8.5',), (u'ENABLE_FTS5',), (u'HAVE_ISNAN',), (u'TEMP_STORE=1',), (u'THREADSAFE=1',)]
YES

此外,在安装库时,您可能必须进行更新ldconfig在我的系统上(Ubuntu 14.04):

$ sudo ldconfig
$ python ./test.py 
[(u'COMPILER=gcc-4.8.5',), (u'ENABLE_FTS5',), (u'HAVE_ISNAN',), (u'TEMP_STORE=1',), (u'THREADSAFE=1',)]
YES

注意,不再需要使用LD_LIBRARY_PATH,并且指向正确库的python链接。为此,您需要将/usr/local/lib文件夹放在您的ld.so.conf某处...对于我来说,这是在:

$ grep -ir local /etc/ld.so.conf.d/
/etc/ld.so.conf.d/libc.conf:/usr/local/lib

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章