Installing the latest SQLite on ubuntu
Recently, I needed to install a more recent version of SQLITE because the one in Ubuntu 22.04 did not support json queries compatible with mysql. Interestingly, could not find updated repository so I compiled from source.
Compiling from source does provide latest binaries but the library was not updated
Compile from code
- Head to the official sqlite site to get the latest source code https://sqlite.org/download.html
- as of the writing of this document, it was 3.43. Replace with the name of the file
wget https://sqlite.org/2023/sqlite-autoconf-3430100.tar.gz
tar -xf sqlite-autoconf-3430100.tar.gz
cd sqlite-autoconf-3430100
./configure
make
make install
At this point you should have working cli binaries in the path but no library
Compiled the shared library
from , I used the following code:
gcc \
-Wl,-soname,libsqlite3.so.0 \
-DSQLITE_DISABLE_DIRSYNC \
-DSQLITE_ENABLE_COLUMN_METADATA \
-DSQLITE_ENABLE_FTS3 \
-DSQLITE_ENABLE_RTREE \
-DSQLITE_ENABLE_JSON1 \
-DSQLITE_ENABLE_UNLOCK_NOTIFY \
-DSQLITE_SECURE_DELETE \
-DSQLITE_TEMP_STORE=1 \
-DSQLITE_DTHREADSAFE=1 \
-shared \
-o libsqlite3.so \
-fPIC \
sqlite3.c
This should generate a libslite3.so for you
copying the library
On ubuntu, the folder where the library is architecture dependent so a wildcard helps
cp libsqlite3.so /tmp
pushd /usr/lib/*-linux-gnu
cp /tmp/libsqlite3.so .
ls *sqlite*
#this should give you the name of your sqlite lib, back up
mv libsqlite3.so.0.8.6 old.libsqlite3.so.0.8.6
mv libsqlite3.so libsqlite3.so.0.8.6
#restart apache
systemctl restart apache2
php -r 'phpinfo();'|grep SQLite
at this point if all worked, the version should be the one you installed (in my case 3.43)
if not, overrite the new library with the one you backed up
Have fun!