<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
  <!ENTITY % general-entities SYSTEM "../general.ent">
  %general-entities;
]>

<sect1 id="ch-system-db" role="wrap">
  <?dbhtml filename="db.html"?>

  <sect1info condition="script">
    <productname>db</productname>
    <productnumber>&db-version;</productnumber>
    <address>&db-url;</address>
  </sect1info>

  <title>Berkeley DB-&db-version;</title>

  <indexterm zone="ch-system-db">
    <primary sortas="a-Berkeley-DB">Berkeley DB</primary>
  </indexterm>

  <sect2 role="package">
    <title/>

    <para>The Berkeley DB package contains programs and utilities used by many
    other applications for database related functions.</para>

    <segmentedlist>
      <segtitle>&buildtime;</segtitle>
      <segtitle>&diskspace;</segtitle>

      <seglistitem>
        <seg>&db-ch6-sbu;</seg>
        <seg>&db-ch6-du;</seg>
      </seglistitem>
    </segmentedlist>

    <tip>
      <title>Other Installation Possibilities</title>

      <para>There are instructions to build this package in the BLFS book if you
      need to build the RPC server or additional language bindings. The
      additional language bindings will require additional packages to be
      installed. See <ulink url="&blfs-book;server/databases.html#db"/>
      for suggested installation instructions.</para>

      <para>Also, GDBM <emphasis>could</emphasis> be used in place of Berkeley
      DB to satisfy Man-DB. However, since Berkeley DB is considered a core part
      of the LFS build, it will not be listed as a dependency for any package in
      the BLFS book. Likewise, many hours go into testing LFS with Berkeley DB
      installed, not with GDBM. If you fully understand the risks versus
      benefits of using GDBM and wish to use it anyway, see the BLFS
      instructions located at <ulink
      url="&blfs-book;general/gdbm.html"/></para>

    </tip>

  </sect2>

  <sect2 role="installation">
    <title>Installation of Berkeley DB</title>

    <para>Apply an upstream patch so that replication clients can open a
    sequence:</para>

<screen><userinput remap="pre">patch -Np1 -i ../&db-fixes-patch;</userinput></screen>

    <para>Prepare Berkeley DB for compilation:</para>

<screen><userinput remap="configure">cd build_unix
../dist/configure --prefix=/usr --enable-compat185 --enable-cxx</userinput></screen>

    <variablelist>
      <title>The meaning of the configure options:</title>

      <varlistentry>
        <term><parameter>--enable-compat185</parameter></term>
        <listitem>
          <para>This option enables building Berkeley DB 1.85 compatibility
          API.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><parameter>--enable-cxx</parameter></term>
        <listitem>
          <para>This option enables building C++ API libraries.</para>
        </listitem>
      </varlistentry>

    </variablelist>

    <para>Compile the package:</para>

<screen><userinput remap="make">make</userinput></screen>

    <para>It is not possible to test the package meaningfully, because
    that would involve building Tcl bindings. Tcl bindings cannot be
    built properly now because Tcl is linked against Glibc in
    <filename class="directory">/tools</filename>, not against Glibc in
    <filename class="directory">/usr</filename>.</para>

    <para>Install the package:</para>

<screen><userinput remap="install">make docdir=/usr/share/doc/db-&db-version; install</userinput></screen>

    <variablelist>
      <title>The meaning of the make parameter:</title>

      <varlistentry>
        <term><parameter>docdir=...</parameter></term>
        <listitem>
          <para>This variable specifies the correct place for the
          documentation.</para>
        </listitem>
      </varlistentry>

    </variablelist>

    <para>Fix the ownership of the installed documentation:</para>

<screen><userinput remap="install">chown -Rv root:root /usr/share/doc/db-&db-version;</userinput></screen>

  </sect2>

  <sect2 id="contents-db" role="content">
    <title>Contents of Berkeley DB</title>

    <segmentedlist>
      <segtitle>Installed programs</segtitle>
      <segtitle>Installed libraries</segtitle>

      <seglistitem>
        <seg>db_archive, db_checkpoint, db_codegen, db_deadlock, db_dump,
        db_hotbackup, db_load, db_printlog, db_recover, db_stat, db_upgrade, and
        db_verify</seg>
        <seg>libdb.{a,so}and libdb_cxx.{a,so}</seg>
      </seglistitem>
    </segmentedlist>

    <variablelist>
      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
      <?dbfo list-presentation="list"?>
      <?dbhtml list-presentation="table"?>

      <varlistentry id="db_archive">
        <term><command>db_archive</command></term>
        <listitem>
          <para>Prints the pathnames of log files that are no longer in use</para>
          <indexterm zone="ch-system-db db_archive">
            <primary sortas="b-db_archive">db_archive</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="db_checkpoint">
        <term><command>db_checkpoint</command></term>
        <listitem>
          <para>A daemon used to monitor and checkpoint database logs</para>
          <indexterm zone="ch-system-db db_checkpoint">
            <primary sortas="b-db_checkpoint">db_checkpoint</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="db_codegen">
        <term><command>db_codegen</command></term>
        <listitem>
          <para>Generates application code to create and configure Berkeley DB
          database environments and databases based on a simple description
          language, and writes it to one or more output files</para>
          <indexterm zone="ch-system-db db_codegen">
            <primary sortas="b-db_codegen">db_codegen</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="db_deadlock">
        <term><command>db_deadlock</command></term>
        <listitem>
          <para>A daemon used to abort lock requests when deadlocks are
          detected</para>
          <indexterm zone="ch-system-db db_deadlock">
            <primary sortas="b-db_deadlock">db_deadlock</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="db_dump">
        <term><command>db_dump</command></term>
        <listitem>
          <para>Converts database files to a plain-text file format readable
          by <command>db_load</command></para>
          <indexterm zone="ch-system-db db_dump">
            <primary sortas="b-db_dump">db_dump</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="db_hotbackup">
        <term><command>db_hotbackup</command></term>
        <listitem>
          <para>Creates <quote>hot backup</quote> or <quote>hot failover</quote>
          snapshots of Berkeley DB databases</para>
          <indexterm zone="ch-system-db db_hotbackup">
            <primary sortas="b-db_hotbackup">db_hotbackup</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="db_load">
        <term><command>db_load</command></term>
        <listitem>
          <para>Is used to create database files from plain-text files</para>
          <indexterm zone="ch-system-db db_load">
            <primary sortas="b-db_load">db_load</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="db_printlog">
        <term><command>db_printlog</command></term>
        <listitem>
          <para>Converts database log files to human readable text</para>
          <indexterm zone="ch-system-db db_printlog">
            <primary sortas="b-db_printlog">db_printlog</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="db_recover">
        <term><command>db_recover</command></term>
        <listitem>
          <para>Is used to restore a database to a consistent state after a
          failure</para>
          <indexterm zone="ch-system-db db_recover">
            <primary sortas="b-db_recover">db_recover</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="db_stat">
        <term><command>db_stat</command></term>
        <listitem>
          <para>Displays statistics for Berkeley databases</para>
          <indexterm zone="ch-system-db db_stat">
            <primary sortas="b-db_stat">db_stat</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="db_upgrade">
        <term><command>db_upgrade</command></term>
        <listitem>
          <para>Is used to upgrade database files to a newer version of
          Berkeley DB</para>
          <indexterm zone="ch-system-db db_upgrade">
            <primary sortas="b-db_upgrade">db_upgrade</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="db_verify">
        <term><command>db_verify</command></term>
        <listitem>
          <para>Is used to run consistency checks on database files</para>
          <indexterm zone="ch-system-db db_verify">
            <primary sortas="b-db_verify">db_verify</primary>
          </indexterm>
        </listitem>
      </varlistentry>


      <varlistentry id="libdb">
        <term><filename class="libraryfile">libdb.{a,so}</filename></term>
        <listitem>
          <para>Contains functions to manipulate database files from C
          programs</para>
          <indexterm zone="ch-system-db libdb">
            <primary sortas="c-libdb">libdb</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="libdb_cxx">
        <term><filename class="libraryfile">libdb_cxx.{a,so}</filename></term>
        <listitem>
          <para>Contains functions to manipulate database files from C++
          programs</para>
          <indexterm zone="ch-system-db libdb_cxx">
            <primary sortas="c-libdb_cxx">libdb_cxx</primary>
          </indexterm>
        </listitem>
      </varlistentry>

    </variablelist>

  </sect2>

</sect1>
