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

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

  <title>Bzip2-&bzip2-version;</title>

  <indexterm zone="ch-system-bzip2">
    <primary sortas="a-Bzip2">Bzip2</primary>
  </indexterm>

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

    <para>The Bzip2 package contains programs for compressing and
    decompressing files. Compressing text files with <command>bzip2</command>
    yields a much better compression percentage than with the traditional
    <command>gzip</command>.</para>

  </sect2>

  <sect2 role="installation">
    <title>Installation of Bzip2</title>

    <para os="p1">Apply a patch to install the documentation for this
    package:</para>

<screen os="p2"><userinput>patch -Np1 -i ../&bzip2-docs-patch;</userinput></screen>

    <para os="p3">The <command>bzgrep</command> command does not escape '|' and
    '&amp;' in filenames passed to it. This allows arbitrary commands to be
    executed with the privileges of the user running <command>bzgrep</command>.
    Apply the following patch to address this:</para>

<screen os="p4"><userinput>patch -Np1 -i ../&bzip2-bzgrep-patch;</userinput></screen>

    <para os="p5">The <command>bzdiff</command> script depends on tempfile.
    We remove that dependency with this patch:</para>

<screen os="p6"><userinput>patch -Np1 -i ../&bzip2-remove_tempfile-patch;</userinput></screen>

    <para os="a">The Bzip2 package does not contain a <command>configure</command>
    script. Compile it with:</para>

<screen os="b"><userinput>make -f Makefile-libbz2_so
make clean</userinput></screen>

    <para os="c">The <parameter>-f</parameter> flag will cause Bzip2 to be built
    using a different <filename>Makefile</filename> file, in this case the
    <filename>Makefile-libbz2_so</filename> file, which creates a dynamic
    <filename class="libraryfile">libbz2.so</filename> library and links the
    Bzip2 utilities against it.</para>

    <para os="d">Recompile the package using a non-shared library and test it.</para>

<screen os="e"><userinput>make</userinput></screen>

    <note os="f">
    <para>If reinstalling Bzip2, perform
    <userinput>rm -vf /usr/bin/bz*</userinput> first, otherwise the
    following <command>make install</command> will fail.</para>
    </note>

    <para os="g">Install the programs:</para>

<screen os="h"><userinput>make install</userinput></screen>

    <para os="i">Install the shared <command>bzip2</command> binary into the
    <filename class="directory">/bin</filename> directory, make
    some necessary symbolic links, and clean up:</para>

<screen os="j"><userinput>cp -v bzip2-shared /bin/bzip2
cp -av libbz2.so* /lib
ln -sv ../../lib/libbz2.so.1.0 /usr/lib/libbz2.so
rm -v /usr/bin/{bunzip2,bzcat,bzip2}
ln -sv bzip2 /bin/bunzip2
ln -sv bzip2 /bin/bzcat</userinput></screen>

  </sect2>

  <sect2 id="contents-bzip2" role="content">
    <title>Contents of Bzip2</title>

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

      <seglistitem>
        <seg>bunzip2 (link to bzip2), bzcat (link to bzip2), bzcmp, bzdiff,
        bzegrep, bzfgrep, bzgrep, bzip2, bzip2recover, bzless, and bzmore</seg>
        <seg>libbz2.a, libbz2.so (link to libbz2.so.1.0), libbz2.so.1.0 (link to
        libbz2.so.&bzip2-version;), and libbz2.so.&bzip2-version;</seg>
      </seglistitem>
    </segmentedlist>

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

      <varlistentry id="bunzip2">
        <term><command>bunzip2</command></term>
        <listitem>
          <para>Decompresses bzipped files</para>
          <indexterm zone="ch-system-bzip2 bunzip2">
            <primary sortas="b-bunzip2">bunzip2</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="bzcat">
        <term><command>bzcat</command></term>
        <listitem>
          <para>Decompresses to standard output</para>
          <indexterm zone="ch-system-bzip2 bzcat">
            <primary sortas="b-bzcat">bzcat</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="bzcmp">
        <term><command>bzcmp</command></term>
        <listitem>
          <para>Runs <command>cmp</command> on bzipped files</para>
          <indexterm zone="ch-system-bzip2 bzcmp">
            <primary sortas="b-bzcmp">bzcmp</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="bzdiff">
        <term><command>bzdiff</command></term>
        <listitem>
          <para>Runs <command>diff</command> on bzipped files</para>
          <indexterm zone="ch-system-bzip2 bzdiff">
            <primary sortas="b-bzdiff">bzdiff</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="bzgrep">
        <term><command>bzgrep</command></term>
        <listitem>
          <para>Runs <command>grep</command> on bzipped files</para>
          <indexterm zone="ch-system-bzip2 bzgrep">
            <primary sortas="b-bzgrep">bzgrep</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="bzegrep">
        <term><command>bzegrep</command></term>
        <listitem>
          <para>Runs <command>egrep</command> on bzipped files</para>
          <indexterm zone="ch-system-bzip2 bzegrep">
            <primary sortas="b-bzegrep">bzegrep</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="bzfgrep">
        <term><command>bzfgrep</command></term>
        <listitem>
          <para>Runs <command>fgrep</command> on bzipped files</para>
          <indexterm zone="ch-system-bzip2 bzfgrep">
            <primary sortas="b-bzfgrep">bzfgrep</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="bzip2">
        <term><command>bzip2</command></term>
        <listitem>
          <para>Compresses files using the Burrows-Wheeler block sorting text
          compression algorithm with Huffman coding; the compression rate is
          better than that achieved by more conventional compressors using
          <quote>Lempel-Ziv</quote> algorithms, like <command>gzip</command></para>
          <indexterm zone="ch-system-bzip2 bzip2">
            <primary sortas="b-bzip2">bzip2</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="bzip2recover">
        <term><command>bzip2recover</command></term>
        <listitem>
          <para>Tries to recover data from damaged bzipped files</para>
          <indexterm zone="ch-system-bzip2 bzip2recover">
            <primary sortas="b-bzip2recover">bzip2recover</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="bzless">
        <term><command>bzless</command></term>
        <listitem>
          <para>Runs <command>less</command> on bzipped files</para>
          <indexterm zone="ch-system-bzip2 bzless">
            <primary sortas="b-bzless">bzless</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="bzmore">
        <term><command>bzmore</command></term>
        <listitem>
          <para>Runs <command>more</command> on bzipped files</para>
          <indexterm zone="ch-system-bzip2 bzmore">
            <primary sortas="b-bzmore">bzmore</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="libbz2">
        <term><filename class="libraryfile">libbz2*</filename></term>
        <listitem>
          <para>The library implementing lossless, block-sorting data
          compression, using the Burrows-Wheeler algorithm</para>
          <indexterm zone="ch-system-bzip2 libbz2">
            <primary sortas="c-libbz2*">libbz2*</primary>
          </indexterm>
        </listitem>
      </varlistentry>

    </variablelist>

  </sect2>

</sect1>
