IBM Linux Tutorials - LPI certification 102 (Release 2) exam prep, part1.pdf

(311 KB) Pobierz
LPI certification 102 (release 2) exam
prep, Part 1
Presented by developerWorks, your source for great tutorials
ibm.com/developerWorks
Table of Contents
If you're viewing this document online, you can click any of the topics below to link directly to that section.
1. Before you start.........................................................
2. Shared libraries
.........................................................
3. Compiling applications from sources
...............................
4. Package management concepts
....................................
5. rpm, the (R)ed Hat (P)ackage (M)anager
..........................
6. Debian package management
.......................................
7. Summary and resources
..............................................
2
4
7
14
15
22
27
LPI certification 102 (release 2) exam prep, Part 1
Page 1 of 28
ibm.com/developerWorks
Presented by developerWorks, your source for great tutorials
Section 1. Before you start
About this tutorial
Welcome to "Compiling sources and managing packages," the first of four tutorials designed
to prepare you for the Linux Professional Institute's 102 exam. In this tutorial, we'll show you
how to compile programs from sources, how to manage shared libraries, and how to use the
Red Hat and Debian package management systems.
This tutorial on compiling sources and managing packages is ideal for those who want to
learn about or improve their Linux package management skills. This tutorial is particularly
appropriate for those who will be setting up applications on Linux servers or desktops. For
many readers, much of this material will be new, but more experienced Linux users may find
this tutorial to be a great way to "round out" their important Linux system administration skills.
If you are new to Linux, we recommend that you start with
Part 1
and work through the series
from there.
By the end of this
series
of tutorials (eight in all, covering the LPI 101 and 102 exams), you'll
have the knowledge you need to become a Linux Systems Administrator and will be ready to
attain an LPIC Level 1 certification from the Linux Professional Institute if you so choose.
For those who have taken the
release 1 version
of this tutorial for reasons other than LPI
exam preparation, you probably don't need to take this one. However, if you do plan to take
the exams, you should strongly consider reading this revised tutorial.
The LPI logo is a trademark of Linux Professional Institute.
About the authors
For technical questions about the content of this tutorial, contact the authors:
Daniel Robbins, at
drobbins@gentoo.org
Chris Houser, at
chouser@gentoo.org
Aron Griffis, at
agriffis@gentoo.org
Daniel Robbins
lives in Albuquerque, New Mexico, and is the Chief Architect of Gentoo
Technologies, Inc., the creator of Gentoo Linux, an advanced Linux for the PC, and the
Portage system, a next-generation ports system for Linux. He has also served as a
contributing author for the Macmillan books
Caldera OpenLinux Unleashed, SuSE Linux
Unleashed,
and
Samba Unleashed.
Daniel has been involved with computers in some
fashion since the second grade, when he was first exposed to the Logo programming
language as well as a potentially dangerous dose of Pac Man. This probably explains why he
has since served as a Lead Graphic Artist at SONY Electronic Publishing/Psygnosis. Daniel
enjoys spending time with his wife, Mary, and their daughter, Hadassah.
Chris Houser,
known to his friends as "Chouser," has been a UNIX proponent since 1994
when joined the administration team for the computer science network at Taylor University in
Indiana, where he earned his Bachelor's degree in Computer Science and Mathematics.
Since then, he has gone on to work in Web application programming, user interface design,
professional video software support, and now Tru64 UNIX device driver programming at
Page 2 of 28
LPI certification 102 (release 2) exam prep, Part 1
Presented by developerWorks, your source for great tutorials
ibm.com/developerWorks
Compaq. He has also contributed to various free software projects, most recently to Gentoo
Linux. He lives with his wife and two cats in New Hampshire.
Aron Griffis
graduated from Taylor University with a degree in Computer Science and an
award that proclaimed him the "Future Founder of a Utopian UNIX Commune". Working
towards that goal, Aron is employed by Compaq writing network drivers for Tru64 UNIX, and
spending his spare time plunking out tunes on the piano or developing Gentoo Linux. He
lives with his wife Amy (also a UNIX engineer) in Nashua, NH.
LPI certification 102 (release 2) exam prep, Part 1
Page 3 of 28
ibm.com/developerWorks
Presented by developerWorks, your source for great tutorials
Section 2. Shared libraries
Introducing shared libraries
On Linux systems there are two fundamentally different types of Linux executable programs.
The first are called
statically linked
executables. Static executables contain all the functions
that they need to execute -- in other words, they're "complete." Because of this, static
executables do not depend on any external library to run.
The second are
dynamically linked
executables. We'll get into those in the next panel.
Static vs. dynamic executables
We can use the
ldd
command to determine if a particular executable program is static:
# ldd /sbin/sln
not a dynamic executable
"not a dynamic executable" is
ldd's
way of saying that
sln
is statically linked. Now, let's take
a look at
sln's
size in comparison to its non-static cousin,
ln:
# ls -l /bin/ln /sbin/sln
-rwxr-xr-x
1 root
root
-rwxr-xr-x
1 root
root
23000 Jan 14 00:36 /bin/ln
381072 Jan 14 00:31 /sbin/sln
As you can see,
sln
is over
ten
times the size of
ln. ln
is so much smaller than
sln
because it is a
dynamic executable.
Dynamic executables are
incomplete
programs that
depend on external shared libraries to provide many of the functions that they need to run.
Dynamically linked dependencies
To view a list of all the shared libraries upon which
ln
depends, use the
ldd
command:
# ldd /bin/ln
libc.so.6 => /lib/libc.so.6 (0x40021000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
As you can see,
ln
depends on the external shared libraries
libc.so.6
and
ld-linux.so.2.
As a rule, dynamically linked programs are much smaller than their
statically-linked equivalents. However, statically-linked programs come in handy for certain
low-level maintenance tasks. For example,
sln
is the perfect tool to modify various library
symbolic links that exist in
/lib.
But in general, you'll find that nearly all executables on a
Linux system are of the dynamically linked variety.
The dynamic loader
So, if dynamic executables don't contain everything they need to run, what part of Linux has
Page 4 of 28
LPI certification 102 (release 2) exam prep, Part 1
Presented by developerWorks, your source for great tutorials
ibm.com/developerWorks
the job of loading them along with any necessary shared libraries so that they can execute
correctly? The answer is something called the
dynamic loader,
which is actually the
ld-linux.so.2
library that you see listed as a shared library dependency in
ln's ldd
listing. The dynamic loader takes care of loading the shared libraries that dynamically linked
executables need in order to run. Now, let's take a quick look at how the dynamic loader
finds the appropriate shared libraries on your system.
ld.so.conf
The dynamic loader finds shared libraries thanks to two files --
/etc/ld.so.conf
and
/etc/ld.so.cache.
If you
cat
your
/etc/ld.so.conf
file, you'll probably see a listing
that looks something like this:
$ cat /etc/ld.so.conf
/usr/X11R6/lib
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.3
/usr/lib/mozilla
/usr/lib/qt-x11-2.3.1/lib
/usr/local/lib
The
ld.so.conf
file contains a listing of all directories (besides
/lib
and
/usr/lib,
which are automatically included) in which the dynamic loader will look for shared libraries.
ld.so.cache
But before the dynamic loader can "see" this information, it must be converted into an
ld.so.cache
file. This is done by running the
ldconfig
command:
# ldconfig
When ldconfig completes, you now have an up-to-date
/etc/ld.so.cache
file that reflects
any changes you've made to
/etc/ld.so.conf.
From this point forward, the dynamic
loader will look in any new directories that you specified in
/etc/ld.so.conf
when looking
for shared libraries.
ldconfig tips
To view all the shared libraries that
ldconfig
can "see," type:
# ldconfig -p | less
There's one other handy trick you can use to configure your shared library paths. Sometimes,
you'll want to tell the dynamic loader to try to use shared libraries in a specific directory
before trying any of your
/etc/ld.so.conf
paths. This can be handy in situations where
you are running an older application that doesn't work with the currently-installed versions of
your libraries.
LPI certification 102 (release 2) exam prep, Part 1
Page 5 of 28
Zgłoś jeśli naruszono regulamin