gdbm compatibility between linux and freebsd

Discussion in 'Python' started by bucket79, Aug 21, 2003.

  1. bucket79

    bucket79 Guest

    here's a problem
    A is redhatlinux and B is freebsd

    $uname -a
    Linux xxxxxxxxx 2.4.7-10 #1 Thu Sep 6 17:27:27 EDT 2001 i686 unknown

    $python -V
    Python 2.2.2

    $ldd /usr/local/lib/python2.2/lib-dynload/ => /usr/lib/ (0x4000a000) => /lib/i686/ (0x40011000)
    /lib/ => /lib/ (0x80000000)

    $uname -a
    FreeBSD 5.1-CURRENT FreeBSD 5.1-CURRENT #0: Mon Aug 18
    11:34:38 KST 2003 xxxxxxxxxxxxxxxxxxxxxx i386

    $python -V
    Python 2.2.3

    $ldd /usr/local/lib/python2.2/site-packages/ => /usr/lib/ (0x2815e000) => /usr/local/lib/ (0x28180000)

    and the problem is gdbm db file is not compatible between two system
    for example
    in system A)
    and copy this file to freebsd system and try to open this file then it
    fails !!
    like this
    in system B)Traceback (most recent call last):
    File "<stdin>", line 1, in ?
    gdbm.error: File read error

    and reverse case is also fails. more precisely say in this case python
    occurs gdbm FATAL error :(

    anyone know what is the casuse of this problem?
    bucket79, Aug 21, 2003
    1. Advertisements

  2. bucket79

    Arne Koewing Guest

    Yes and No ;-)

    I do not think that gdbm-files could be considered 'portable'
    (gdbm surely is, the files are (sometimes) not)

    on freebsd systems `off_t` is (sometimes) 8 bytes, while on most
    others it's just 4 bytes.

    try changing off_t" to "loff_t" in gdbmdefs.h and recompile libgdmb
    (breaking existing databases on the system !!!! )

    or use some other format for interchanging information.

    some people say bdb is not that problematic but I don't know...
    (I'll treat all *db databases non-portable)
    bdb databases can be be dumped to some interchangeable format.

    Arne Koewing, Aug 21, 2003
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.