[Xapian-discuss] xapian-compact 'undefined symbol' error

Olly Betts olly at survex.com
Sun Aug 2 13:53:52 BST 2009


On Fri, Jul 31, 2009 at 03:31:36PM -0400, Paul Williamson wrote:
> yes, we are using 1.0.13, with libxapian.so.15.6.4.  So, what are our
> options, will upgrading to 1.0.14 fix this, or do we need to wait until
> 1.0.15?

This issue will only manifest if you use xapian-compact and libxapian
*from different releases*.  Ideally, any two 1.0.x versions (except
1.0.0) should be compatible in this way, but they aren't always it
turns out.

Before I cause mass panic (or at least mass unease), for user code the
ABI is fully compatible so you can just upgrade Xapian and everything
should work.  The mistake involves symbols not accessible via the public
API headers, but which xapian-compact uses.

So just make sure you're using xapian-compact and libxapian from the
same release.  Assuming you're on Linux (or a platform with the same
versioning scheme), then libxapian.so.15.6.4 is from 1.0.13.  To see
what version your xapian-compact is from try:

xapian-compact --version

My guess is you have 1.0.13 installed with prefix /usr and an older
release with prefix /usr/local and /usr/local/bin is before /usr/bin
on your path.

Hopefully 1.0.15's library will restore compatibility with older
versions of xapian-compact, but it is more complex than I'd hoped as the
class changed size and layout a few releases ago.

> we are intending to use the merge so we can index smaller, one day databases
> and merge them into a larger running database.  do you know if generally
> this is faster than just continuing to index the larger database?

Yes, it should be faster.  This is how gmane.org updates its search
database.

Cheers,
    Olly



More information about the Xapian-discuss mailing list