Pet*_*rds 5 php sqlite mediawiki
我需要 SQLite 最低版本 3.8 来支持在 Amazon EC2 上安装 MediaWiki。Amazon Linux 基于 CentOS,yum 存储库中提供的最新版本是 SQLite 3.7.17。
从 sqlite.org 提供的下载奇怪地不包括 64 位 Linux。这里有一个 github 存储库,它有一个预构建的 64 位版本,但是当我下载并解压缩它时,它只是 SQLite 的命令行版本。我把它放在/usr/bin:
$ which sqlite3
/usr/bin/sqlite3
$ sqlite3 --version
sqlite3: /lib64/libtinfo.so.5: no version information available (required by sqlite3)
3.26.0 2018-12-01 12:34:55 bf8c1b2b7a5960c282e543b9c293686dccff272512d08865f4600fb58238b4f9
Run Code Online (Sandbox Code Playgroud)
但是我的 MediaWiki 安装仍然抱怨我安装了 SQLite 3.7.17。当我编写一个 PHP one-liner 来自己测试时,我得到:
$ cat x.php
<?php
print_r(SQLite3::version());
?>
Run Code Online (Sandbox Code Playgroud)
运行:
$ php7 x.php
Array
(
[versionString] => 3.7.17
[versionNumber] => 3007017
)
Run Code Online (Sandbox Code Playgroud)
我猜这是因为这些库:
$ sudo find / -name "libsqlite*"
/usr/lib64/libsqlite3.so.0
/usr/lib64/libsqlite3.so.0.8.6
Run Code Online (Sandbox Code Playgroud)
如何下载/重建/或以其他方式安装这些 SQLite3 库的更高版本?
Kri*_*tig 13
我发现最简单的选择是自己构建它。在 Amazon Linux 第 2 版 (Karoo) 上进行了测试。
从此处下载带有配置脚本的最新源代码。目前这是:
curl https://www.sqlite.org/2020/sqlite-autoconf-3320300.tar.gz | tar xzf -
进入创建的目录并使用我们的系统相关选项创建 Makefile:
cd ./sqlite-autoconf-3320300 && ./configure
构建二进制文件
make
安装它
sudo make install
清理
cd .. && rm -r ./sqlite-autoconf-3320300
注意:如果没有合适的 RPM 包,执行此操作远非理想。如果您通过 yum 更新 sqlite,您将覆盖您手动构建的版本。
小智 5
添加到 @halbgut 答案,并进行一些更改:
从此处下载带有配置脚本的最新源代码。目前这是:
curl https://www.sqlite.org/2020/sqlite-autoconf-3320300.tar.gz | tar xzf -
进入创建的目录并使用我们的系统相关选项创建 Makefile:
cd ./sqlite-autoconf-3320300 && ./configure
构建二进制文件
make
安装它
sudo make install
现在,您已经创建了 sqlite3 文件。您需要在找到 sqlite3 文件的所有地方替换它们。
要查找所有这些位置 - 运行以下命令:
whereis sqlite3
sqlite3: /usr/bin/sqlite3 /usr/local/bin/sqlite3 /usr/include/sqlite3.h /opt/c9/bin/sqlite3 /usr/share/man/man1/sqlite3.1.gz
Run Code Online (Sandbox Code Playgroud)
现在在 sqlite 源文件夹中./sqlite-autoconf-3320300,找到sqlite3,sqlite3.h文件并替换为以下 cp 命令
sudo cp sqlite-autoconf-3320300/sqlite3 /usr/local/bin/sqlite3
sudo cp sqlite-autoconf-3320300/sqlite3 /usr/local/bin/sqlite3
sudo cp sqlite-autoconf-3320300/sqlite3 /opt/c9/bin/sqlite3 {I am using c9, hence this file, figure out what file is in the opt/ dir)
sudo cp sqlite-autoconf-3320300/sqlite3.h /usr/include/sqlite3.h
Run Code Online (Sandbox Code Playgroud)
完成后,您将升级 env 和 python-env。现在您只需定义它的路径即可。为此,请使用 usr 中的 local/lib。
export LD_LIBRARY_PATH="/usr/local/lib"
Run Code Online (Sandbox Code Playgroud)
现在你应该有这个:
$ python -c "import sqlite3; print(sqlite3.sqlite_version)"
3.23.3
$ sqlite3 --version
3.32.3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3096 次 |
| 最近记录: |