LDP/LDP/howto/docbook/rpmupgrade.sgml/rpmupgrade.xml

4187 lines
115 KiB
XML
Raw Normal View History

<?xml version="1.0" standalone="no"?>
<!DOCTYPE ARTICLE PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"/usr/share/sgml/docbook/xml-dtd-4.1/docbookx.dtd" [
<!ENTITY GFDLDOC SYSTEM "fdl.xml">
]>
<!--"/usr/share/sgml/docbook/xml-dtd-4.1/docbookx.dtd" [-->
<!--"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [-->
<article class="whitepaper" id="rpmupgrade">
<title>UNDER DEVELOPMENT -- RPM download and upgrade -- UNDER
DEVELOPMENT</title>
<articleinfo>
<copyright>
<year id="copyyear">2002</year>
<holder id="authorname">Steven Sanfratello</holder>
</copyright>
<pubdate id="publicationdate" role="rcs">$Date: 2002/03/02
07:00:00 $</pubdate>
<releaseinfo id="releaseversion">$Name$</releaseinfo>
<abstract>
<para>The GNU/Linux world asserts that the operating system can
be downloaded from the Internet and installed for no money. It
is easiest to install GNU/Linux on a fresh partition. But in my
readings I was always left wondering if it is also possible to
upgrade an existing distribution without destroying it. Here is
a description of upgrading a GNU/Linux distribution to the next
major release from the same distributor, using the downloaded
binary rpm packages.</para>
<para>Upgrading using downloaded, binary
<acronym>rpm</acronym>
packages has its advantages and disadvantages. It took me about
a week and a half to download a little over 600 Megabytes,
using a 56K modem. A few days after that I was done upgrading
the packages. Things did not go smoothly for me. But I'll
explain how to correct the pitfalls that I encountered, so that
you will spend less time when you upgrade.</para>
</abstract>
</articleinfo>
<remark>THIS DOCUMENT IS STILL UNDER DEVELOPMENT. PLEASE, HOLD ANY
2002-03-02 07:00:00 +00:00
CRITICISMS UNTIL I'M FINISHED WRITING IT.</remark>
<sect1 id="copyleft">
<title>GNU Copyleft</title>
<sect2>
<title id="twolicense">Copyright and Licensing Notice</title>
<para>Copyright (c) Steven Sanfratello. Permission is granted
to copy, distribute and/or modify this document under the terms
of the GNU
<ulink url="http://www.gnu.org/copyleft/fdl.html#TOC2">Free
Documentation License, Version 1.1</ulink>
or any later version published by the Free Software Foundation;
with the Invariant Sections being
<link linkend="copyleft">GNU Copyleft</link>
with no Front-Cover Texts and no Back-Cover Text. A copy of the
license is included in the section entitled "
<link linkend="gfdl">GNU Free Documentation License</link>".</para>
<!-- FIXME: extra white space -->
<para>The author can be contacted at
<email>nevets72@a1isp.net</email>.
<!-- FIXME: extra white space -->
If you're commenting on text from this HOWTO then please
include
<link linkend="releaseversion">$Name $</link>
of the version and the
<link linkend="publicationdate">$Date $</link>
of the publication.</para>
<para>If you are profiting from the use or distribution of this
document please consider giving something back to the Linux
community or to the author and then act on those
considerations.</para>
</sect2>
<sect2>
<title id="twowarranty">Warranty</title>
<para>Although this HOWTO has been carefully prepared, the
author assume no responsibility for errors or omissions or the
risks that using these ideas creates. No liability is assumed
for damages resulting from the use of the information contained
herein.</para>
</sect2>
</sect1>
<sect1 id="introduction">
<title>Introduction</title>
<sect2>
<title id="twowhere">Where is the latest version?</title>
<para>Get the latest version of this HOWTO from :
<simplelist type="vert">
<member>
<ulink url="http://members.a1isp.net/nevets72/rpmupgrade/">
HTML Version on my web page</ulink>
</member>
<member>
<ulink
url="http://cvsview.linuxdoc.org/index.cgi/howto/docbook/rpmupgrade.sgml/">
2002-03-02 07:00:00 +00:00
Docbook XML linuxdoc CVS</ulink>
</member>
<member>
<ulink
2002-03-02 07:00:00 +00:00
url="http://members.a1isp.net/nevets72/rpmupgrade/xml/">
Docbook XML source on my web page</ulink>
</member>
</simplelist>
</para>
</sect2>
2002-03-02 07:00:00 +00:00
<sect2>
<title id="twoconvetions">Conventions used in this
HOWTO</title>
<orderedlist inheritnum="ignore" continuation="restarts">
<listitem>
<para>There are some example commands in this HOWTO. They
are formatted like this:</para>
2002-03-02 07:00:00 +00:00
<para>
<prompt>application name and prompt-character(s)</prompt>
2002-03-02 07:00:00 +00:00
<command>command-name</command>
<parameter moreinfo="none">
<replaceable>command-parameter(s)</replaceable>
</parameter>
2002-03-02 07:00:00 +00:00
</para>
</listitem>
<listitem>
<para>Sometimes I'll talk about my experiences during an
upgrade. These are meant to convey my experiences,
motivations and pitfalls to you. These experiences apply to
my system but may also apply to your experiences, with some
adapting. They are formated like this:</para>
2002-03-02 07:00:00 +00:00
<sidebar>
<para>I appreciatied having Linux and so I wrote this to
give back to the community. Also I wanted to preserve
this experience in writing so I wouldn't forget what I
learned. What better way to preserve it than with a
HOWTO?</para>
2002-03-02 07:00:00 +00:00
</sidebar>
</listitem>
2002-03-02 07:00:00 +00:00
<listitem>
<note>
2002-03-02 07:00:00 +00:00
<para>Notes like this one give you useful tokens of
information that stand beside the main text.</para>
2002-03-02 07:00:00 +00:00
</note>
</listitem>
2002-03-02 07:00:00 +00:00
<listitem>
2002-03-02 07:00:00 +00:00
<caution>
<para>Cautions like this one tell you that a procedure
can be dangerous to your system if done
carelessly.</para>
2002-03-02 07:00:00 +00:00
</caution>
</listitem>
2002-03-02 07:00:00 +00:00
<listitem id="linkdemo">
<para id="xrefdemo" xreflabel="this way">Cross references
to other sections of the text are formated :
<xref endterm="xrefdemo" linkend="xrefdemo" />.
<!-- FIXME: extra white space -->
They are very similar to links which look :
<link linkend="linkdemo">like this</link>.
<!-- FIXME: extra white space -->
</para>
</listitem>
</orderedlist>
2002-03-02 07:00:00 +00:00
</sect2>
<sect2>
<title id="twopurpose">Purpose of this document</title>
<itemizedlist>
<title>There are many reasons that you might want to read
this.</title>
<listitem>
<para>If you are considering taking advantage of the freely
downloadable versions of Linux you should know that it
takes some effort and know-how to accomplish. Reading this
HOWTO gives you a real picture of the effort required
before you start the process for yourself. In that way it
will help you decide if the big download and the upgrade is
worth the trouble.</para>
</listitem>
<listitem>
<para>Whether you decide to download or you obtain the rpm
packages on disk, then this will explain what it takes to
do the upgrade. Most commercial distributions are packaged
as binary rpms, so I thought that a HOWTO on a major
upgrade would make useful HOWTO. The most important factor
when upgrading the rpms is choosing the right order
<emphasis>(hint: start with the libraries.)</emphasis>
</para>
</listitem>
<listitem>
<para>If your installation program doesn't give you enough
control over which packages are installed, this method
gives you the control to eliminate what you don't need.
That control allows you to customize your install to almost
any size that you want. While some installation programs
give you this level of control, some do not.</para>
</listitem>
<listitem>
<para>I'll give you a description of what I went through to
set up and upgrade my system and the reasoning behind it.
From that description you can get an idea of what's
involved when doing similar upgrades to your system. There
are many different programs that can be used for this
process. I'll touch on many of them.</para>
</listitem>
<listitem>
<para>This is not a HOWTO about upgrading a single program,
with its dependencies. That knowledge can be obtained from
the
<application moreinfo="none">rpm</application>
documentation. But if you find that there are so many new
dependencies that package requires, and you've worked the
dependencies all the way down to the kernel, you may decide
that it's time to upgrade the whole distribution.</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title id="twohowlong">How long does it really take?</title>
<sidebar>
<para>Over all, it took about one and a half weeks to
download the packages. The binary rpms total size was a
little over 600 Megabytes. It took a few more days to do the
upgrading.</para>
</sidebar>
<sidebar>
<para>A more automated
<acronym>FTP</acronym>
procedure would reduce the download time
significantly.</para>
<para>The
<acronym>FTP</acronym>
2002-03-02 07:00:00 +00:00
server disconnected me often. I found that this was the
biggest time waster in the whole process. The timeout before
notifying me that the server wasn't responding
(T<subscript>nr</subscript>),
<!-- FIXME: extra white space -->
added to the time it took me to notice and check that
message
<!-- FIXME: extra white space -->
(T<subscript>not</subscript>),
<!-- FIXME: extra white space -->
added to the time it takes to reconnect
(T<subscript>rc</subscript>),
<!-- FIXME: extra white space -->
multiplied by a disconnect every 20 to 60 minutes totaled
many wasted hours.</para>
<para>
(T<subscript>nr</subscript> +
T<subscript>not</subscript> + T<subscript>rc</subscript>)
<!-- FIXME: extra white space -->
* (20 to 60 minutes) = many wasted hours</para>
<para>In addition to all of that there is, of course the time
of waiting for the downloads. A program that reconnects to an
FTP server automatically would be a big help in reducing the
downloading time.</para>
</sidebar>
<para>
<application>ncftp</application>
has a feature which might help that problem. It can download
files in the background:</para>
<para>
<prompt>ncftp&#62;</prompt>
<command>bgget</command>
<parameter moreinfo="none">
<replaceable>foo</replaceable>
</parameter>
</para>
<para>which might make the download easier and possibly faster
too. After issuing a background command you might also want to
issue a
<command moreinfo="none">bgstart</command>
to give the download a kick in the pants.</para>
<para>
<prompt>ncftp&#62;</prompt>
<command>bgstart</command>
</para>
<sidebar>
<para>Upgrading would go smoother and quicker for someone
with more experience upgrading, than me. This was a discovery
effort, so there were many pitfalls for me. I am writing this
to help you avoid those pitfalls and so your experience
should go quicker than mine regardless of your experience
with upgrading.</para>
</sidebar>
</sect2>
<sect2>
2002-03-02 07:00:00 +00:00
<title id="twobenefits">The benefits and costs of upgrading
this way</title>
<informaltable>
<tgroup cols="2" align="left">
<thead>
<row>
2002-03-02 07:00:00 +00:00
<entry align="center">Benefits</entry>
<entry align="center">Costs</entry>
</row>
</thead>
<tbody>
<row>
<entry>Downloading the packages is free.</entry>
<entry>But the big cost is the time it takes to
download and the space it takes to store them.</entry>
</row>
<row>
<entry>You don't have to buy the
<acronym>CD</acronym>s.
<!-- FIXME: extra white space -->
</entry>
<entry>The purchase price of the CD could contribute
towards developing the future of the
distribution.</entry>
</row>
<row>
<entry>Upgrading each package by hand gives you control
over your system. You'll have the opportunity to choose
which components you want and which you don't want. Not
all of the installation software available gives you
that much control.</entry>
<entry>That control requires some knowledge of what to
do and what not to do. (Be careful that anything that
you do can be undone, so that you can recover from your
mistakes.)</entry>
</row>
<row>
<entry>This control could be very helpful when you have
to squeeze Linux into a small hard disk or tailor Linux
in any other way.</entry>
<entry>If you don't need the control, it is much easier
to get a commercial installer.</entry>
</row>
<row>
<entry>Upgrading one package at a time also gives you a
deeper understanding about the components of your
system and how they fit together.</entry>
<entry>There's sunlight, people and roller coasters out
there in the real world! :-)</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect2>
<sect2>
<title id="twoassume">What I'm assuming about you.</title>
<itemizedlist>
<listitem>
<para>You'll need to know what rpm (Red Hat Package
Manager) is and have some basic experience using the
packages. (See
<xref endterm="rpmhowto" linkend="rpmhowto" />)
<!-- FIXME : extra white space. -->
</para>
</listitem>
<listitem>
<para>You have a working Linux with rpm installed.</para>
</listitem>
<listitem>
<para>If you are going to do the download, I assume that
you have more time on your hands than money (like me). Or
that you have a high speed Internet connection.</para>
</listitem>
<listitem>
<para>The upgrading will take some familiarity with Linux
and some knowledge of the what each package does. This
knowledge can be obtained from the package information, of
course. (See
<xref endterm="rpmtips" linkend="rpmtips" />
for how to show the summary information.)</para>
</listitem>
<listitem>
<para>You have to use that knowledge when choosing the
right packages to satisfy rpm dependencies. Normally these
will have similar names, which makes it simple to
do.</para>
</listitem>
<listitem>
<para>One procedure probably won't work for everyone so
you'll have to be aware of what your doing, understand why
you're doing it and figure out the best way to apply it to
your system.</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="distrothoughts">
<title>Some thoughts on distributions and upgrading</title>
<sect2>
<title id="twocharacteristics">Characteristics of a
distribution which would be a good choice for upgrading</title>
<itemizedlist>
<listitem>
<para>Current packages (so that your efforts in upgrading
are worth your while)</para>
</listitem>
<listitem>
<para>Well structured dependencies</para>
</listitem>
<listitem>
2002-03-02 07:00:00 +00:00
<para>Compatibility with other distributions</para>
</listitem>
<listitem>
<para>Well structured grouping</para>
</listitem>
<listitem>
<para>Configured and tested packages</para>
</listitem>
<listitem>
2002-03-02 07:00:00 +00:00
<para>Packages configured for versatility and
security</para>
</listitem>
<listitem>
2002-03-02 07:00:00 +00:00
<para>Includes useful packages but skips unnecessary
ones</para>
</listitem>
<listitem>
<para>Easy and flexible installation program</para>
</listitem>
<listitem>
<para>A bootable CD with a Linux that can be used to do
2002-03-02 07:00:00 +00:00
maintenance on your system</para>
</listitem>
</itemizedlist>
<para>Of course, there are lots of other factors, each of which
will be important to different people. Many of the factors in
choosing a distribution are subjective. You'll have to weigh
them for yourself to decide which are important to you. I just
2002-03-02 07:00:00 +00:00
think that these were some relevant factors in regards to this
HOWTO.</para>
</sect2>
<sect2>
<title id="twoswitching">Switching distributions by upgrading
to new one</title>
<para>It's not impossible to upgrade from one distribution to
another, but it's very difficult. You'll have to deal with
2002-03-02 07:00:00 +00:00
missing files, unsatisfied dependencies, incompatible groupings
and incompatible package names.</para>
2002-03-02 07:00:00 +00:00
<para>It would be nice to be able to upgrade one distribution
with another, allowing you to see the advantages of a other
distributions. When building the rpms the builder has options
2002-03-02 07:00:00 +00:00
to which files are added, how the packages are grouped, the
name of the package and the dependencies of the package. These
are some of the works that distibuters do. These will vary from
one distributor to another in quality and name. And so when you
try to use a package from one distributor to upgrade a package
of another distributor, you will find that it is not an exact
fit.</para>
</sect2>
</sect1>
<sect1 id="download">
<title>Download</title>
<sect2>
<title id="twopacklicense">Licensing of rpm packages</title>
<para>There are several different licenses that cover a
complete Linux OS. The most famous one is the GNU GENERAL
PUBLIC LICENSE
(<acronym>GPL</acronym>)
<!-- FIXME: extra white space -->
which allows the free distribution of derivative works of GPL
programs.
(<application>rpm</application>
<!-- FIXME: extra white space -->
itself is covered by this license. When used as a library it's
covered under the LGPL.) According to the GPL a derivative work
is, "a work containing the Program or a portion of it, either
verbatim or with modifications." Binary rpm packages are
derivative of the original program. If the original program was
covered by the
<acronym>GPL</acronym>
then so is the rpm package of it. Also from the GPL, "Our
General Public Licenses are designed to make sure that you have
the freedom to distribute copies of free software (and charge
for this service if you wish), that you receive source code or
can get it if you want it, that you can change the software or
use pieces of it in new free programs; and that you know you
can do these things." This permits the free distribution of
<acronym>GPL</acronym>
software. Not all Linux software in a distribution is licensed
under the
<acronym>GPL</acronym>,
<!-- FIXME: extra white space -->
though.</para>
<para>So, this HOWTO refers to downloading GPL software.
Software that isn't covered under the GPL may require different
2002-03-02 07:00:00 +00:00
steps to respect those licensing requirements and those
differences will not be addressed at this time, for the sake of
2002-03-02 07:00:00 +00:00
simplicity. The easiest way to tell if a package is under the
GPL is to look for it being mentioned in the Copyright field of
the rpm information.</para>
</sect2>
<sect2>
2002-03-02 07:00:00 +00:00
<title id="twocandownload">Can Linux be downloaded?</title>
<para>Yes, it can, if you have the disk space to keep all of
the files.
<acronym>FTP</acronym>
is a good download method.
<acronym>HTTP</acronym>
can be used also but that isn't as convenient.</para>
<para>Here are some of the basics of
<application>ncftp</application>
and some pitfalls to avoid to make your downloading easier. A
quick summary of some
<application>ncftp</application>
commands follows but see the info on
<command>ncftp(1)</command>
for all of the details of each command.</para>
</sect2>
<sect2>
<title id="twoncftpfeatures">ncftp features</title>
<para>The
<application>ncftp</application>
program is a nice tool. It can get the binary files off the
remote server and into the current working directory.
<itemizedlist mark="-">
<listitem>
<para>It is also possible to download files as a background
process using the bgget command allowing
<emphasis>unattended downloads</emphasis>.
<!-- FIXME: extra white space -->
</para>
</listitem>
<listitem>
<para>You can write download commands into scripts allowing
<emphasis>unattended downloads</emphasis>.
<!-- FIXME: extra white space -->
But I won't elaborate on that.</para>
</listitem>
<listitem>
<para>For files that weren't completely downloaded,
<application>ncftp</application>
is capable of resuming the download from where it left off
rather than starting the file from the beginning.</para>
</listitem>
<listitem>
<para>To abort a get command with two
<keycombo>
<keycap>Ctrl-C</keycap>
</keycombo>
keystrokes. This will stop your download and get you out of
ncftp quickly.</para>
</listitem>
<listitem>
<para>Use wild cards to get larger blocks of files.
<application>ncftp</application>
is also capable of getting directories, recursively.</para>
</listitem>
</itemizedlist>
</para>
</sect2>
<sect2>
<title id="twotimesaver">Time saver: Skip unnecessary files and
tweak time-outs</title>
<para>You probably will not want to spend the time getting all
the files from the remote directory. For instance you can skip
any of the
<application>X</application>
servers that aren't meant for your video card. If you want to
save a big chunk of time and disk space you can skip the
desktop packages but most home users won't want to do that.
Home users can skip many of the server packages, though. Base
your choices of what to download on the packages of your
current system, but understand that your distributor may have
introduced some new and necessary packages that cannot be
skipped.</para>
<tip>
<para>Generate a list of your current system's packages with
one simple command:</para>
<para>
<prompt>bash$</prompt>
<command>rpm</command>
<parameter>-qa</parameter>
<parameter moreinfo="none">&#62;</parameter>
<filename>currentrpms</filename>
</para>
</tip>
<para>There's a way you can get ncftp to skip over some files
while getting files using a wild cards. Create an empty file in
your local directory which has the same name as the file that
you want to skip. Create a name for every file that you want to
skip. If you have the
<varname>auto-resume</varname>
disabled :</para>
<para>
2002-03-02 07:00:00 +00:00
<prompt>ncftp&#62;</prompt>
<command>set</command>
<varname>auto-resume</varname>
<parameter>no</parameter>
</para>
<para>When ncftp comes to that file during a get it will ask
how you want to handle it. You can choose to
<computeroutput>
[<keycap>S</keycap>]kip</computeroutput>
<!-- FIXME: extra white space -->
it.</para>
<para>To create the empty files in your local directory you can
2002-03-02 07:00:00 +00:00
first list the remote file system to see their exact
names.</para>
<para>
2002-03-02 07:00:00 +00:00
<prompt>ncftp&#62;</prompt>
<command>ls</command>
</para>
<para>To create an empty file with the same name:</para>
<para>
<prompt>bash$</prompt>
<command>touch</command>
<filename>FILE</filename>
</para>
<para>
<application>X</application>
allows you to highlight the file name and copy it with the
<mousebutton>middle mouse button</mousebutton>.
<!-- FIXME: extra white space -->
</para>
<para>Then start downloading the files :</para>
<para>
2002-03-02 07:00:00 +00:00
<prompt>ncftp&#62;</prompt>
<command>get</command>
<parameter moreinfo="none">foo*</parameter>
</para>
</sect2>
<sect2>
<title id="twotradeoff">Time saver trade off</title>
<para>If ncftp is set to automatically resume downloading then
it will defeat the purpose of creating the empty files. You
will not save any downloading time. So disable the auto resume
feature.</para>
<para>
2002-03-02 07:00:00 +00:00
<prompt>ncftp&#62;</prompt>
<command>set</command>
<varname>auto-resume</varname>
<parameter>no</parameter>
</para>
<para>The
<emphasis>trade-off</emphasis>
of setting
<application>ncftp</application>
in this way is that you'll have to tell
<application>ncftp</application>
to
<computeroutput>
[<keycap>S</keycap>]kip</computeroutput>
<!-- FIXME: extra white space -->
each empty file as
<application moreinfo="none">ncftp</application>
encounters each one and asks you how to handle it. It also
means that you will have to attend to the download process
yourself in order to answer these questions.</para>
<sidebar>
<para>It is up to you if you want use this to save download
time, or not. I chose to use it because there were several
dozen files that I wanted to skip. In the end, I'm not sure
if saving the download time was worth the effort.</para>
</sidebar>
</sect2>
<sect2>
<title id="twotimeouts">Local timeouts and Server
disconnects</title>
<para>The FTP server might have a tendency to kick you off
after every few files you download, even if there are only a
few users logged onto it. Sometimes you might even get
disconnected in the middle of a large (10-20 Megabyte)
file.</para>
<tip>
<para>That is when the resume feature of
<application>ncftp</application>
really comes in handy.</para>
</tip>
<para>These disconnects get very frustrating and time
consuming. When the server does kick you,
<application>ncftp</application>
will wait for a timeout before it informs you of the
disconnection. The variable which controls that timeout is
called
<varname>control-timeout</varname>
(isn't that a clever name?) I found that the default timeout
was way too long and slowing me down. This setting delays how
long
<application>ncftp</application>
will take before announcing that the server wasn't
responding.</para>
<para>You'll probably want to decrease both your
<varname>connect-timeout</varname>
and
<varname>control-timeout</varname>
in order to speed up the download process. The more reliable
your connection with the server then the smaller you can make
them. As you download each chunk of files, turn the timeouts
down slowly, one at a time, and pay attention to see if
decreasing that timeout makes your connection less reliable. If
that happens then you have gone too low and you should increase
the timeout a little.</para>
<tip>
<para>See the
<application>ncftp</application>
man pages for descriptions of the timeout variables, there
are 3 of them.</para>
</tip>
<sidebar>
<para>My timeout variables are
<command>set</command>
as so:
<simplelist>
<member>connect-timeout : 20</member>
<member>control-timeout : 10</member>
<member>xfer-timeout : 3600</member>
</simplelist>
</para>
</sidebar>
</sect2>
</sect1>
<sect1 id="partitions" xreflabel="Partitions">
<title>Partitions</title>
<sect2>
<title id="twoconsidermore">You've got one partition but
consider making more.</title>
<para>You may find as you're upgrading that having a separate
partition for backups can be very handy. You can choose to
stick with just one partition for Linux but consider the
possible flexibility that adding one or more spare partitions
might give you when upgrading.</para>
2002-03-02 07:00:00 +00:00
<para>A spare partition can preserve backups during an
installation. For example, backup the /etc and /home
directories or store your downloaded rpm packages.
<application>mount</application>
the partition to a temporary point while restoring the backups.
After restoring from the backups, that partition can be erased
and remounted at a more permanent point, integrating it into
the running system. If the partition is large enough to fit
both the backups and the files that are normally installed in
that mount point, then it can be mounted at the permanent point
during installation and won't need to be erased. This was my
case.</para>
</sect2>
<sect2>
<title id="twojustone">Just one spare partition?</title>
<para>If you decide to create a spare partition for backups you
have the choice of making one big partition or several smaller
ones. Installing on one partition is simpler than multiple
ones. If you only use one partition now, it might be possible
to divide the partition into smaller partitions after the
installation. But non-destructive repartitioning (programs like
<application>fips</application>
or
<application>Partition Magic</application>)
<!-- FIXME: extra white space -->
will be necessary if that partition has data on it.</para>
2002-03-02 07:00:00 +00:00
<para>Having one, large spare partition is convenient because
it can fit all of the backup data in one place.
<emphasis>But</emphasis>
that can have the disadvantage of being wastefully large when
trying to integrate it into your new installation. For instance
with Linux fully installed on the other partition, where would
you mount the spare partition? The big mount points like
<filename>/usr</filename>
and
<filename>/home</filename>,
<!-- FIXME: extra white space -->
are already be installed and mounted. What other directories
need a large partition? Your choices are limited.</para>
<para>On the other hand, multiple partitions can give some
flexibility during the backup and installation that a large one
2002-03-02 07:00:00 +00:00
doesn't have. It will be more complicated to break up your
backup data across several spare partitions but when the
partitions are remounted you'll have more options of where to
mount them. Mount the spare partitions as extra swap space,
<filename>/opt</filename>,
<!-- FIXME: extra white space -->
<!-- FIXME: extra white space -->
<filename>/etc</filename>,
<!-- FIXME: extra white space -->
or many other of the smaller directories. It will be easier
to mount the spare partitions at these points since they are a
little less crucial to a running system as directories like
<filename>/</filename>
or
<filename>/usr</filename>.
<!-- FIXME: extra white space -->
If you find that you didn't give some mount point a big
enough partition and you'd like to give it some more space then
a small spare partition can be mounted to some directory under
that original mount point, in order to expand it.</para>
<sidebar id="expandrootpartition"
xreflabel="Expanding the root partition">
<para>For instance, I had
<filename>/</filename>
mounted on too small a partition. It ran out of space a
couple of times after the upgrade. But I had a spare
partition which was mounted to a temporary point called
<filename>/extra</filename>.
<!-- FIXME: extra white space -->
When I saw that the
<filename>/var</filename>
directory was the cause of the
<filename>/</filename>
partition getting filled, I was able to mount the spare
partition as
<filename>/var</filename>.
<!-- FIXME: extra white space -->
That freed up enough space on the
<filename>/</filename>
partition and gave the new
<filename>/var</filename>
partition more room to grow.</para>
</sidebar>
<para>It is up to you if you want to give Linux one partition
2002-03-02 07:00:00 +00:00
for convenience or if you want to try multiple partitions for
flexibility. There isn't a single correct answer for all
systems.</para>
<tip>
<para>There is a detailed HOWTO
(<xref endterm="partitionhowto" linkend="partitionhowto" />)
<!-- FIXME: extra white space -->
on partitioning if you'd like to learn more about them and
2002-03-02 07:00:00 +00:00
their use.</para>
</tip>
<sidebar>
<para>My situation wasn't ideal but it will be a good example
to explain some ideas. While upgrading my Linux I made a
mistake that completely prevented my kernel from booting. The
mistake was improperly upgrading the
<application>glibc</application>
libraries. As a result of that I had to re-install my old
version of Linux before being able to use the upgrade rpms
that I had downloaded. I was lucky to have a separate
partition (my Windows partition) to store the downloaded rpms
while I re-installed Linux. The spare partition saved me from
having to destroy over 600 Mbytes of downloads. Because of
that spare partition, I was able to re-partition, re-format
and re-install Linux without loosing any of the backup
data.</para>
<para>When I installed, I was so pleased at the value of
having an extra partition that I decided to make several
partitions on the Linux side of my hard drive to give me the
most flexibility for the next time that I
re-installed.</para>
</sidebar>
</sect2>
<sect2>
<title id="twopartitiontools">Partitioning tools</title>
<para>When you have multiple partitions in Linux the partitions
2002-03-02 07:00:00 +00:00
should be appropriately sized for the directory that they'll be
mounted as. You can estimate those sizes based on my setup, but
it would be better if you based those sizes on your existing
installation. To check the size of a directory issue the
command:</para>
<para>
<prompt>bash$</prompt>
<command>du</command>
<parameter>-sh</parameter>
<filename>
<replaceable>[FILE]</replaceable>
</filename>
</para>
<para>One possible approach is to use one (or more than one)
partition for holding your backup data. Use the remaining ones
to complete the Linux installation. This, of course, assumes
that your hard drive is large enough to fit all of this. Check
your installation requirements to get an idea of how much space
you'll need to install Linux. Compare that to your hard drive
space devoted to Linux and maybe you'll find that the
difference leaves you enough room to backup on the same hard
drive. This is a very convenient way to temporarily backup
during an upgrade or install.</para>
<sidebar>
<para>Half of my 8 gigabyte drive is devoted to Windows and
the other half to Linux. The first primary partition
(<medialabel>/dev/hda1</medialabel>)
<!-- FIXME: extra white space -->
was used to backup the rpm packages, as they were
downloaded. The second primary partition
(<medialabel>/dev/hda2</medialabel>)
<!-- FIXME: extra white space -->
reserves the physical space for the logical partitions.
Those logical partitions are the ones that are mounted by
Linux. This second primary partition is never mounted
directly. While re-installing, I used one of these logical
partitions for backup in addition to the first primary
partition.</para>
</sidebar>
<tip>
<para>Use
<application>fdisk</application>
or your distribution's installation program, to display
partition information. Run
<application>fdisk</application>
as root. The partitions can be manipulated later.</para>
<para>
<prompt>bash#</prompt>
<command>fdisk</command>
<parameter moreinfo="none">-l</parameter>
<medialabel>
<replaceable>device</replaceable>
</medialabel>
</para>
</tip>
<tip>
<para>Check how much free space is on your partitions.</para>
<para>
<prompt>bash$</prompt>
<command>df</command>
<parameter>-h</parameter>
<filename moreinfo="none">
<replaceable>[FILE]</replaceable>
</filename>
</para>
</tip>
<tip>
<para>The mount point information can be obtained from the
file
<ulink url="file:/etc/fstab" type="local file">
/etc/fstab</ulink>
or with
<application>mount</application>
using no arguments.</para>
<para>
<prompt>bash$</prompt>
<command>mount</command>
</para>
</tip>
<caution>
<para>Whichever partition(s) hold your backups, make sure
that you do not reformat or resize it during installation.
Either of those actions would destroy your backups.</para>
</caution>
<tip>
<para>You can use
<application>top</application>
or
<application>kpm</application>
to monitor how much swap space your system uses.</para>
</tip>
</sect2>
<sect2>
<title id="twopartitionexample">A partitioning example</title>
<sidebar>
<para>I chose to create several partitions. I'll explain what
partitions I made and my reasons for making them. Read on and
decide for yourself if you think that my examples are worth
trying on your system.</para>
</sidebar>
<sidebar>
<table id="partitiontable" xreflabel="Partition Table">
<title>Here is how my logical partitions are mounted and
their usage :</title>
<tgroup cols="5">
<thead>
<row>
<entry>Partition</entry>
<entry>Mount point</entry>
<entry>Size</entry>
<entry>Used space</entry>
<entry>Used percentage</entry>
</row>
</thead>
<tbody>
<row>
<entry>/dev/hda5</entry>
<entry>/home</entry>
<entry>
<property>963 Mbytes</property>
</entry>
<entry>
<property>596 Mbytes</property>
</entry>
<entry>65%</entry>
</row>
<row>
<entry>/dev/hda6</entry>
<entry>/boot</entry>
<entry>
<property>15.9 Mbytes</property>
</entry>
<entry>
2002-03-02 07:00:00 +00:00
<property>3.32 Mbytes</property>
</entry>
<entry>22%</entry>
</row>
<row>
<entry>/dev/hda7</entry>
<entry>/usr</entry>
<entry>
<property>1.97 Gbytes</property>
</entry>
<entry>
<property>1.18 Gbytes</property>
</entry>
<entry>63%</entry>
</row>
<row>
<entry>/dev/hda8</entry>
<entry>swap (not mounted)</entry>
<entry>
<property>64.2 Mbytes</property>
</entry>
<entry>
<property>27.0 Kbytes</property>
</entry>
<entry>4.2%</entry>
</row>
<row>
<entry>/dev/hda9</entry>
<entry>/var</entry>
<entry>
<property>64.4 Mbytes</property>
</entry>
<entry>
<property>44.8 Mbytes</property>
</entry>
<entry>74%</entry>
</row>
<row>
<entry>/dev/hda10</entry>
<entry>/opt</entry>
<entry>
<property>884 Mbytes</property>
</entry>
<entry>
<property>352 Mbytes</property>
</entry>
<entry>42%</entry>
</row>
<row>
<entry>/dev/hda11</entry>
<entry>/</entry>
<entry>
<property>135 Mbytes</property>
</entry>
<entry>
<property>59.8 Mbytes</property>
</entry>
<entry>47%</entry>
</row>
</tbody>
</tgroup>
</table>
</sidebar>
<para>This table gives you an idea of how big Linux is with
XFree86, KDE 2 and lots of other goodies. Check your
distribution's size requirements to find out how much space it
takes up. I'll quickly discuss each of these partitions so that
you can understand them and you can come up with your own
strategy.</para>
</sect2>
<sect2>
<title id="twowhypartitions"
xreflabel="Why all of those partitions?">Why all of those
partitions?</title>
<para>My
<emphasis>
<filename>/home</filename>
</emphasis>
partition was used for backup during installation. During
installation this can be mounted as the normal
<filename>/home</filename>
directory. This is the directory that holds all of the user
accounts and the users' personal data. Make sure that none of
the existing directories on that partition have the same names
as any of the users that you will be adding during
installation. If they have the same name then your data could
get overwritten. Also don't name any of the directories as
<filename>/home/httpd</filename>
which belongs to
<application>apache</application>.
<!-- FIXME: extra white space -->
Once mounted, the upgrade process can start from these
backups. Use temporary names for the backups of the user
accounts and allow the installation to create new users.
Restore the data to the new user directories after upgrading
the rest of system.</para>
<para>The
<emphasis>
<filename>/boot</filename>
</emphasis>
partition holds the kernel image and associated files and
possibly the boot loader
(<application>grub</application>).
<!-- FIXME: extra white space -->
It tends to be small. It can be useful for positioning the
kernel below cylinder 1024 on large hard disks in order to
avoid the well documented BIOS limitation. This partition will
be too small to be much use for backups.</para>
<para>The
<emphasis>
<filename>/usr</filename>
</emphasis>
partition will be the largest because it holds the majority of
your programs. It has the size to be useful for backup but
since so much will be placed here during installation, it might
be complicated to figure out how much space to leave for the
programs. Of course, if this partition is larger than the total
amount specified by the installation requirements than it
should be fine to use the remaining space for backup since this
directory will surely be smaller than that
specification.</para>
<para>The
<emphasis>swap</emphasis>
partition and the
<emphasis>
<filename>/extra</filename>
</emphasis>
partition were sized and positioned very specifically. With 64
Mbytes of RAM I wanted a swap partition that could be as much
as double the amount of RAM. That would mean that I'd need
about a 128 Mbyte swap file. In Linux kernel version 2.1, 128
Mbytes is the upper limit of the size of a single swap
partition but that limit has been raised since then. My system
doesn't usually use much swap space though, so I broke 128 in
to two partitions. One was made into a swap partition and the
other was made mountable by formatting it as an ext2. This gave
me the option of later changing the second partition to a swap
partition, but to be able to use it for file space for
now.</para>
<note>
<para>Note: The
<filename>/extra</filename>
was remounted as
<filename>/var</filename>
as explained in
<xref endterm="expandrootpartition"
linkend="expandrootpartition" />
and that is why
<filename>/extra</filename>
2002-03-02 07:00:00 +00:00
doesn't appear in the previous table.</para>
</note>
<sidebar>
<para>I made the
<filename>/extra</filename>
and swap partitions about 64 Mbytes a piece. If I found that
I needed more swap space I could convert the
<filename>/extra</filename>
partition to a swap partition. For the time being, I can
mount the
<filename>/extra</filename>
partition and use it for storage. Finally, I also positioned
the
<filename>/extra</filename>
between the
<filename>/</filename>
and
<filename>/opt</filename>
partitions so that the
<filename>/extra</filename>
partition could be combined with either one of those
partitions to expand their size.</para>
</sidebar>
<para>The
<emphasis>
<filename>/opt</filename>
</emphasis>
partition holds some more programs. And in that way, it has the
same problems in using it for a backup partition as the
<filename>/usr</filename>
partition. You'll need to have and idea of how much space the
upgraded programs will take up and the remaining space is
available for backup data. Contributing to the 352 Mbytes (as
shown in the table above
<xref endterm="partitiontable" linkend="partitiontable" />.)
<!-- FIXME: extra white space -->
of my
<filename>/opt</filename>
partition are
<application>acroread-4.0</application>,
<!-- FIXME: extra white space -->
<application>KDE</application>,
<!-- FIXME: extra white space -->
<application>KDE 2</application>
and
<application>rvplayer5.0</application>.
<!-- FIXME: extra white space -->
</para>
<note>
<para>Note that if you have
<application>Netscape</application>
it also gets installed in
<filename>/opt</filename>.
<!-- FIXME: extra white space -->
</para>
</note>
</sect2>
<sect2>
<title id="twofreshinstall">Starting with a fresh
install</title>
<orderedlist>
<title>What are the good reasons for erasing your Linux and
starting with a fresh install?</title>
<titleabbrev>Why perform a fresh install?</titleabbrev>
<listitem>
<para>Your distribution may want you to.</para>
</listitem>
<listitem>
<para>Linux has a mess of programs and files that you don't
want to keep and would love an easy way to get rid of
them.</para>
</listitem>
<listitem>
<para>Installing on a new hard drive.</para>
</listitem>
<listitem>
<para>You've got no files that you care about
loosing.</para>
</listitem>
<listitem>
<para>You don't have time to do anything more than the
minimum effort and your backups are complete and
up-to-date.</para>
</listitem>
</orderedlist>
</sect2>
<sect2>
<title id="twowrapup">Wrap up ideas</title>
<para>In conclusion, there are many possible ways of
re-arranging your data between various partitions. The
advantage that a backup partition gives is to keep an
undisturbed copy of the data while doing a complete install.
This has been just one possible scheme and gives you an idea of
how much space is needed for Linux in the various directories.
Gathering hard drive requirements from your existing system
before installing will be very useful if you decide to
re-partition the drive.</para>
<caution>
<para>If you repartition a drive that has data in one or more
partitions make sure that you don't change the size of any of
the partitions holding data. If you do the data will be
destroyed with any standard partitioning program like
<application>fdisk</application>.
<!-- FIXME: extra white space -->
</para>
<para>If you accidentally change the size of a partition
which is holding backup data, don't panic. All you have to do
is either quit the application, or have it re-read the
partitioning information from the disk. In
<application>fdisk</application>
quit without writing and start over again like this:</para>
<para>
<prompt>fdisk Command (m for help):</prompt>
<command>q</command>
</para>
</caution>
</sect2>
</sect1>
<sect1 id="installprecautions">
<title>Prepare for trouble, before installing</title>
<sect2>
<title id="twolibraryupgrade">The dangers of upgrading the base
libraries</title>
<caution>
<para>The kernel is dependent on the GNU libraries. If the
libraries are removed then the running kernel can't access
them. The kernel will stop running. That is a bad thing.
<emphasis>Do not erase, uninstall, upgrade or delete the GNU
libraries!</emphasis>
At least not until you're certain that the kernel is using
the upgraded libraries. I'll explain this more in the next
section.</para>
</caution>
</sect2>
<sect2>
<title id="twoupgradevsinstall">'rpm -U' verses 'rpm
-i'</title>
<para>
<itemizedlist>
<title>When
<application>rpm</application>
upgrades (
<parameter>-U</parameter>
) a package it will :</title>
<listitem>
<para>Compare the version of the rpm file with the
version of the corresponding, installed package to be
sure that the rpm file is more recent. There are other
checks that it runs for file conflicts, dependencies,
etc.</para>
</listitem>
<listitem>
<para>Install the new package files and register the new
package name.</para>
</listitem>
<listitem>
<para>Remove the old package files and the package name
from the rpm database.</para>
</listitem>
</itemizedlist>
</para>
<para>
<itemizedlist>
<title>When
<application>rpm</application>
installs
<!-- FIXME : extra white space. -->
(<parameter>-i</parameter>)
<!-- FIXME : extra white space. -->
a package it will :</title>
<listitem>
<para>Do the same checks for installed versions, file
conflicts, dependencies, etc.</para>
</listitem>
<listitem>
<para>Install the new package files and register the new
package name.</para>
</listitem>
</itemizedlist>
</para>
<para>You'll notice that the main difference is that upgrading
2002-03-02 07:00:00 +00:00
removes the old package but installing doesn't try to remove an
old package. Install assumes there isn't a package installed on
your system which corresponds to this new package. That is an
important difference when upgrading crucial packages that your
system is using.</para>
<para>Normally you will be upgrading the various packages. But
for crucial packages, like the base GNU libraries installing
(<parameter moreinfo="none">-i</parameter>)
<!-- FIXME : extra white space -->
a package allows the old package to remain. This is necessary
2002-03-02 07:00:00 +00:00
when your running system is dependent on the files of the old
package.</para>
<para>When you install a new package, and there is an old one
on your system,
<application>rpm</application>
will not notice the old package in the database but it will see
the files of the package.
<application>rpm</application>
will complain about file conflicts. The complaints mean that
some (or all) of the files of the new package have the same
name and location as the files of the old, running package.
<application>rpm</application>
won't install the new package as long as it's detecting this
error. You can use
<parameter moreinfo="none">--force</parameter>
to have rpm ignore the error, but be careful if you do. Be sure
that
<application>rpm</application>
reports no other errors before forcing the install. Correct all
<emphasis>other</emphasis>
errors before forcing. Once forced to install,
<application>rpm</application>
will overwrite the old files with the new ones. Since this
2002-03-02 07:00:00 +00:00
doesn't delete the old files, but overwrites them instead, your
system can still access the files and still run. Once
installed, querying
<application moreinfo="none">rpm</application>
will accurately report to you that both the old and the new
packages are installed. The fact that the database has both
versions listed is harmless to the database. But make a note of
the redundant packages in case you want to remove the old one
later.</para>
<para>There is a possible problem with this technique though.
The new files might have some compatibility bugs with the
running system. I can't tell you how to avoid them. This is a
risk that you will be taking with this technique. The
advantages of this technique is that you're using the running
system to upgrade itself and the system may not need to be shut
down.</para>
</sect2>
<sect2>
<title id="twokernelupgrade">The dangers of upgrading the
kernel</title>
<para>Pretty much the same as the dangers of upgrading the GNU
libraries. You shouldn't remove a running kernel's files. That
would stop it from running. Also, overwriting the existing
files with the upgraded ones runs the risk of
incompatibilities. But there's no way to avoid that risk if you
want to upgrade a running kernel. To avoid this risk of
overwriting, your distribution may have created different
directories or different filenames. Since the kernel is
resident in memory and that makes it easier to upgrade than the
libraries. It is possible to upgrade
(<parameter moreinfo="none">-U</parameter>)
<!-- FIXME : extra white space -->
2002-03-02 07:00:00 +00:00
the binary kernel package, once all of it's dependencies have
been installed or upgraded properly. But you should be aware of
all of these possible problems before you try. At the very
least, you should make backup copies of the kernel image under
<filename moreinfo="none">/boot</filename>
and the modules under
<filename moreinfo="none">/lib/modules</filename>
before upgrading the kernel binary package. Restore those
backups in case the upgrade stops the kernel from
booting.</para>
</sect2>
<sect2>
<title id="twoavoidmistakes">Ways to avoid mistakes</title>
<itemizedlist>
<listitem>
<para>Test an
<application>rpm</application>
2002-03-02 07:00:00 +00:00
command with
<parameter>--test</parameter>
before you perform one that might be dangerous. Look for
any error messages, understand why they're being generated
and fix them before issuing the
<application>rpm</application>
command.</para>
</listitem>
<listitem>
<para>Make sure that downloaded packages downloaded
sucessfully once they're finished downloading. The easiest
way to check this is to compare the file size on the server
with the file size on your hard drive. Or you could use
<parameter moreinfo="none">-K</parameter>
to have
<application>rpm</application>
do it's more secure and reliable checks. If you've got
<application>PGP</application>
set up right, do the full checks; or use
<parameter moreinfo="none">--nopgp</parameter>
to skip the
<application>PGP</application>
check if you don't. Verifying that the package downloaded
correctly for the crucial packages (the base packages such
as the kernel packages and the GNU libraries) is an
important safeguard. A bad package which installs most of
the files, but not all of them, can really mess up your
system. (I know that is possible because it happened to me
due to a problem with Caldera's 2.4.14 kernel package.)
Checking is not as necessary for the less crucial packages
though. So you don't need to bother for all
packages.</para>
</listitem>
<listitem>
<para>For some packages it might be a good idea to make
backup copies of the files before upgrading. If the upgrade
2002-03-02 07:00:00 +00:00
doesn't work, these backups can be used to restore without
the need of
<application>rpm</application>.
<!-- FIXME: extra white space -->
Copying the files back in place won't restore the rpm
database, of course, but it will give the program the files
that it needs to run again. The times when you might need
this, as stated before, are the crucial base packages and
also
<application>rpm</application>
itself.</para>
</listitem>
<listitem>
<para>Keep track of what your doing. Knowing your progress
in downloading and upgrading helps you to avoid silly
mistakes such as downloading a package twice or missing a
package that you thought you had upgraded but haven't even
downloaded. There are lots of packages in any
distribution.</para>
</listitem>
</itemizedlist>
<tip>
<para>If you ever want to backup your rpm database it's
located at
<ulink url="file:/var/lib/rpm" type="local file">
/var/lib/rpm</ulink>.
<!-- FIXME: extra white space -->
</para>
</tip>
<sidebar>
<para>I have 576 packages installed on my system. Keeping
track of all of them in your head is complicated. Having some
written records of your progress will help ease your
burden.</para>
</sidebar>
</sect2>
<sect2>
<title id="twokeepingtrack">Keeping track of your
progress</title>
<para>rpm can generate a list of the installed packages for you
by querying all the packages.</para>
<para>
<prompt>bash$</prompt>
<command moreinfo="none">rpm</command>
<parameter moreinfo="none">-qa</parameter>
<parameter>|</parameter>
<command>sort</command>
2002-03-02 07:00:00 +00:00
<parameter>&#62;</parameter>
<filename>currentrpms</filename>
</para>
<para>Compare that with a list of the upgrade rpms. Generate
2002-03-02 07:00:00 +00:00
the upgrade list by first, changing to the directory where you
downloaded the upgrade rpms, then issue this command to make a
list.
<application>sed</application>
removes the '.i386.rpm' file extensions.</para>
<para>
<prompt>bash$</prompt>
<command>ls</command>
<parameter>-1</parameter>
<parameter>*.rpm</parameter>
<parameter>|</parameter>
<command>sort</command>
<parameter>|</parameter>
<command>sed</command>
<parameter>-e</parameter>
<parameter>"s/\.i386\.rpm.*//"</parameter>
2002-03-02 07:00:00 +00:00
<parameter>&#62;</parameter>
<filename>upgraderpms</filename>
</para>
<para>Finally, to make it easier to compare those two sorted
lists, use
<command moreinfo="none">diff</command>
to highlight the differences.</para>
<para>
<prompt>bash$</prompt>
<command>diff</command>
<parameter>-u</parameter>
<filename>currentrpms</filename>
<filename>upgraderpms</filename>
<parameter>|</parameter>
<command moreinfo="none">less</command>
</para>
<para>Basically, packages with a '+' before the name are files
that are not upgraded/installed yet. Packages with a '-' are
installed on the system but have no upgrade file. Packages with
a space character are just listed as contextual
information.</para>
<para>While that gives you a nice written record of your
progress, it is cumbersome to read.
<application>Kpackage</application>
2002-03-02 07:00:00 +00:00
is a tool that arranges all of the packages into a categorized
tree. It can sort out the upgrade packages for you, giving you
2002-03-02 07:00:00 +00:00
a convenient, expandable tree to look at. I used both tools
while upgrading.</para>
</sect2>
<sect2>
<title id="twootherproblems">Other problems, beyond your
control.</title>
<para>"Ooops! After that upgrade, program
<application>
<replaceable>foo</replaceable>
</application>
won't run any more."
<application>
<replaceable>foo</replaceable>
</application>
could be the program that you just upgraded or one that you
didn't realize was related to that program that you just
upgraded.</para>
<para>Frontend programs are built to rely on other backend
programs to do some of the work, this is how upgrading one
program can affect others. Libraries are always used as a
backend of another program. So, when upgrading backend programs
or libraries, the frontend program may stop working because of
incompatibilities between the old frontend and the new
backend.</para>
<para>On the other hand, you shouldn't get that problem when
upgrading frontend programs because
<application>rpm</application>
will give you dependency errors as you try to upgrade. The
dependencies tell you which backends and libraries the frontend
is dependent on. These dependencies must be upgraded before, or
at the same time as, the frontend. But since the backend
programs don't need the frontends in order to be complete,
there tend to be very few dependencies errors when upgrading
backends.</para>
<para>There's no easy way to avoid these incompatabilities. If
you're lucky, you won't see them at all.</para>
</sect2>
<sect2>
<title id="tworecover">Ways to recover from mistakes</title>
<orderedlist>
<listitem>
<para>If upgrading a backend or library causes a frontend
to stop working, the best solution, obviously, is to
upgrade the front end.</para>
</listitem>
<listitem>
<para>This might not always be possible, though. There may
be so many dependencies to satisfy, before upgrading the
frontend, that it will take you too long to complete them
all before getting your program back online. It may be
2002-03-02 07:00:00 +00:00
worth it to downgrade back to the original version of the
backend so that you can get the frontend program working
immediately. This can be done by either :</para>
<para>
<prompt moreinfo="none">bash#</prompt>
<command>rpm</command>
<parameter>-U</parameter>
<parameter>--force</parameter>
2002-03-02 07:00:00 +00:00
<filename>&#60;packagenames&#62;</filename>
</para>
<para>
<prompt moreinfo="none">bash#</prompt>
<command>rpm</command>
<parameter>-U</parameter>
<parameter>--oldpackage</parameter>
2002-03-02 07:00:00 +00:00
<filename>&#60;packagenames&#62;</filename>
</para>
</listitem>
<listitem>
<para>If you can't upgrade nor downgrade, go to your
backups. If you made backups of the actual files that were
2002-03-02 07:00:00 +00:00
a part of the old package you can now use a simple
<application>cp</application>
command to restore the program. It can be complicated to
get all of the files of a package backed up. But even if
you miss a few, restoring some of them might get your
program running well enough to function for your needs. You
should be able to use an rpm upgrade (or maybe even a
downgrade) later, to get all of the files matching the
database.</para>
</listitem>
<listitem>
<para>In the worst case, if the crippled program was so
crucial that you can't run your Linux system anymore,
you'll need to run an alternate system. Boot up your spare
Linux
(<xref endterm="progtomsrlbt" linkend="progtomsrlbt" />
or
<xref endterm="proginstallcd" linkend="proginstallcd" />)
<!-- FIXME: extra white space -->
and try to use that to restore your backups or rpm
packages.</para>
</listitem>
</orderedlist>
</sect2>
</sect1>
<sect1 id="upgrade">
<title>Upgrade the packages</title>
<sect2>
<title id="twoupandrunning">Does everybody have their Linux up
and running?</title>
<itemizedlist>
<title>Let's just get on the same page now. There have been
many paths you could have taken to get to this point.</title>
<listitem>
<para>Now, all of the partitioning of the hard drive is
done.</para>
</listitem>
<listitem>
<para>You have a working Linux system running on that hard
drive.</para>
</listitem>
<listitem>
<para>That Linux should have a working copy of
<application>rpm</application>
with its database of packages up-to-date, relative to the
Linux system.</para>
</listitem>
<listitem>
<para>Your favorite GUI wrappers, frontends or replacements
to
<application>rpm</application>
are helpful and convenient to have at this point. (See
<xref endterm="othertools" linkend="othertools" />
for some of your options.)</para>
</listitem>
<listitem>
<para>Backups are on spare partitions or removable media,
are up-to-date and are safe.</para>
</listitem>
<listitem>
<para>You've obtained all of the packages needed to perform
the upgrade. (If you're still in the process of downloading
them, you'll need to have at least the base packages and
all of their dependencies. The web of dependencies can be
complicated and surprising. To be safe, obtain as much as
you can before starting the upgrade process. You don't want
to be caught without a necessary package in the middle of a
crucial upgrade, or your system might be harmed.)</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title id="twodeterminebase">Determining which packages are the
base packages</title>
<para>Start by upgrading the base packages. Which packages are
they? There are several ways to identify them. Start with the
package name but realize that their names will vary depending
on which distribution you're working with.</para>
<orderedlist>
<listitem>
<para>Base GNU/Linux system libraries:
<simplelist type="inline">
<member>glib</member>
<member>glibc</member>
<member>libc5 (for backward compatibility)</member>
</simplelist>
</para>
</listitem>
<listitem>
<para>the Linux kernel's dependencies:
<simplelist type="inline">
<member>modutils</member>
<member>acpid</member>
<member>kernel headers</member>
<member>common kernel source</member>
<member>processor specific source packages (i386, Sparc,
Alpha, etc.)</member>
<member>etc.</member>
</simplelist>
</para>
</listitem>
<listitem>
<para>the Linux kernel:
<simplelist type="inline">
<member>linux</member>
<member>kernel</member>
<member>linux-kernel-binary</member>
<member>etc.</member>
</simplelist>
</para>
</listitem>
</orderedlist>
<para>Next check the Group field of the
<application>rpm</application>
information. Look for a string that indicates the system's base
libraries and base programs. For example, Caldera's groups look
like this :
<simplelist type="vert">
<member>"Group : System/Library"</member>
<member>"Group : System/Base"</member>
<member>"Group : System/kernel"</member>
<member>"Group : Base/Kernel"</member>
<member>"Group : System/Shell"</member>
</simplelist>
Red Hat's (Version 5.2) corresponding group names are :
<simplelist type="vert">
<member>"Group : Libraries "</member>
<member>"Group : Utilities/System"</member>
<member>"Group : Development/Tools"</member>
<member>"Group : Daemons"</member>
<member>"Group : Development/Libraries"</member>
<member>"Group : Base"</member>
<member>"Group : Shells"</member>
</simplelist>
These will include
<simplelist type="inline">
<member>the kernel packages</member>
<member>the GNU glib libraries</member>
<member>kernel-headers</member>
<member>the old libc package</member>
<member>glibc</member>
<member>etc</member>
</simplelist>.
<!-- FIXME: extra white space -->
Make sure you have all of the kernel dependencies satisfied
before you start installing any kernel packages.</para>
<tip>
<para>Check that the dependencies are satisfied by "test"
installing the kernel rpms first with the
<parameter>--test</parameter>
parameter. This will report back to you if you're missing any
dependencies.</para>
</tip>
<para>Here are the kernel requirements listed in the
<filename>
/usr/src/linux-2.4.17/Documentation/Changes</filename>
from kernel 2.4.17 to give you an idea of what packages support
the kernel. Upgrade the packages that you need before the
kernel is upgraded.
<screen format="linespecific">
&#111; Gnu C 2.95.3 # gcc --version
&#111; Gnu make 3.77 # make --version
&#111; binutils 2.9.1.0.25 # ld -v
&#111; util-linux 2.10o # fdformat --version
&#111; modutils 2.4.2 # insmod -V
&#111; e2fsprogs 1.25 # tune2fs
&#111; reiserfsprogs 3.x.0j # reiserfsck 2&#62;&amp;1|grep reiserfsprogs
&#111; pcmcia-cs 3.1.21 # cardmgr -V
&#111; PPP 2.4.0 # pppd --version
&#111; isdn4k-utils 3.1pre1 # isdnctrl 2&#62;&amp;1|grep version</screen>
</para>
<para>When doing an upgrade using the binary files, you don't
need
<application>make</application>
or the
<application>C compiler</application>.
<!-- FIXME: extra white space -->
Some of the other packages won't be needed on some
systems.</para>
</sect2>
<sect2>
<title id="twostaycautious">Stay cautious</title>
<para>Once the base libraries, the kernel dependencies and the
kernel are upgraded you've gotten through the most risky part
of the upgrade. But not the only risk. There are other crucial
packages to your system like the
<application>libz</application>,
<!-- FIXME: extra white space -->
<application>bash</application>
and
<application>ncurses</application>.
<!-- FIXME: extra white space -->
Be sure to satisfy any dependencies and solve any errors for
these or your prompt will not function and you may not be able
to boot. The system initialization scripts are crucial, also.
And so are the base libraries for
<application>KDE</application>
along with the
<application>Qt</application>
libraries.
<application>X</application>
2002-03-02 07:00:00 +00:00
has its crucial dependencies too.</para>
<para>So, in general, be aware of your packages. Try to read
the package information before upgrading it. From this
determine how cautious you need to be while upgrading
it.</para>
</sect2>
<sect2>
<title id="tworpmpitfall">Pitfall when upgrading rpm</title>
<para>There are a couple of problems with upgrading
<application>rpm</application>
that you should be aware of.
<application moreinfo="none">rpm</application>
isn't just a frontend program, it is also a library and a
2002-03-02 07:00:00 +00:00
backend. Other programs might be dependent on it. In
particular, if you have a graphical frontend to
<application moreinfo="none">rpm</application>
2002-03-02 07:00:00 +00:00
it will be dependent on it. Upgrading
<application moreinfo="none">rpm</application>
can cause a conflict between it and any other program which
depends on it.
<application moreinfo="none">rpm</application>
will run fine after the upgrade but the other application(s)
might stop running.</para>
2002-03-02 07:00:00 +00:00
<para>Also, packages that were built with the older version of
<application moreinfo="none">rpm</application>
2002-03-02 07:00:00 +00:00
might not be compatible with the new version of
<application moreinfo="none">rpm</application>
and so it might not be able to extract the files in the
package. There can be an incompatibility between the new
<application moreinfo="none">rpm</application>
and older rpm packages.</para>
<para>For these reasons, I recommend that you hold off
upgrading
<application moreinfo="none">rpm</application>
a long as you can. It will not hurt anything to wait, but it
2002-03-02 07:00:00 +00:00
could be slightly harmful if you do not.</para>
</sect2>
<sect2>
<title id="twoignoretar">rpm ignores tar balls</title>
<para>
<application>rpm</application>
has some smarts built into it, but sometimes it is not smart
enough. If you have any tar balls installed that serve as a
dependency to an rpm package,
<application>rpm</application>
will not see those files and will give you dependancy errors.
In that case, the files that rpm is looking for are in place
but since they weren't entered in the rpm database,
<application>rpm</application>
ignores the files. To work around this, you'll have to have
<application>rpm</application>
2002-03-02 07:00:00 +00:00
ignore dependencies
<parameter>--nodeps</parameter>
or even
<parameter moreinfo="none">--force</parameter>
it to stop complaining.</para>
</sect2>
<sect2>
<title id="twofullspeed">Full speed ahead</title>
<para>Once you get through the base packages, upgrading will
start to go quicker. Soon you will get in the habit of how
cautious you need to be. As things get upgraded, you'll start
to feel the gratification and excitement of new features and
new looks to your applications!</para>
</sect2>
</sect1>
<sect1 id="restore">
<title>Restoring and Cleaning up</title>
<sect2>
<title id="twomountbackup">Restoring and mounting the backup
directory</title>
<para>If you were using a spare partition for backup of rpm
packages and system files it is now time to mount that into the
system.</para>
<procedure>
<step>
<para>Choose the mount point that you planned on using from
the
"<xref endterm="twowhypartitions"
linkend="twowhypartitions" />"
<!-- FIXME: extra white space -->
section.</para>
</step>
<step>
<para>That mount point will already exist as a directory
with files in it as a part of the running system. Because
of this you'll need to integrate the new files with your
old, backed up files. Some old files many need to be
deleted. Some old files need to be merged with the new
files. And, some new files many need to be deleted.</para>
<para>It will take some work to merge old configuration
files with new ones. For some packages though, there will
2002-03-02 07:00:00 +00:00
be no work in integrating the configuration files because
the file format hasn't changed in the new version.</para>
<para>The directories
<filename>/etc</filename>
and
<filename moreinfo="none">/home</filename>
contain the majority of the configuration files.</para>
</step>
<step>
<para>There are some more configuration files to merge once
you're done with those.
<application>rpm</application>
has a feature of saving backup copies of the configuration
files that it replaces. It will do this only when it can
not merge the files on its own. In that case it will save
the original file by appending ".rpmsave" to the file name.
Then it installs the new configuration file. You should
<application>locate</application>
all of the files with that string at the end of the name,
and merge them with the new configuration file, as
necessary.</para>
</step>
2002-03-02 07:00:00 +00:00
<step>
<para>Also, when
<application>rpm</application>
2002-03-02 07:00:00 +00:00
replaces a file that wasn't installed with
<application moreinfo="none">rpm</application>
2002-03-02 07:00:00 +00:00
, the original will be saved with ".rpmorig" added to the
end of the filename. Find those files and merge them with
their replacements, as necessary.</para>
</step>
<step>
<para>Once the configuration files are merged, test out the
new mount point by mounting it. The system may be using
that mount point and not allow you to re-mount it. In that
case, you'll have to skip to the next step.</para>
</step>
<step>
<para>Make a backup of
<filename>/etc/fstab</filename>
2002-03-02 07:00:00 +00:00
to restore in case this modification doesn't work
correctly.
<filename>/etc/fstab</filename>
will have to be modified to make the new mounting
permanent. Reboot after modifying it to make sure that it
is working correctly.</para>
</step>
</procedure>
<note>
<para>While all of this merging seems daunting, don't loose
heart. In general, the configuration files which haven't been
changed since they were originally installed on your system
shouldn't need to be merged by hand. For the most part, the
only time configuration files will need to be merged by hand
is when there are major changes to their format, done by the
program author. That should not happen often.</para>
<para>But if there were configuration files on your system
that had large changes from the default, they might need to
be merged.</para>
</note>
</sect2>
<sect2>
<title id="twooldpackages">Old packages</title>
<para>Once all of the rpm files have been used to upgrade, you
might find that there are some packages that weren't upgraded.
This is because they were a part of the old distribution's
version but not the new version. Since they are not needed by
the new distribution they shouldn't be necessary for your
system. You can remove them if they aren't packages that you
use.</para>
<para id="tipupgraderedundancy"
xreflabel="Upgrade redundancy tip">You may also find some
duplicate packages installed, which only differ by version
number. This sometimes happens when
<application>rpm</application>
is forced
(<parameter>--force</parameter>)
<!-- FIXME: extra white space -->
while installing. The database is accurate in saying that there
are duplicate packages. This isn't a problem for your system or
the
<application>rpm</application>
database. Basically the newer package overwrote the common
files between the two versions of the packages. So your system
winds up with all of the new versions of the files.</para>
<para>Eventually you will probably want to correct the
redundancy, though, in order to save hard drive space and avoid
2002-03-02 07:00:00 +00:00
complicating the dependencies.
<application moreinfo="none">rpm</application>
makes it safe to erase the old package.
<blockquote>
<para>"4. [RPM] reviews the RPM database to find every file
listed as being part of the package, and if a file does not
belong to another package, deletes the file."
<footnote>
<para>From
<xref endterm="maximumrpm" linkend="maximumrpm" />
<!--xref linkend="maximumrpm" /-->
</para>
</footnote>
</para>
</blockquote>
</para>
</sect2>
</sect1>
<sect1 id="rpmtips" xreflabel="rpm command line tips">
<title>rpm command line tips</title>
<sect2>
<title id="twowhyreadrpm">Why do I need to read this when I'm
using a graphical frontend for rpm?</title>
<para>Throughout the HOWTO you have seen some tips on how to
use
<application moreinfo="none">rpm</application>
at the command line. This section adds additional tips. A
graphical frontend to
<application moreinfo="none">rpm</application>
2002-03-02 07:00:00 +00:00
is very convenient but it doesn't necessarily offer the power
and versatility of the command line. For that reason, you might
want to read this section.</para>
<para>This section gives some further explanation of how to use
the commands mentioned in the HOWTO and it adds some more
examples.</para>
<sidebar>
<para>I made the mistake of upgrading the
<application moreinfo="none">rpm</application>
package before upgrading my frontend. That caused an
2002-03-02 07:00:00 +00:00
incompatibility between the two and I couldn't run the
frontend anymore. Since there were many libraries and other
programs to upgrade before I would have a chance to upgrade
the frontend I was forced to rely on the command line to do
the rest of the upgrading. This was inconvenient for me. What
follows are some suggestions to help you if you run into this
pitfall too, and have to use the command line. See
<xref endterm="tworpmpitfall" linkend="tworpmpitfall" />.
<!-- FIXME: extra white space -->
</para>
</sidebar>
</sect2>
<sect2>
<title id="twoqueryinfomation">Query the package summary
information</title>
<para>
<prompt>bash$</prompt>
<command>rpm</command>
<parameter>-qi</parameter>
<parameter moreinfo="none">
<replaceable>packagename</replaceable>
</parameter>
</para>
<para>
<parameter>qi</parameter>
is the basic parameter to read the package descriptions and
some other fields. Querying the information is generally the
first query that you perform.</para>
<para>To look at the information from
<emphasis>all</emphasis>
of the packages, add an
<parameter>'a'</parameter>
to the parameter. This will produce lots of information that
can be used to examine the packages on your system. Redirect
the output to a file and use grep or a text editor to find text
in the file. You might want to search for all of the packages
named with a certain sub-string, all the packages of a
Distribution, all of the GPL licensed packages, etc.</para>
<remark>Proofreading bookmark is set here.</remark>
<para>
<prompt>bash$</prompt>
<command>rpm</command>
<parameter>-qia</parameter>
2002-03-02 07:00:00 +00:00
<parameter moreinfo="none">&#62;</parameter>
<filename moreinfo="none">allinfo</filename>
</para>
<para>If you want to apply the query informatiom command to an
rpm file, add a '
'<parameter moreinfo="none">p</parameter>'
<!-- FIXME: extra white space -->
to the parameters.</para>
<para>
<prompt>bash$</prompt>
<command>rpm</command>
<parameter>-qip</parameter>
<filename moreinfo="none">
<replaceable>package-filename</replaceable>
.rpm</filename>
</para>
</sect2>
<sect2>
<title id="twolistcontents">List the package contents</title>
<para>
<prompt>bash$</prompt>
<command>rpm</command>
<parameter>-ql</parameter>
<filename moreinfo="none">
<replaceable>packagename</replaceable>
</filename>
</para>
<para>If you need to list all of the files belonging to a
package, this is the query you will use. This query is helpful
if you want to know which files to backup before a crucial
upgrade.</para>
</sect2>
<sect2>
<title id="twoidentifyfile">Indentify which pacakge a file
belongs to</title>
<para>
<prompt moreinfo="none">bash$</prompt>
<command moreinfo="none">rpm</command>
<parameter moreinfo="none">-qf</parameter>
<filename moreinfo="none">
<replaceable>/foopath/foofile</replaceable>
</filename>
</para>
<para>If you know a file's name and location and you need to
know which package it belongs to, then this is the query that
you want to use.</para>
</sect2>
<sect2>
<title id="twosummarizegroup">Summarize a group</title>
<para>
<prompt moreinfo="none">bash$</prompt>
<command>rpm</command>
<parameter>-qg</parameter>
<parameter moreinfo="none">
<replaceable>groupname</replaceable>
</parameter>
</para>
<para>The grouping arranges the various packages into a
hierarchy. This reveals one branch of that hierarchy to you.
This can be useful when looking for packages of a certain
category, the "System/Base" packages for instance.</para>
</sect2>
<sect2>
<title id="twolistdependencies">List dependencies</title>
<para>
<prompt>bash$</prompt>
<command>rpm</command>
<parameter>-qp</parameter>
<parameter moreinfo="none">--requires</parameter>
<filename>
<replaceable>package filename</replaceable>
</filename>
</para>
<para>When you want to know the dependencies of a package file
this command will produce a list for you. You will have to
satisfy these dependencies before installing the package
because they are required by the package.</para>
</sect2>
</sect1>
<sect1 id="packageorder">
<title>Suggestions for package order</title>
<para>This is the order that I installed the packages on my
system, as an example for you. Don't think that you have to
follow this list exactly. Your dependecies could require
something a little different. The order you follow can have lots
of variations from this list. This is just a guide to give you a
good start.</para>
<note>
<para>Note that not all of these package are GPL
licensed.</para>
</note>
<sect2>
<title id="twopackageorder">Order of the new packages</title>
<sidebar>
<para>
<literallayout>
glib
libjpeg
libstdc++-compat
libpwdb
glib-devel
glibc-localedata
libz
libmng
qt2-nsplugin
qt2-xt
gd
gd-devel
gdbm
gdbm-devel
gdbm-devel-static
libpam
libpam-devel
bzip2
modutils
ext2fs
ext2fs-devel
ext2fs-devel-static
qt2-opengl
qt2-qimgio
ldp
ldp-en-html
ldp-en-ascii
howto
howto-en-ascii
howto-en-html
glibc
------kernel dependencies--------
gcc
binutils
util-linux
e2fsprogs
ppp
-------------kernel--------------
kernel include
linux source
kernel binary
any additional kernel modules
---------------------------------
qt
qt-opengl
qt-qimgio
qt-tutorial
qt-doc-html
qt-examples
qt-devel
qt2
qt2-devel-static
qt2-devel
qt2-doc-html
qt2-examples
qt2-tutorial
jade
ncurses
cracklib
libstdc++
gcc-doc
libtiff
libtiff-devel
libpng
libpng-devel
libpng-devel-static
libtiff-devel-static
mm
mm-devel
SysVinit
SysVinit-scripts
net-scripts
OpenLinux
setup
DEV
OpenLinux-keys
bool
cgetty
cpio
PHI
PHI-data
bdflush
coas2
fbset
fileutils
grep
kbd
lisa
sed
setserial
sysklogd
tar
termcap
utempter
which
gtk+
gtk+-perl
imlib
imlib-devel
mesa
mesa-devel
xpm
xpm-devel
libpwdb-devel
libtool
libcap
libcap-devel
sh-utils
freetype
slang
slang-devel
libident-devel
libjpeg-devel
libz-devel
libz-devel-static
popt
imap-devel
isp-devel
gettext
freetype-devel
kdelibs-devel
cleandir
logrotate
fdutils
hdparm
isapnptools
pciutils
tcpdump
adduser
rsync
wget
dosemu
aumix
libmikmod
libmikmod-devel
tiff-utils
transfig
gdb
gdb-doc
expect
expect-devel
ppp-devel
Glide
afio
compat-ncurses
db
dhcp
doc-devguide-html
doc-install-html
doc-sag-html
doxygen
dump
freetype2
freetype2-devel
libstdc++-devel
libstdc++-devel-static
giftrans
jikes
eject
diffutils
gnupg
gpm
gpm-devel
gpm-devel-static
lsof
m4
m4-examples
mktemp
ncompress
strace
wdiff
dialog
col-tools
ipx
net-tools
readline
readline-devel
bc
readline-devel-static
netkit-base
netkit-ftp
netkit-rsh
netkit-telnet
pilot-link
pilot-link-devel
ed
vim
recode
sharutils
enscript
psutils
texinfo
LSM
copyrights
faq
fhs
ghostscript-doc
mailcap
mimetypes
mtabase
screen
gzip
unarj
unzip
zip
zoo
bzip2-devel
grub
lilo
file
fatfs
findutils
mkisofs
mtools
am-utils
rstatd
procps
psmisc
bash
bash2
tcsh
at
crontabs
ktzset
time
vixie-cron
zoneinfo
imap
procmail
nis-client
tcp_wrappers
xntp
apache
gnuplot
apache-devel
autoconf
automake
bin86
bison
byacc
dejagnu
flex
gawk
gawk-doc
gperf
indent
make
mawk
nasm
patch
rcs
cvs
cvs-doc-ps
ncftp
less
gv
mailx
info
doc-install-html
glib-devel-static
glibc-devel
glibc-devel-static
iptables
iptables-doc
ipxripd
ispell
ispell-english
jpeg-utils
kernel-addon
lha
libIDL
libgif
a2ps
libogg
libkwave
libmimelib
libminimagick
libqwsprite
libgif-devel
libgif-devel-static
libjpeg-devel-static
libmimelib-devel
libmimelib-devel-static
libmng-devel
libmng-devel-static
libpwdb-devel-static
libsidplay
libsigc++
libsigc++-devel
libsigc++-examples
libsmallrpc-devel
libuulib
libuulib-devel
libuulib-devel-static
libvorbis
libxml
lilo-doc
lilo-doc-ps
logcheck
ltrace
macutils
mc
mc-doc
mesa-devel-static
mgetty
mikmod
mm-devel-static
mod_backhand
minicom
openssl
man-pages
perl
perl-add
perl-cgi
perl-examples
perl-man
perl-modules
perl-pod
python
python-devel
python-doc
python-eclass
python-tk
mutt
webmin
lynx
plugger
fetchmail
tcl
tcl-devel
tclX
tclX-devel
tix
tix-devel
tk
tk-devel
tcl-devel-static
tcp_wrappers-devel
tk-devel-static
binutils
binutils-cross
kdevelop-c_c++_ref
kdelibs
kdelibs-doc
groff
groff-dvi
groff-misc
textutils
rpmcompat-devel
groff-ps
kdoc
netpbm
netpbm-devel
nfs
nfs-lockd
portmap-safer
portsentry
traceroute-safer
vim-X11
vim-help
gimp-data
teTeX
teTeX-font
teTeX-tex
jadetex
sgml-common
docbook-dtd41-sgml
docbook-dtd41-xml
sgml-tools
mysql
mysql-client
mysql-devel
openslp
openldap
openldap-devel
pam_ncp
pam_ldap
cups
cups-client
qtlinguist
teTeX-doc
xmms
mpeglib
mscompress
mt-st
nss_ldap
openmotif
parted
slocate
XFree86-server
XFree86-libs
XFree86-SVGA
XFree86-VGA16
XFree86-Mach64
XFree86-config
XFree86-fonts-75dpi
XFree86-contrib
XFree86-fonts-scale
XFree86-addons
XFree86-fonts
XFree86-imake
XFree86-programs
XFree86-setup
XFree86-twm
XFree86-xterm
XFree86-xsm
XFree86-devel
XFree86-devel-prof
XFree86-devel-static
XFree86
XFree86-Xvfb
XFree86-fonts-cyrillic
XFree86-fontserver
acpid
adjtimex
bonnie++
libaudiofile
libaudiofile-utils
kdelibs2
kdelibs2-devel
kdelibs2-devel-static
kdelibs2-doc
libao
libkdegames
lrzsz
rpm
rpm-devel
kdebase2
kdebase2-opengl
kdepasswd
kdeapps
kdebindings2
kdecoas
kdesdk2
kdestudio
kdeconfig
kpackage
xmms-devel
korganizer
ksaferppp
ghostscript-fonts
ghostscript
cervisia
kdevelop
ddd
ddd-doc
kdbg
ImageMagick
ImageMagick-devel
hwprobe
kviewshell
kdvi
qtcups
libsasl
sendmail
cupdate-console
cupdate
linux-kernel-binary
midi-instruments
SDL
htdig
arts
ark
cscope
doctool
docbook-style-dsssl
doctool-meta
ethereal
fetchmailconf
ipchains
iptables-doc-ps
tidy
tripwire
tmake
xemacs-base
xemacs-emacs-link
xemacs-icons
karm
kcalc
kdialog
kedit
kfind
kfloppy
kghostview
khexedit
khotplug
kmail
knode
knotes
koffice-libs
kspread
koffice-filters
konvert
kpm
ksirc
ksystemsnapshot
ktimemon
opera
kups
kwave
kword
perl-SGMLSpm
psgml
quanta
sendmail-cf
sendmail-doc
stunnel
tcsh-doc-html
teTeX-dvi
xemacs-mule
xmms-arts
xmms-crossfade
xmms-infinity
xmms-kj
xmms-liveice
xmms-midi
xselection
xterm-color
xtoolwait
samba
samba-doc
kscd
XFree86-server-modules
mpeglib_artsplug
nw-eps-icons
sgmltools-lite
htmldoc
expat
libxml2
libxml2-devel
libxslt
xpdf
XFree86-config-eg
groff-gxditview
gv-doc-html
klpq
mod_perl
mod_ssl
nedit
usbutils
kcharselect
pgg
man
buildkernel
samlib
util-Linux
reiserfs-utils
docbook-dtd30-sgml
docbook-dtd31-sgml
isp
gtk+-devel
gtk+-devel-static
gimp
</literallayout>
<!-- FIXME : tidy always messes up this text -->
</para>
</sidebar>
</sect2>
<sect2>
<title id="twolostpackages">Lost packages between Caldera 2.4
and 3.1</title>
<para>Just for the sake of curiosity, here are the packages
that got lost between the old distribution and the new.</para>
<para>
<literallayout>
XFree86-misc
Xaw-3dlook
Xaw3d
Xaw3d-devel
acroread
drdos-hdimage-eval
jdk
kautorun
kde-translated-docs
kdegraphics
kdelibdocs
kdemultimedia
kdenetwork
kdesupport
kdesupport-devel
kdethemes
kdeutils
kpilot
lesstif
lesstif-devel
libc5
mico-devel
mico-examples
rvplayer
svgalib
svgalib-devel
xemacs-lispsource
xemacs-packages
xforms
xforms-devel
xv
</literallayout>
<!-- FIXME : tidy always messes up this text -->
</para>
</sect2>
</sect1>
<sect1 id="othertools"
xreflabel="Upgrade tools from the text, plus others">
<title>Upgrade tools from the text, plus others</title>
<sect2>
<title id="twoncftp">ncftp</title>
<para>Here are some basic commands for the
<application>ncftp</application>
command prompt, which you will find useful when
downloading.</para>
<itemizedlist>
<listitem>
<para>Set
<application>ncftp</application>
for binary transfers with
<command>binary</command>
. (This command isn't necessary because binary is the
default transfer type.)</para>
<para>
2002-03-02 07:00:00 +00:00
<prompt>ncftp&#62;</prompt>
<command moreinfo="none">binary</command>
</para>
</listitem>
<listitem>
2002-03-02 07:00:00 +00:00
<para>There are commands to change through the local and
remote directories.</para>
<para>
2002-03-02 07:00:00 +00:00
<prompt>ncftp&#62;</prompt>
<command moreinfo="none">lcd</command>
<parameter moreinfo="none">
<replaceable>directoryname</replaceable>
</parameter>
</para>
<para>
2002-03-02 07:00:00 +00:00
<prompt>ncftp&#62;</prompt>
<command moreinfo="none">cd</command>
<parameter moreinfo="none">
<replaceable>directoryname</replaceable>
</parameter>
</para>
</listitem>
<listitem>
<para>Commands that list files of the local and remote
directories.</para>
<para>
2002-03-02 07:00:00 +00:00
<prompt>ncftp&#62;</prompt>
<command moreinfo="none">lls</command>
<parameter moreinfo="none">
<replaceable>wildcard-filename</replaceable>
</parameter>
</para>
<para>
2002-03-02 07:00:00 +00:00
<prompt>ncftp&#62;</prompt>
<command moreinfo="none">ls</command>
<parameter moreinfo="none">
<replaceable>wildcard-filename</replaceable>
</parameter>
</para>
</listitem>
<listitem>
<para>Set a named bookmark for the server and directory
once you've connected to it, so that it will be easy to
open it the next time.</para>
<para>
2002-03-02 07:00:00 +00:00
<prompt>ncftp&#62;</prompt>
<command moreinfo="none">bookmark</command>
<parameter moreinfo="none">
<replaceable>bookmarkname</replaceable>
</parameter>
</para>
</listitem>
<listitem>
<para>Open that bookmark by its name.</para>
<para>
2002-03-02 07:00:00 +00:00
<prompt>ncftp&#62;</prompt>
<command moreinfo="none">open</command>
<parameter moreinfo="none">
<replaceable>bookmarkname</replaceable>
</parameter>
</para>
</listitem>
<listitem>
<para>
<command>get</command>
files using a wildcard file specification for the filename.
Use the background version of the command if you would
like.</para>
<para>
2002-03-02 07:00:00 +00:00
<prompt>ncftp&#62;</prompt>
<command moreinfo="none">get</command>
<parameter moreinfo="none">
<replaceable>wildcard filename</replaceable>
</parameter>
</para>
<para>
2002-03-02 07:00:00 +00:00
<prompt>ncftp&#62;</prompt>
<command moreinfo="none">bgget</command>
<parameter moreinfo="none">
<replaceable>wildcard filename</replaceable>
</parameter>
</para>
</listitem>
<listitem>
<para>Let
<application>ncftp</application>
find the files in your working directory and prompt you if
you'd like to [
[<keycap>O</keycap>]
<!-- FIXME: extra white space -->
verwrite,
<!-- FIXME: extra white space -->
[<keycap>S</keycap>]
<!-- FIXME: extra white space -->
kip, or
<!-- FIXME: extra white space -->
[<keycap>R</keycap>]
<!-- FIXME: extra white space -->
esume the download of that file. Turn off the auto-resume
feature in order to enable this feature.</para>
<para>
2002-03-02 07:00:00 +00:00
<prompt>ncftp&#62;</prompt>
<command moreinfo="none">set</command>
<varname>auto-resume</varname>
<parameter moreinfo="none">no</parameter>
</para>
</listitem>
</itemizedlist>
<para>Here is the
<application>ncftp</application>
2002-03-02 07:00:00 +00:00
home page :
<ulink url="http://www.ncftpd.com/">
http://www.ncftpd.com/</ulink>
</para>
</sect2>
<sect2>
<title id="progkpackage">kpackage</title>
<para>Excellent KDE front end for
<application>rpm</application>
. All of the packages get arranged into a nice, graphical,
hierarchical tree. Satisfied and unsatisfied dependencies are
identified. Single or multiple packages can installed, upgraded
or uninstalled. Operations can be tested first. The replacepkgs
and replacefiles switches are available. FTP installs are
seamlessly integrated. There is support of package types other
than rpm. Download a copy from :
<ulink
url="http://www.general.uwa.edu.au/u/toivo/kpackage/doc/installation.html#HOW-TO-OBTAIN-KPACKAGE">
http://www.general.uwa.edu.au/u/toivo/kpackage/doc/installation.html#HOW-TO-OBTAIN-KPACKAGE</ulink>
</para>
</sect2>
<sect2 id="progtomsrlbt" xreflabel="tomsrblt">
<title>tomsrtbt</title>
<para>Linux on a floppy, in case the Linux on your hard drive
2002-03-02 07:00:00 +00:00
isn't running. It's home page is
<ulink url="http://www.toms.net/rb/">
http://www.toms.net/rb/</ulink>
</para>
</sect2>
<sect2 id="proginstallcd"
xreflabel="You bootable installation CD">
<title>Your bootable installation CD</title>
<para>If you have a Linux installation CD that is bootable, you
should be able to get a running Linux system from it. This
system will probably have some minimal console tools which
allow you to do some maintenance on your hard drive in case the
installed Linux is not functioning.
<orderedlist inheritnum="ignore" continuation="restarts">
<title>To gain access to this Linux on a CD:</title>
<listitem>
<para>Boot from the CD and get the installation program
started</para>
</listitem>
<listitem>
<para>Do not start re-installing!</para>
</listitem>
<listitem>
<para>Look for other virtual consoles by pressing
<keycombo>
<keycap>Left-Alt</keycap>
<keycap>F1</keycap>
</keycombo>
through
<keycombo>
<keycap>Left-Alt</keycap>
<keycap>F8</keycap>
</keycombo>.
<!-- FIXME: extra white space -->
One of them should give you either a
<application>shell</application>
prompt or a
<application>login</application>
prompt.</para>
</listitem>
<listitem>
<para>If you can't find a prompt on any of those consoles,
you may have to go through some of the basic initialization
steps of the installation such as setting up the keyboard,
screen, language and mouse. But again, do not start
installing! Look through the consoles again until you find
a prompt.</para>
</listitem>
<listitem>
<para>Login to the Linux system, if necessary.</para>
</listitem>
<listitem>
<para>Find a mount point that has some free space for a new
directory. (Use the
<command moreinfo="none">df</command>
command.)</para>
</listitem>
<listitem>
<para>Make a new directory to used as a mount point.</para>
</listitem>
<listitem>
<para>
<application>Mount</application>
a partition from the hard drive that you want to modify.
<application>Mount</application>
it under that mount point just created.</para>
</listitem>
</orderedlist>
</para>
</sect2>
<sect2>
<title id="progls">ls</title>
<para>Listing out the package files and comparing them to what
you have installed is how you can keep track of your progress.
2002-03-02 07:00:00 +00:00
This is a standard Linux command. If you don't recognize it,
then this HOWTO is too advanced for you.</para>
</sect2>
<sect2>
<title id="progcp">cp</title>
<para>Use
<application>cp</application>
to make backups of crucial files before they are upgraded, in
case you find that the upgrade didn't work for whatever reason.
2002-03-02 07:00:00 +00:00
If you don't recognize this command, then this HOWTO is too
advanced for you.</para>
</sect2>
<sect2 id="progglint" xreflabel="glint">
<!--formalpara id="progglint" xreflabel="glint"-->
<title>glint</title>
<para>
<application>Glint</application>
is an X program, made to be a frontend for rpm. There are some
<ulink
2002-03-02 07:00:00 +00:00
url="http://www.redhat.com/docs/manuals/Linux/RHL-5.2-Manual/install-guide/manual/doc069.html">
instructions for Glint</ulink>
from Red Hat's web site.</para>
</sect2>
<sect2>
<title id="progfips">fips</title>
<para>Used for non-destructive partitioning of your hard drive.
Included in most distribution's installation CDs. Try looking
under a
<filename>tools</filename>
2002-03-02 07:00:00 +00:00
sub-directory on your installation CD.</para>
<para>The author was Arno Schaefer. You can download a copy
from :
<ulink url="http://www.igd.fhg.de/~aschaefe/fips/fips20.zip">
http://www.igd.fhg.de/~aschaefe/fips/fips20.zip</ulink>
The licensing is GPL. Most Linux distributions carry it under
the
<filename>/dostools</filename>
,
<filename>/dosutils</filename>
or
<filename moreinfo="none">tools</filename>
directory in the primary cd.</para>
</sect2>
<sect2>
<title>apt and dpkg</title>
<para>This is Debian's method of download and upgrade. I've
heard this this is very good compared to
<application>rpm</application>.
<!-- FIXME: extra white space -->
The programs are :
<ulink url="http://packages.debian.org/stable/base/apt.html">
apt</ulink>
and
<ulink url="http://packages.debian.org/stable/base/dpkg.html">
dpkg</ulink>.
<!-- FIXME: extra white space -->
Here is a crash course on using them :
<ulink
url="http://www.cinlug.org/education/Debian_Packaging/page1.html">
http://www.cinlug.org/education/Debian_Packaging/page1.html</ulink>
</para>
</sect2>
<sect2 id="progdiskdruid" xreflabel="Red Hat's Disk Druid">
<title>Disk Druid (partitioning from Red Hat)</title>
<para>Used to partition your hard drive. It is part of Red
Hat's installation program.</para>
</sect2>
<sect2 id="proglizard" xreflabel="Caldera's Lizard">
<title>Lizard (Caldera's graphical installation tool)</title>
<para>An installation program, used for partitioning,
installing, etc.</para>
</sect2>
<sect2>
<title id="proglisa">Lisa (Caldera's console based installation
tool)</title>
<para>A console based installation program.</para>
</sect2>
<sect2>
<title id="progcalupgrader">Caldera Upgrader</title>
<para>Caldera's graphical, automated, upgrade program. It
didn't work for me.</para>
</sect2>
<sect2>
<title id="progPHI">PHI</title>
<para>An automated, console based, upgrade program from
Caldera.</para>
</sect2>
</sect1>
&GFDLDOC;
<bibliography>
<title>Bibliography</title>
<bibliodiv>
<title>Referenced Documents</title>
<biblioentry>
2002-03-02 07:00:00 +00:00
<title id="upgradehowto">"Upgrading Your Linux Distribution
mini-HOWTO"</title>
<authorgroup>
<author>
<firstname>Greg</firstname>
<surname>Louis</surname>
</author>
</authorgroup>
<copyright>
<year>1996</year>
<holder>Dynamicro Consulting Limited</holder>
</copyright>
<pubdate>6 June 1996</pubdate>
<pubsnumber>v1.11</pubsnumber>
<releaseinfo>
<ulink
url="http://www.linuxdoc.org/HOWTO/mini/Upgrade.html">The
<acronym>LDP</acronym>
has an online copy that you can refer to</ulink></releaseinfo>
</biblioentry>
<biblioentry>
<title id="rpmslackwarehowto">"RPM+Slackware
Mini-Howto"</title>
<authorgroup>
<author>
<firstname>Dave</firstname>
<surname>Whitinger</surname>
</author>
</authorgroup>
<copyright>
<year>1998</year>
<holder>Dave Whitinger</holder>
</copyright>
<pubdate>13 April 1998</pubdate>
<pubsnumber>v1.3</pubsnumber>
<releaseinfo>
<ulink
url="http://www.linuxdoc.org/HOWTO/mini/RPM+Slackware.html">
The
<acronym>LDP</acronym>
has an online copy that you can refer to</ulink></releaseinfo>
</biblioentry>
<biblioentry>
<title id="rpmhowto">"RPM HOWTO"</title>
<authorgroup>
<author>
<firstname>Donnie</firstname>
<surname>Barnes</surname>
</author>
</authorgroup>
<copyright>
<year>1999</year>
<holder>Red Hat, Inc.</holder>
</copyright>
<pubsnumber>V3.0</pubsnumber>
<pubdate>3 November 1999</pubdate>
<releaseinfo>
<ulink
url="http://www.linuxdoc.org/HOWTO/RPM-HOWTO/index.html">
The
<acronym>LDP</acronym>
has an online copy that you can refer to</ulink></releaseinfo>
</biblioentry>
<biblioentry>
<title id="rpmman">rpm(8) (a man page)</title>
<authorgroup>
<author>
<firstname>Marc</firstname>
<surname>Ewing</surname>
</author>
<author>
<firstname>Jeff</firstname>
<surname>Johnson</surname>
</author>
<author>
<firstname>Erik</firstname>
<surname>Troan</surname>
</author>
</authorgroup>
<pubdate>22 December 1998</pubdate>
<publisher>
<publishername>Red Hat Software</publishername>
</publisher>
</biblioentry>
<biblioentry>
<title id="installationstratigieshowto">"Linux Installation
Strategies mini-HOWTO"</title>
<authorgroup>
<author>
<firstname>Tobby</firstname>
<surname>Banerjee</surname>
</author>
</authorgroup>
<copyright>
<year>
</year>
<holder>
</holder>
</copyright>
<pubsnumber>1.0.1</pubsnumber>
<pubdate>2001-05-02</pubdate>
<releaseinfo>
<ulink
url="http://www.linuxdoc.org/HOWTO/mini/Install-Strategies/index.html">
The
<acronym>LDP</acronym>
has an online copy that you can refer to</ulink></releaseinfo>
</biblioentry>
<biblioentry>
<title id="redhatinstallguide">"THE COMPLETE redhat LINUX
INSTALLATION GUIDE 5.2"</title>
<publisher>
<publishername>Red Hat Software, Inc.</publishername>
</publisher>
<corpauthor>Red Hat Software, Inc.</corpauthor>
<pagenums>24-25</pagenums>
<copyright>
<year>1995, 1996, 1997, 1998</year>
<holder>Red Hat Software, Inc.</holder>
</copyright>
<isbn>1-57595-199-1B</isbn>
<corpname>Red Hat is a trademark of Red Hat Software, Inc.
Copy Writer</corpname>
<releaseinfo>
<ulink
2002-03-02 07:00:00 +00:00
url="http://www.redhat.com/docs/manuals/Linux/RHL-5.2-Manual/install-guide/manual/">
Red Hat
has an online copy that you can refer to</ulink></releaseinfo>
</biblioentry>
<biblioentry>
<title id="partitionhowto">Linux Partition HOWTO</title>
<authorgroup>
<author>
<firstname>Tony</firstname>
<surname>Harris</surname>
</author>
<author>
<firstname>Kristian</firstname>
<surname>Koehntopp</surname>
</author>
</authorgroup>
<pubsnumber>Revision 3.3</pubsnumber>
<pubdate>10 July 2001</pubdate>
<releaseinfo>
<ulink
url="http://www.linuxdoc.org/HOWTO/mini/Partition/index.html">
The
<acronym>LDP</acronym>
has an online copy that you can refer to</ulink></releaseinfo>
</biblioentry>
<biblioentry>
<title id="ncftpman">ncftp(1) Man page</title>
<pubsnumber>3.0.2</pubsnumber>
</biblioentry>
<biblioentry>
<title id="maximumrpm" xreflabel="Maximum RPM">Maximum
RPM</title>
<copyright>
<year>1997</year>
<holder>Red Hat Software, Inc.</holder>
</copyright>
<isbn>0-672-31105-4</isbn>
<corpname>
<trademark>RPM</trademark>
is a trademark of Red Hat Software, Inc.</corpname>
<authorgroup>
<author>
<firstname>Edward</firstname>
<othername>C.</othername>
<surname>Bailey</surname>
</author>
</authorgroup>
</biblioentry>
</bibliodiv>
<bibliodiv>
<title>Related HOWTOs</title>
<biblioentry>
<title id="installationhowto">The Linux Installation
HOWTO</title>
<copyright>
<year>2000</year>
<holder>Eric S. Raymond</holder>
</copyright>
<authorgroup>
<author>
<firstname>Eric</firstname>
<othername>Steven</othername>
<surname>Raymond</surname>
<affiliation>
<orgname>Thyrsus Enterprises</orgname>
</affiliation>
</author>
</authorgroup>
<pubsnumber>Revision 5.6</pubsnumber>
<pubdate>2001-09-06</pubdate>
<releaseinfo>
<ulink
url="http://www.linuxdoc.org/HOWTO/Installation-HOWTO/index.html">
The
<acronym>LDP</acronym>
has an online copy that you can refer to</ulink></releaseinfo>
</biblioentry>
<biblioentry>
<title id="swapspacehowto">Linux Swap Space
Mini-HOWTO</title>
<authorgroup>
<author>
<firstname>Rahul</firstname>
<othername>U.</othername>
<surname>Joshi</surname>
</author>
</authorgroup>
<pubsnumber>v1.42</pubsnumber>
<pubdate>18 January 2000</pubdate>
<copyright>
<year>2000</year>
<holder>Tim Bynum</holder>
</copyright>
<releaseinfo>
<ulink
url="http://www.linuxdoc.org/HOWTO/mini/Swap-Space.html">
The
<acronym>LDP</acronym>
has an online copy that you can refer to</ulink></releaseinfo>
</biblioentry>
<biblioentry>
<title id="filesystemshowto">File Systems-HOWTO.html</title>
<authorgroup>
<author>
<firstname>Martin</firstname>
<surname>Hinner</surname>
</author>
</authorgroup>
<copyright>
<year>1999</year>
<holder>Martin Hinner</holder>
</copyright>
<pubsnumber>Version 0.7.5</pubsnumber>
<pubdate>22 August 2000</pubdate>
<releaseinfo>
<ulink
2002-03-02 07:00:00 +00:00
url="http://www.linuxdoc.org/HOWTO/FileSystems-HOWTO.html">
The
<acronym>LDP</acronym>
has an online copy that you can refer to</ulink></releaseinfo>
</biblioentry>
</bibliodiv>
</bibliography>
</article>
<!--
$Id$
-->