Author: manuel
Date: 2005-05-07 06:07:44 -0600 (Sat, 07 May 2005)
New Revision: 4014

Modified:
   trunk/BOOK/introduction/important/pkgmgt.xml
Log:
Tagged pkgmgt.xml

Modified: trunk/BOOK/introduction/important/pkgmgt.xml
===================================================================
--- trunk/BOOK/introduction/important/pkgmgt.xml        2005-05-07 11:50:08 UTC 
(rev 4013)
+++ trunk/BOOK/introduction/important/pkgmgt.xml        2005-05-07 12:07:44 UTC 
(rev 4014)
@@ -6,213 +6,220 @@
 ]>
 
 <sect1 id="intro-important-pkgmgt">
-<sect1info>
-<othername>$LastChangedBy$</othername>
-<date>$Date$</date>
-</sect1info>
-<?dbhtml filename="pkgmgt.html"?>
-<title>Package Management</title>
+  <?dbhtml filename="pkgmgt.html"?>
 
-<para>Package Management is an often requested addition
-to the <acronym>LFS</acronym> Book. A Package Manager allows tracking
-the installation of files making it easy to remove and upgrade packages.
-And before you begin to wonder, NO&mdash;this section does not talk about any
-particular package manager, nor does it recommend one. What it provides is
-a roundup of the more popular techniques and how they work. The perfect
-package manager for you may be among these techniques or may be a combination
-of two or more of these techniques. This section briefly mentions
-issues that may arise when upgrading packages.</para>
+  <sect1info>
+    <othername>$LastChangedBy$</othername>
+    <date>$Date$</date>
+  </sect1info>
 
-<para>Some reasons why no package manager is mentioned in 
<acronym>LFS</acronym>
-or <acronym>BLFS</acronym>:</para>
+  <title>Package Management</title>
 
-<itemizedlist>
-<listitem><para>Dealing with package management takes the focus away from
-the goals of these books&mdash;teaching how a Linux system is 
built.</para></listitem>
-<listitem><para>There are multiple solutions for package management, each 
having
-its strengths and drawbacks. Including one that satifies all audiences is
-difficult.</para></listitem>
-</itemizedlist>
+  <para>Package Management is an often requested addition
+  to the LFS Book. A Package Manager allows tracking
+  the installation of files making it easy to remove and upgrade packages.
+  And before you begin to wonder, NO&mdash;this section does not talk about any
+  particular package manager, nor does it recommend one. What it provides is
+  a roundup of the more popular techniques and how they work. The perfect
+  package manager for you may be among these techniques or may be a combination
+  of two or more of these techniques. This section briefly mentions
+  issues that may arise when upgrading packages.</para>
 
-<para>There are some hints written on the topic of package management. Visit
-the <ulink url="http://www.linuxfromscratch.org/hints/";>Hints 
subproject</ulink>
-to find if one of them fits your need.</para>
+  <para>Some reasons why no package manager is mentioned in LFS
+  or BLFS:</para>
 
+  <itemizedlist>
+    <listitem>
+      <para>Dealing with package management takes the focus away from
+      the goals of these books&mdash;teaching how a Linux system is 
built.</para>
+    </listitem>
+    <listitem>
+      <para>There are multiple solutions for package management, each having
+      its strengths and drawbacks. Including one that satifies all audiences is
+      difficult.</para>
+    </listitem>
+  </itemizedlist>
 
-<sect2>
-<title>Upgrade Issues</title>
+  <para>There are some hints written on the topic of package management. Visit
+  the <ulink url="http://www.linuxfromscratch.org/hints/";>Hints 
subproject</ulink>
+  to find if one of them fits your need.</para>
 
-<para>A Package Manager makes it easy to upgrade to newer versions when they
-are released. Generally the instructions in the <acronym>LFS</acronym> and
-<acronym>BLFS</acronym> Book can be used to upgrade to the newer versions.
-Here are some points that you should be aware of when upgrading
-packages, especially on a running system.</para>
+  <sect2>
+    <title>Upgrade Issues</title>
 
-<itemizedlist>
-<listitem><para>If one of the toolchain package (glibc, gcc,
-binutils) needs to be upgraded to a newer minor vesion, it is safer to rebuild
-<acronym>LFS</acronym>. Though you <emphasis>may</emphasis> be able to get by
-rebuilding all the packages in their dependency order. We do not recommend it.
-For example, if glibc-2.2.x needs to be updated to glibc-2.3.x, it is safer
-to rebuild. For micro version updates, a simple reinstallation usually works, 
but
-is not guaranteed. For example, upgrading from glibc-2.3.1 to glibc-2.3.2 will 
not
-usually cause any problems.</para></listitem>
-<listitem><para>If a package containing a shared library is updated, and if the
-name of the library changes, then all the packages dynamically linked to the
-library need to be recompiled to link against the newer library. (Note that 
there
-is no corelation between the package version and the name of the library.) For
-example, consider a package foo-1.2.3 that installs a shared library with name
-<filename>libfoo.so.1</filename>. Say you upgrade the package to a newer 
version
-foo-1.2.4 that installs a shared library with name 
<filename>libfoo.so.2</filename>.
-In this case, all packages that are dynamically linked to 
<filename>libfoo.so.1</filename>
-need to be recompiled to link against <filename>libfoo.so.2</filename>. Note 
that
-you should not remove the previous libraries till the dependent packages are
-recompiled.</para></listitem>
-<listitem><para>If you are upgrading a running system, be on the lookout for
-packages that use <command>cp</command> instead of <command>install</command> 
to
-install files. The latter command is usually safer if the executable or library
-is already loaded in memory.</para></listitem>
-</itemizedlist>
+    <para>A Package Manager makes it easy to upgrade to newer versions when 
+    they are released. Generally the instructions in the LFS and BLFS Book can 
be 
+    used to upgrade to the newer versions. Here are some points that you 
should 
+    be aware of when upgrading packages, especially on a running system.</para>
 
-</sect2>
+    <itemizedlist>
+      <listitem>
+        <para>If one of the toolchain package (glibc, gcc,
+        binutils) needs to be upgraded to a newer minor vesion, it is safer to 
rebuild
+        LFS. Though you <emphasis>may</emphasis> be able to get by
+        rebuilding all the packages in their dependency order. We do not 
recommend it.
+        For example, if glibc-2.2.x needs to be updated to glibc-2.3.x, it is 
safer
+        to rebuild. For micro version updates, a simple reinstallation usually 
works, but
+        is not guaranteed. For example, upgrading from glibc-2.3.1 to 
glibc-2.3.2 will not
+        usually cause any problems.</para>
+      </listitem>
+      <listitem>
+        <para>If a package containing a shared library is updated, and if the
+        name of the library changes, then all the packages dynamically linked 
to the
+        library need to be recompiled to link against the newer library. (Note 
that there
+        is no corelation between the package version and the name of the 
library.) For
+        example, consider a package foo-1.2.3 that installs a shared library 
with name
+        <filename>libfoo.so.1</filename>. Say you upgrade the package to a 
newer version
+        foo-1.2.4 that installs a shared library with name 
<filename>libfoo.so.2</filename>.
+        In this case, all packages that are dynamically linked to 
<filename>libfoo.so.1</filename>
+        need to be recompiled to link against 
<filename>libfoo.so.2</filename>. Note that
+        you should not remove the previous libraries till the dependent 
packages are
+        recompiled.</para>
+      </listitem>
+      <listitem>
+        <para>If you are upgrading a running system, be on the lookout for 
packages 
+        that use <command>cp</command> instead of <command>install</command>
+        to install files. The latter command is usually safer if the 
executable or library
+        is already loaded in memory.</para>
+      </listitem>
+    </itemizedlist>
 
+  </sect2>
 
-<sect2>
-<title>Package Management Techniques</title>
+  <sect2>
+    <title>Package Management Techniques</title>
 
-<para>The following are some common package management techniques. Before
-making a decision on a package manager, do a research on the various
-techniques, particularly the drawbacks of the particular scheme.</para>
+    <para>The following are some common package management techniques. Before
+    making a decision on a package manager, do a research on the various
+    techniques, particularly the drawbacks of the particular scheme.</para>
 
-<sect3>
-<title>It is all in my head!</title>
+    <sect3>
+      <title>It is All in My Head!</title>
 
-<para>Yes, this is a package management technique. Some folks do not find the
-need for a package manager because they know the packages intimately and know
-what files are installed by each package. Some users also do not need any
-package management because they plan on rebuilding the entire system
-when a package is changed.</para>
+      <para>Yes, this is a package management technique. Some folks do not 
find the
+      need for a package manager because they know the packages intimately and 
know
+      what files are installed by each package. Some users also do not need any
+      package management because they plan on rebuilding the entire system
+      when a package is changed.</para>
 
-</sect3>
+    </sect3>
 
-<sect3>
-<title>Install in separate directories</title>
+    <sect3>
+      <title>Install in Separate Directories</title>
 
-<para>This is a simplistic package management that does not need any extra 
package
-to manage the installations. Each package is installed in a separate directory.
-For example, package foo-1.1 is installed in 
<filename>/usr/pkg/foo-1.1</filename>
-and a symlink is made from <filename>/usr/pkg/foo</filename> to
-<filename>/usr/pkg/foo-1.1</filename>. When installing a new version foo-1.2,
-it is installed in <filename>/usr/pkg/foo-1.2</filename> and the previous
-symlink is replaced by a symlink to the new vesion.</para>
+      <para>This is a simplistic package management that does not need any 
extra package
+      to manage the installations. Each package is installed in a separate 
directory.
+      For example, package foo-1.1 is installed in 
<filename>/usr/pkg/foo-1.1</filename>
+      and a symlink is made from <filename>/usr/pkg/foo</filename> to
+      <filename>/usr/pkg/foo-1.1</filename>. When installing a new version 
foo-1.2,
+      it is installed in <filename>/usr/pkg/foo-1.2</filename> and the previous
+      symlink is replaced by a symlink to the new vesion.</para>
 
-<para>The environment variables such as those
-mentioned in <xref linkend="intro-important-beyond"/> need to be expanded to
-include <filename>/usr/pkg/foo</filename>. For more than a few packages,
-this scheme becomes unmanageable.</para>
+      <para>The environment variables such as those
+      mentioned in <xref linkend="intro-important-beyond"/> need to be 
expanded to
+      include <filename>/usr/pkg/foo</filename>. For more than a few packages,
+      this scheme becomes unmanageable.</para>
 
-</sect3>
+    </sect3>
 
-<sect3>
-<title>Symlink style package management</title>
+    <sect3>
+      <title>Symlink Style Package Management</title>
 
-<para>This is a variation of the previous package management technique. Each 
package
-is installed similar to the previous scheme. But instead of making the symlink,
-each file is symlinked into <filename>/usr</filename> hierarchy. This removes 
the need
-to expand the environment variables. Though the symlinks can be created by the 
user,
-to automate the creation, many package managers have been written on this 
approach.
-A few of the popular ones are Stow, Epkg, Graft, and Depot.</para>
+      <para>This is a variation of the previous package management technique. 
Each package
+      is installed similar to the previous scheme. But instead of making the 
symlink,
+      each file is symlinked into <filename>/usr</filename> hierarchy. This 
removes the need
+      to expand the environment variables. Though the symlinks can be created 
by the user,
+      to automate the creation, many package managers have been written on 
this approach.
+      A few of the popular ones are Stow, Epkg, Graft, and Depot.</para>
 
-<para>The installation needs to be faked, so that the package thinks that it is
-installed in <filename class="directory">/usr</filename> though in reality it 
is installed in
-<filename class="directory">/usr/pkg</filename> hierarchy. Installing in this 
manner is not usually a trivial
-task. For example, consider that you are installing a package libfoo-1.1. The 
following
-instructions may not install the package properly:</para>
+      <para>The installation needs to be faked, so that the package thinks 
that it is
+      installed in <filename class="directory">/usr</filename> though in 
reality it is 
+      installed in <filename class="directory">/usr/pkg</filename> hierarchy. 
+      Installing in this manner is not usually a trivial task. For example, 
consider 
+      that you are installing a package libfoo-1.1. The following instructions 
may 
+      not install the package properly:</para>
 
-<screen><userinput><command>./configure --prefix=/usr/pkg/libfoo/1.1 
+<screen><userinput>./configure --prefix=/usr/pkg/libfoo/1.1 
 make
-make install</command></userinput></screen>
+make install</userinput></screen>
 
-<para>The installation will work, but the dependent packages may not link to
-libfoo as you would expect. If you compile a package that links against libfoo,
-you may notice that it is linked to 
<filename>/usr/pkg/libfoo/1.1/lib/libfoo.so.1</filename>
-instead of <filename>/usr/lib/libfoo.so.1</filename> as you would expect. The 
correct
-approach is to use <envar>DESTDIR</envar> strategy to fake installation of the 
package.
-This approach works as follows:</para>
+      <para>The installation will work, but the dependent packages may not 
link to
+      libfoo as you would expect. If you compile a package that links against 
libfoo,
+      you may notice that it is linked to 
<filename>/usr/pkg/libfoo/1.1/lib/libfoo.so.1</filename>
+      instead of <filename>/usr/lib/libfoo.so.1</filename> as you would 
expect. The correct
+      approach is to use <envar>DESTDIR</envar> strategy to fake installation 
of the package.
+      This approach works as follows:</para>
 
-<screen><userinput><command>./configure --prefix=/usr
+<screen><userinput>./configure --prefix=/usr
 make
-make DESTDIR=/usr/pkg/libfoo/1.1 install</command></userinput></screen>
+make DESTDIR=/usr/pkg/libfoo/1.1 install</userinput></screen>
 
-<para>Most of the packages do support this approach, but there are some which 
do not.
-For the non-compliant packages, you may either need to manually install the 
package,
-or you may find that it is easier to install some problematic packages into
-<filename>/opt</filename>.</para>
+      <para>Most of the packages do support this approach, but there are some 
which do not.
+      For the non-compliant packages, you may either need to manually install 
the package,
+      or you may find that it is easier to install some problematic packages 
into
+      <filename>/opt</filename>.</para>
 
-</sect3>
+    </sect3>
 
-<sect3>
-<title>Timestamp based</title>
+    <sect3>
+      <title>Timestamp Based</title>
 
-<para>In this technique, a file is timestamped before the installation of the 
package.
-After the installation, a simple use of the <command>find</command> command 
with the
-appropriate options can generate a log of all the files installed after the 
timestamp
-file was created. A package manager written with this approach is 
install-log.</para>
+      <para>In this technique, a file is timestamped before the installation 
of the package.
+      After the installation, a simple use of the <command>find</command> 
command with the
+      appropriate options can generate a log of all the files installed after 
the timestamp
+      file was created. A package manager written with this approach is 
install-log.</para>
 
-<para>Though this scheme has the advantage of being simple, it has two 
drawbacks.
-If during installation, the files are installed with any timestamp other than 
the
-current time, those files will not be tracked by the package manager. Also, 
this
-scheme can only be used when one package is installed at a time. The logs are 
not
-reliable if two packages are being installed on two different consoles.</para>
+      <para>Though this scheme has the advantage of being simple, it has two 
drawbacks.
+      If during installation, the files are installed with any timestamp other 
than the
+      current time, those files will not be tracked by the package manager. 
Also, this
+      scheme can only be used when one package is installed at a time. The 
logs are not
+      reliable if two packages are being installed on two different 
consoles.</para>
 
-</sect3>
+    </sect3>
 
-<sect3>
-<title>LD_PRELOAD based</title>
+    <sect3>
+      <title>LD_PRELOAD Based</title>
 
-<para>In this approach, a library is preloaded before installation. During
-installation, this library tracks the packages that are being installed by
-attaching itself to various executables such as <command>cp</command>,
-<command>install</command>, <command>mv</command> and tracking the system
-calls that modify the filesystem. For this approach to work, all the 
executables
-need to be dymanically linked without the suid or sgid bit. Preloading the
-library may cause some unwanted side-effects during installation. Therefore,
-do perform some tests to ensure that the package manager does not break
-anything and logs all the appropriate files.</para>
+      <para>In this approach, a library is preloaded before installation. 
During
+      installation, this library tracks the packages that are being installed 
by
+      attaching itself to various executables such as <command>cp</command>,
+      <command>install</command>, <command>mv</command> and tracking the system
+      calls that modify the filesystem. For this approach to work, all the 
executables
+      need to be dymanically linked without the suid or sgid bit. Preloading 
the
+      library may cause some unwanted side-effects during installation. 
Therefore,
+      do perform some tests to ensure that the package manager does not break
+      anything and logs all the appropriate files.</para>
 
-</sect3>
+    </sect3>
 
-<sect3>
-<title>Creating Package Archives</title>
+    <sect3>
+      <title>Creating Package Archives</title>
 
-<para>In this scheme, the package installation is faked into a separate
-tree as described in the Symlink style package management. After the
-installation, a package archive is created using the installed files.
-This archive is then used to install the package either on the local
-machine or can even be used to install the package on other machines.</para>
+      <para>In this scheme, the package installation is faked into a separate
+      tree as described in the Symlink style package management. After the
+      installation, a package archive is created using the installed files.
+      This archive is then used to install the package either on the local
+      machine or can even be used to install the package on other 
machines.</para>
 
-<para>This approach is used by most of the package managers found in the
-commercial distributions. Examples of package managers that follow this
-approach are RPM, pkg-utils, Debian's apt, and Gentoo's Portage system.</para>
+      <para>This approach is used by most of the package managers found in the
+      commercial distributions. Examples of package managers that follow this
+      approach are RPM, pkg-utils, Debian's apt, and Gentoo's Portage 
system.</para>
 
-</sect3>
+    </sect3>
 
-<sect3>
-<title>User Based Management</title>
+    <sect3>
+      <title>User Based Management</title>
 
-<para>This scheme, that is unique to <acronym>LFS</acronym>, was
-devised by Matthias Benkmann, and is available from the <ulink
-url="http://www.linuxfromscratch.org/hints/";>Hints Project</ulink>.
-In this scheme, each package is installed as a separate user into
-the standard locations. Files belonging to a package are easily
-identified by checking the user id. The features and shortcomings
-of this approach are too complex to describe in this section. For
-the details please see the hint at <ulink
-url="http://www.linuxfromscratch.org/hints/downloads/files/more_control_and_pkg_man.txt"/>.</para>
+      <para>This scheme, that is unique to LFS, was devised by Matthias 
Benkmann, 
+      and is available from the <ulink 
url="http://www.linuxfromscratch.org/hints/";>Hints 
+      Project</ulink>. In this scheme, each package is installed as a separate 
user 
+      into the standard locations. Files belonging to a package are easily 
identified 
+      by checking the user id. The features and shortcomings of this approach 
are 
+      too complex to describe in this section. For the details please see the 
hint at <ulink
+      
url="http://www.linuxfromscratch.org/hints/downloads/files/more_control_and_pkg_man.txt"/>.</para>
 
-</sect3>
+    </sect3>
 
-</sect2>
+  </sect2>
 
-
 </sect1>

-- 
http://linuxfromscratch.org/mailman/listinfo/blfs-book
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page

Reply via email to