diff options
author | Panu Matilainen <pmatilai@redhat.com> | 2008-03-07 14:05:28 +0200 |
---|---|---|
committer | Panu Matilainen <pmatilai@redhat.com> | 2008-03-07 14:05:28 +0200 |
commit | 2414d522bcfbd0ba9e6115eb7e2a3ba056ac2795 (patch) | |
tree | a995b380eb055a041232681c626cef5af30dccfc /db/perl/DB_File/README | |
parent | 501197e5ef5ce8687aaf8bd4352f296bb7a5c0e8 (diff) | |
download | librpm-tizen-2414d522bcfbd0ba9e6115eb7e2a3ba056ac2795.tar.gz librpm-tizen-2414d522bcfbd0ba9e6115eb7e2a3ba056ac2795.tar.bz2 librpm-tizen-2414d522bcfbd0ba9e6115eb7e2a3ba056ac2795.zip |
Remove BDB copy from the repository, it doesn't belong there
Diffstat (limited to 'db/perl/DB_File/README')
-rw-r--r-- | db/perl/DB_File/README | 586 |
1 files changed, 0 insertions, 586 deletions
diff --git a/db/perl/DB_File/README b/db/perl/DB_File/README deleted file mode 100644 index 31c000cbf..000000000 --- a/db/perl/DB_File/README +++ /dev/null @@ -1,586 +0,0 @@ - DB_File - - Version 1.815 - - 4th February 2007 - - Copyright (c) 1995-2007 Paul Marquess. All rights reserved. This - program is free software; you can redistribute it and/or modify - it under the same terms as Perl itself. - - -IMPORTANT NOTICE -================ - -If are using the locking technique described in older versions of -DB_File, please read the section called "Locking: The Trouble with fd" -in DB_File.pm immediately. The locking method has been found to be -unsafe. You risk corrupting your data if you continue to use it. - -DESCRIPTION ------------ - -DB_File is a module which allows Perl programs to make use of the -facilities provided by Berkeley DB version 1. (DB_File can be built -version 2, 3 or 4 of Berkeley DB, but it will only support the 1.x -features), - -If you want to make use of the new features available in Berkeley DB -2.x, 3.x or 4.x, use the Perl module BerkeleyDB instead. - -Berkeley DB is a C library which provides a consistent interface to a -number of database formats. DB_File provides an interface to all three -of the database types (hash, btree and recno) currently supported by -Berkeley DB. - -For further details see the documentation included at the end of the -file DB_File.pm. - -PREREQUISITES -------------- - -Before you can build DB_File you must have the following installed on -your system: - - * Perl 5.004_05 or greater. - - * Berkeley DB. - - The official web site for Berkeley DB is http://www.sleepycat.com. - The latest version of Berkeley DB is always available there. It - is recommended that you use the most recent version available at - the Sleepycat site. - - The one exception to this advice is where you want to use DB_File - to access database files created by a third-party application, like - Sendmail or Netscape. In these cases you must build DB_File with a - compatible version of Berkeley DB. - - If you want to use Berkeley DB 2.x, you must have version 2.3.4 - or greater. If you want to use Berkeley DB 3.x or 4.x, any version - will do. For Berkeley DB 1.x, use either version 1.85 or 1.86. - - -BUILDING THE MODULE -------------------- - -Assuming you have met all the prerequisites, building the module should -be relatively straightforward. - -Step 1 : If you are running either Solaris 2.5 or HP-UX 10 and want - to use Berkeley DB version 2, 3 or 4, read either the Solaris Notes - or HP-UX Notes sections below. If you are running Linux please - read the Linux Notes section before proceeding. - -Step 2 : Edit the file config.in to suit you local installation. - Instructions are given in the file. - -Step 3 : Build and test the module using this sequence of commands: - - perl Makefile.PL - make - make test - - - NOTE: - If you have a very old version of Berkeley DB (i.e. pre 1.85), - three of the tests in the recno test harness may fail (tests 51, - 53 and 55). You can safely ignore the errors if you're never - going to use the broken functionality (recno databases with a - modified bval). Otherwise you'll have to upgrade your DB - library. - - -INSTALLATION ------------- - - make install - -UPDATES -======= - -The most recent version of DB_File is always available at - - http://www.cpan.org/modules/by-module/DB_File/ - -TROUBLESHOOTING -=============== - -Here are some of the common problems people encounter when building -DB_File. - -Missing db.h or libdb.a ------------------------ - -If you get an error like this: - - cc -c -I/usr/local/include -Dbool=char -DHAS_BOOL - -O2 -DVERSION=\"1.64\" -DXS_VERSION=\"1.64\" -fpic - -I/usr/local/lib/perl5/i586-linux/5.00404/CORE -DmDB_Prefix_t=size_t - -DmDB_Hash_t=u_int32_t DB_File.c - DB_File.xs:101: db.h: No such file or directory - -or this: - - LD_RUN_PATH="/lib" cc -o blib/arch/auto/DB_File/DB_File.so -shared - -L/usr/local/lib DB_File.o -L/usr/local/lib -ldb - ld: cannot open -ldb: No such file or directory - -This symptom can imply: - - 1. You don't have Berkeley DB installed on your system at all. - Solution: get & install Berkeley DB. - - 2. You do have Berkeley DB installed, but it isn't in a standard place. - Solution: Edit config.in and set the LIB and INCLUDE variables to point - to the directories where libdb.a and db.h are installed. - - - - -Undefined symbol db_version ---------------------------- - -DB_File seems to have built correctly, but you get an error like this -when you run the test harness: - - $ make test - PERL_DL_NONLAZY=1 /usr/bin/perl5.00404 -I./blib/arch -I./blib/lib - -I/usr/local/lib/perl5/i586-linux/5.00404 -I/usr/local/lib/perl5 -e 'use - Test::Harness qw(&runtests $verbose); $verbose=0; runtests @ARGV;' t/*.t - t/db-btree..........Can't load './blib/arch/auto/DB_File/DB_File.so' for - module DB_File: ./blib/arch/auto/DB_File/DB_File.so: undefined symbol: - db_version at /usr/local/lib/perl5/i586-linux/5.00404/DynaLoader.pm - line 166. - - at t/db-btree.t line 21 - BEGIN failed--compilation aborted at t/db-btree.t line 21. - dubious Test returned status 2 (wstat 512, 0x200) - -This error usually happens when you have two version of Berkeley DB -installed on your system -- specifically, if you have both version 1 and -a newer version (i.e. version 2 or better) of Berkeley DB installed. If -DB_File is built using the db.h for the newer Berkeley DB and the version -1 Berkeley DB library you will trigger this error. Unfortunately the two -versions aren't compatible with each other. The undefined symbol error is -caused because Berkeley DB version 1 doesn't have the symbol db_version. - -Solution: Setting the LIB & INCLUDE variables in config.in to point to the - correct directories can sometimes be enough to fix this - problem. If that doesn't work the easiest way to fix the - problem is to either delete or temporarily rename the copies - of db.h and libdb.a that you don't want DB_File to use. - - -Undefined symbol dbopen ------------------------ - -DB_File seems to have built correctly, but you get an error like this -when you run the test harness: - - ... - t/db-btree..........Can't load 'blib/arch/auto/DB_File/DB_File.so' for - module DB_File: blib/arch/auto/DB_File/DB_File.so: undefined symbol: - dbopen at /usr/local/lib/perl5/5.6.1/i586-linux/DynaLoader.pm line 206. - at t/db-btree.t line 23 - Compilation failed in require at t/db-btree.t line 23. - ... - -This error usually happens when you have both version 1 and a more recent -version of Berkeley DB installed on your system and DB_File attempts -to build using the db.h for Berkeley DB version 1 and the newer version -library. Unfortunately the two versions aren't compatible with each -other. The undefined symbol error is actually caused because versions -of Berkeley DB newer than version 1 doesn't have the symbol dbopen. - -Solution: Setting the LIB & INCLUDE variables in config.in to point to the - correct directories can sometimes be enough to fix this - problem. If that doesn't work the easiest way to fix the - problem is to either delete or temporarily rename the copies - of db.h and libdb.a that you don't want DB_File to use. - - -Incompatible versions of db.h and libdb ---------------------------------------- - -BerkeleyDB seems to have built correctly, but you get an error like this -when you run the test harness: - - $ make test - PERL_DL_NONLAZY=1 /home/paul/perl/install/bin/perl5.00560 -Iblib/arch - -Iblib/lib -I/home/paul/perl/install/5.005_60/lib/5.00560/i586-linux - -I/home/paul/perl/install/5.005_60/lib/5.00560 -e 'use Test::Harness - qw(&runtests $verbose); $verbose=0; runtests @ARGV;' t/*.t - t/db-btree.......... - DB_File needs compatible versions of libdb & db.h - you have db.h version 2.3.7 and libdb version 2.7.5 - BEGIN failed--compilation aborted at t/db-btree.t line 21. - ... - -Another variation on the theme of having two versions of Berkeley DB on -your system. - -Solution: Setting the LIB & INCLUDE variables in config.in to point to the - correct directories can sometimes be enough to fix this - problem. If that doesn't work the easiest way to fix the - problem is to either delete or temporarily rename the copies - of db.h and libdb.a that you don't want BerkeleyDB to use. - If you are running Linux, please read the Linux Notes section - below. - - -Solaris build fails with "language optional software package not installed" ---------------------------------------------------------------------------- - -If you are trying to build this module under Solaris and you get an -error message like this - - /usr/ucb/cc: language optional software package not installed - -it means that Perl cannot find the C compiler on your system. The cryptic -message is just Sun's way of telling you that you haven't bought their -C compiler. - -When you build a Perl module that needs a C compiler, the Perl build -system tries to use the same C compiler that was used to build perl -itself. In this case your Perl binary was built with a C compiler that -lived in /usr/ucb. - -To continue with building this module, you need to get a C compiler, -or tell Perl where your C compiler is, if you already have one. - -Assuming you have now got a C compiler, what you do next will be dependant -on what C compiler you have installed. If you have just installed Sun's -C compiler, you shouldn't have to do anything. Just try rebuilding -this module. - -If you have installed another C compiler, say gcc, you have to tell perl -how to use it instead of /usr/ucb/cc. - -This set of options seems to work if you want to use gcc. Your mileage -may vary. - - perl Makefile.PL CC=gcc CCCDLFLAGS=-fPIC OPTIMIZE=" " - make test - -If that doesn't work for you, it's time to make changes to the Makefile -by hand. Good luck! - - - -Solaris build fails with "gcc: unrecognized option `-KPIC'" ------------------------------------------------------------ - -You are running Solaris and you get an error like this when you try to -build this Perl module - - gcc: unrecognized option `-KPIC' - -This symptom usually means that you are using a Perl binary that has been -built with the Sun C compiler, but you are using gcc to build this module. - -When Perl builds modules that need a C compiler, it will attempt to use -the same C compiler and command line options that was used to build perl -itself. In this case "-KPIC" is a valid option for the Sun C compiler, -but not for gcc. The equivalent option for gcc is "-fPIC". - -The solution is either: - - 1. Build both Perl and this module with the same C compiler, either - by using the Sun C compiler for both or gcc for both. - - 2. Try generating the Makefile for this module like this perl - - perl Makefile.PL CC=gcc CCCDLFLAGS=-fPIC OPTIMIZE=" " LD=gcc - make test - - This second option seems to work when mixing a Perl binary built - with the Sun C compiler and this module built with gcc. Your - mileage may vary. - - - - -Linux Notes ------------ - -Some older versions of Linux (e.g. RedHat 6, SuSe 6) ship with a C library -that has version 2.x of Berkeley DB linked into it. This makes it -difficult to build this module with anything other than the version of -Berkeley DB that shipped with your Linux release. If you do try to use -a different version of Berkeley DB you will most likely get the error -described in the "Incompatible versions of db.h and libdb" section of -this file. - -To make matters worse, prior to Perl 5.6.1, the perl binary itself -*always* included the Berkeley DB library. - -If you want to use a newer version of Berkeley DB with this module, the -easiest solution is to use Perl 5.6.1 (or better) and Berkeley DB 3.x -(or better). - -There are two approaches you can use to get older versions of Perl to -work with specific versions of Berkeley DB. Both have their advantages -and disadvantages. - -The first approach will only work when you want to build a version of -Perl older than 5.6.1 along with Berkeley DB 3.x. If you want to use -Berkeley DB 2.x, you must use the next approach. This approach involves -rebuilding your existing version of Perl after applying an unofficial -patch. The "patches" directory in the this module's source distribution -contains a number of patch files. There is one patch file for every -stable version of Perl since 5.004. Apply the appropriate patch to your -Perl source tree before re-building and installing Perl from scratch. -For example, assuming you are in the top-level source directory for -Perl 5.6.0, the command below will apply the necessary patch. Remember -to replace the path shown below with one that points to this module's -patches directory. - - patch -p1 -N </path/to/DB_File/patches/5.6.0 - -Now rebuild & install perl. You should now have a perl binary that can -be used to build this module. Follow the instructions in "BUILDING THE -MODULE", remembering to set the INCLUDE and LIB variables in config.in. - - -The second approach will work with both Berkeley DB 2.x and 3.x. -Start by building Berkeley DB as a shared library. This is from -the Berkeley DB build instructions: - - Building Shared Libraries for the GNU GCC compiler - - If you're using gcc and there's no better shared library example for - your architecture, the following shared library build procedure will - probably work. - - Add the -fpic option to the CFLAGS value in the Makefile. - - Rebuild all of your .o files. This will create a Berkeley DB library - that contains .o files with PIC code. To build the shared library, - then take the following steps in the library build directory: - - % mkdir tmp - % cd tmp - % ar xv ../libdb.a - % gcc -shared -o libdb.so *.o - % mv libdb.so .. - % cd .. - % rm -rf tmp - - Note, you may have to change the gcc line depending on the - requirements of your system. - - The file libdb.so is your shared library - -Once you have built libdb.so, you will need to store it somewhere safe. - - cp libdb.so /usr/local/BerkeleyDB/lib - -If you now set the LD_PRELOAD environment variable to point to this -shared library, Perl will use it instead of the version of Berkeley DB -that shipped with your Linux distribution. - - export LD_PRELOAD=/usr/local/BerkeleyDB/lib/libdb.so - -Finally follow the instructions in "BUILDING THE MODULE" to build, -test and install this module. Don't forget to set the INCLUDE and LIB -variables in config.in. - -Remember, you will need to have the LD_PRELOAD variable set anytime you -want to use Perl with Berkeley DB. Also note that if you have LD_PRELOAD -permanently set it will affect ALL commands you execute. This may be a -problem if you run any commands that access a database created by the -version of Berkeley DB that shipped with your Linux distribution. - - -Solaris Notes -------------- - -If you are running Solaris 2.5, and you get this error when you run the -DB_File test harness: - - libc internal error: _rmutex_unlock: rmutex not held. - -you probably need to install a Sun patch. It has been reported that -Sun patch 103187-25 (or later revisions) fixes this problem. - -To find out if you have the patch installed, the command "showrev -p" -will display the patches that are currently installed on your system. - - -HP-UX 10 Notes --------------- - -Some people running HP-UX 10 have reported getting an error like this -when building DB_File with the native HP-UX compiler. - - ld: (Warning) At least one PA 2.0 object file (DB_File.o) was detected. - The linked output may not run on a PA 1.x system. - ld: Invalid loader fixup for symbol "$000000A5". - -If this is the case for you, Berkeley DB needs to be recompiled with -the +z or +Z option and the resulting library placed in a .sl file. The -following steps should do the trick: - - 1: Configure the Berkeley DB distribution with the +z or +Z C compiler - flag: - - env "CFLAGS=+z" ../dist/configure ... - - 2: Edit the Berkeley DB Makefile and change: - - "libdb= libdb.a" to "libdb= libdb.sl". - - - 3: Build and install the Berkeley DB distribution as usual. - -HP-UX 11 Notes --------------- - -Some people running the combination of HP-UX 11 and Berkeley DB 2.7.7 have -reported getting this error when the run the test harness for DB_File - - ... - lib/db-btree.........Can't call method "DELETE" on an undefined value at lib/db-btree.t line 216. - FAILED at test 26 - lib/db-hash..........Can't call method "DELETE" on an undefined value at lib/db-hash.t line 183. - FAILED at test 22 - ... - -The fix for this is to rebuild and install Berkeley DB with the bigfile -option disabled. - - -IRIX NOTES ----------- - -If you are running IRIX, and want to use Berkeley DB version 1, you can -get it from http://reality.sgi.com/ariel. It has the patches necessary -to compile properly on IRIX 5.3. - -AIX NOTES ---------- - -I've had reports of a build failure like this on AIX 5.2 using the -xlC compiler. - - rm -f blib/arch/auto/DB_File/DB_File.so - LD_RUN_PATH="" ld -bhalt:4 -bM:SRE -bI:/usr/local/5.8.1/lib/perl5/5.8.1/aix/CORE/perl.exp -bE:DB_File.exp -bnoentry -lc - -L/usr/local/lib version.o DB_File.o -o blib/arch/auto/DB_File/DB_File.so - -L/usr/local/BerkeleyDB/lib -ldb -lpthread - ld: 0711-317 ERROR: Undefined symbol: .mutex_lock - ld: 0711-317 ERROR: Undefined symbol: .cond_signal - ld: 0711-317 ERROR: Undefined symbol: .mutex_unlock - ld: 0711-317 ERROR: Undefined symbol: .mutex_trylock - ld: 0711-317 ERROR: Undefined symbol: .cond_wait - ld: 0711-317 ERROR: Undefined symbol: .mutex_init - ld: 0711-317 ERROR: Undefined symbol: .cond_init - ld: 0711-317 ERROR: Undefined symbol: .mutex_destroy - ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. - make: 1254-004 The error code from the last command is 8. - -Editing Makefile.PL, and changing the line - - $LIBS .= " -lpthread" if $^O eq 'aix' ; - -to this - - $LIBS .= " -lthread" if $^O eq 'aix' ; - -fixed the problem. - - -FEEDBACK -======== - -General feedback/questions/bug reports can be sent to me at pmqs@cpan.org. - -Alternatively, if you have Usenet access, you can try the -comp.databases.berkeley-db or comp.lang.perl.modules groups. - - - -How to report a problem with DB_File. -------------------------------------- - -When reporting any problem, I need the information requested below. - - 1. The *complete* output from running this - - perl -V - - Do not edit the output in any way. - Note, I want you to run "perl -V" and NOT "perl -v". - - If your perl does not understand the "-V" option it is too - old. DB_File needs Perl version 5.00405 or better. - - 2. The version of DB_File you have. - If you have successfully installed DB_File, this one-liner will - tell you: - - perl -e 'use DB_File; print qq{DB_File ver $DB_File::VERSION\n}' - - If you are running windows use this - - perl -e "use DB_File; print qq{DB_File ver $DB_File::VERSION\n}" - - If you haven't installed DB_File then search DB_File.pm for a line - like this: - - $VERSION = "1.20" ; - - 3. The version of Berkeley DB you are using. - If you are using a version older than 1.85, think about upgrading. One - point to note if you are considering upgrading Berkeley DB - the - file formats for 1.85, 1.86, 2.0, 3.0 & 3.1 are all different. - - If you have successfully installed DB_File, this command will display - the version of Berkeley DB it was built with: - - perl -e 'use DB_File; print qq{Berkeley DB ver $DB_File::db_ver\n}' - - If you are running windows use this - - perl -e "use DB_File; print qq{Berkeley DB ver $DB_File::db_ver\n}" - - 4. A copy the file config.in from the DB_File main source directory. - - 5. A listing of directories where Berkeley DB is installed. - For example, if Berkeley DB is installed in /usr/BerkeleDB/lib and - /usr/BerkeleyDB/include, I need the output from running this - - ls -l /usr/BerkeleyDB/lib - ls -l /usr/BerkeleyDB/include - - 6. If you are having problems building DB_File, send me a complete log - of what happened. Start by unpacking the DB_File module into a fresh - directory and keep a log of all the steps - - [edit config.in, if necessary] - perl Makefile.PL - make - make test TEST_VERBOSE=1 - - 7. Now the difficult one. If you think you have found a bug in DB_File - and you want me to fix it, you will *greatly* enhance the chances - of me being able to track it down by sending me a small - self-contained Perl script that illustrates the problem you are - encountering. Include a summary of what you think the problem is - and a log of what happens when you run the script, in case I can't - reproduce your problem on my system. If possible, don't have the - script dependent on an existing 20Meg database. If the script you - send me can create the database itself then that is preferred. - - I realise that in some cases this is easier said than done, so if - you can only reproduce the problem in your existing script, then - you can post me that if you want. Just don't expect me to find your - problem in a hurry, or at all. :-) - - -CHANGES -------- - -See the Changes file. - -Paul Marquess <pmqs@cpan.org> |