From: Philip Semanchuk on

On Jun 16, 2010, at 1:29 PM, Trevor wrote:

> Running ubuntu 9.04 "jaunty".
>
> When I run make I get the following error:
>
> Python build finished, but the necessary bits to build these
> modules were not found:
> _sqlite3
>
>
> So the easy solution is to just install the missing dependency using
> apt-get, "sudo apt-get -f install libsqlite3-dev" but I get the
> following error:
>
> The following packages have unmet dependencies:
> libsqlite3-dev: Depends: libsqlite3-0 (= 3.6.10-1) but
> 3.6.10-1ubuntu0.2 is to be installed
> E: Broken packages
>
> I tried uninstalling "libsqlite3-0" but synaptic said many things
> needed it (50+).
>
> So now I am stuck. I can't install the missing dependency. And
> therefore I can not install python 3.1.2.
>
> **Any ideas on how to fix the missing libsqlite3-dev dependency?**

Hi Trevor,
I'm a Mac guy using Python 2.x, but a solution that I found might work
for you too.

Python can link to SQLite statically or dynamically. I needed my
Python to use a specific (old) version of SQLite, different from the
one shipped with OS X. I downloaded the SQLite version I needed and
compiled it like this:

sudo ./configure --enable-threadsafe --enable-tempstore --enable-
shared=no --enable-static=yes

That created these static-friendly libs in /usr/local/lib:
libsqlite3.a
libsqlite3.la

So far, so good. Now comes the ugly part...I was unable to find a
configure/Makefile option to force Python to link SQLite statically. I
was working with Python 2.x, and maybe there's a way to do it that I
just didn't find, or maybe Python 3.x offers that option. The trick I
had to resort to was to temporarily rename all of the SQLite dynamic
libraries on my system and then rebuild Python. Since Python only
found the SQLite static libs, it linked them into the Python binary.
After that I could undo my renaming of the SQLite dynamic libs and
restore my system to normal. Good thing nothing was trying to load
those libraries while I had them renamed!

Obviously this is a crude process and there's probably a better way to
do it. In fact, I encourage you to look for a better way to do it and
let us know about it. That way I won't have to risk screwing up my OS
by renaming system libraries. =)

Good luck
Philip