| 1 |
<?xml version='1.0' encoding='utf-8'?>
|
| 2 |
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
| 3 |
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
|
| 4 |
<!ENTITY % shareddata SYSTEM "../release-notes.ent" > %shareddata;
|
| 5 |
]>
|
| 6 |
<!-- Svn-Eng-Ver: 5596 -->
|
| 7 |
|
| 8 |
<chapter id="ch-upgrading" lang="en">
|
| 9 |
<title>Upgrades from previous releases</title>
|
| 10 |
<section id="backup">
|
| 11 |
<title>Preparing for the upgrade</title>
|
| 12 |
<para>
|
| 13 |
We suggest that before upgrading you also read the information in <xref
|
| 14 |
linkend="ch-information"/>. That chapter covers potential issues not directly
|
| 15 |
related to the upgrade process but which could still be important to know about
|
| 16 |
before you begin.
|
| 17 |
</para>
|
| 18 |
<section id="data-backup">
|
| 19 |
<title>Back up any data or configuration information</title>
|
| 20 |
<para>
|
| 21 |
Before upgrading your system, it is strongly recommended that you make a full
|
| 22 |
backup, or at least back up any data or configuration information you can't
|
| 23 |
afford to lose. The upgrade tools and process are quite reliable, but a
|
| 24 |
hardware failure in the middle of an upgrade could result in a severely damaged
|
| 25 |
system.
|
| 26 |
</para>
|
| 27 |
<para>
|
| 28 |
The main things you'll want to back up are the contents of
|
| 29 |
<filename>/etc</filename>, <filename>/var/lib/dpkg</filename>,
|
| 30 |
<filename>/var/lib/aptitude/pkgstates</filename> and the output of
|
| 31 |
<literal>dpkg --get-selections "*"</literal> (the quotes are important).
|
| 32 |
</para>
|
| 33 |
<para>
|
| 34 |
The upgrade process itself does not modify anything in the
|
| 35 |
<filename>/home</filename> directory. However, some applications (e.g. parts
|
| 36 |
of the Mozilla suite, and the GNOME and KDE desktop environments) are known to
|
| 37 |
overwrite existing user settings with new defaults when a new version of the
|
| 38 |
application is first started by a user. As a precaution, you may want to make
|
| 39 |
a backup of the hidden files and directories (<quote>dotfiles</quote>) in users' home
|
| 40 |
directories. This backup may help to restore or recreate the old settings.
|
| 41 |
You may also want to inform users about this.
|
| 42 |
</para>
|
| 43 |
<para>
|
| 44 |
Any package installation operation must be run with superuser privileges, so
|
| 45 |
either login as root or use <command>su</command> or <command>sudo</command> to
|
| 46 |
gain the necessary access rights.
|
| 47 |
</para>
|
| 48 |
<para>
|
| 49 |
The upgrade has a few preconditions; you should check them before actually
|
| 50 |
executing the upgrade.
|
| 51 |
</para>
|
| 52 |
</section>
|
| 53 |
|
| 54 |
<section id="inform-users">
|
| 55 |
<title>Inform users in advance</title>
|
| 56 |
<para>
|
| 57 |
It's wise to inform all users in advance of any upgrades you're planning,
|
| 58 |
although users accessing your system via an <command>ssh</command> connection
|
| 59 |
should notice little during the upgrade, and should be able to continue
|
| 60 |
working.
|
| 61 |
</para>
|
| 62 |
<para>
|
| 63 |
If you wish to take extra precautions, back up or unmount users' partitions
|
| 64 |
(<filename>/home</filename>) before upgrading.
|
| 65 |
</para>
|
| 66 |
<para>
|
| 67 |
You will probably have to do a kernel upgrade when upgrading to &releasename;, so a
|
| 68 |
reboot will normally be necessary. Typically, this will be done after the
|
| 69 |
upgrade is finished.
|
| 70 |
</para>
|
| 71 |
</section>
|
| 72 |
|
| 73 |
<section id="recovery">
|
| 74 |
<title>Prepare for recovery</title>
|
| 75 |
<para>
|
| 76 |
Because of the many changes in the kernel between &oldreleasename; and &releasename; regarding
|
| 77 |
drivers, hardware discovery and the naming and ordering of device files, there
|
| 78 |
is a real risk that you may experience problems rebooting your system after the
|
| 79 |
upgrade. A lot of known potential issues are documented in this and the next
|
| 80 |
chapters of these Release Notes.
|
| 81 |
</para>
|
| 82 |
<para>
|
| 83 |
For that reason it makes sense to ensure that you will be able to recover if
|
| 84 |
your system should fail to reboot or, for remotely managed systems, fail to
|
| 85 |
bring up networking.
|
| 86 |
</para>
|
| 87 |
<para>
|
| 88 |
If you are upgrading remotely via an <command>ssh</command> link it is highly
|
| 89 |
recommended that you take the necessary precautions to be able to access the
|
| 90 |
server through a remote serial terminal. There is a chance that, after
|
| 91 |
upgrading the kernel and rebooting, some devices will be renamed (as described
|
| 92 |
in <xref linkend="device-reorder"/> ) and you will have to fix the system
|
| 93 |
configuration through a local console. Also, if the system is rebooted
|
| 94 |
accidentally in the middle of an upgrade there is a chance you will need to
|
| 95 |
recover using a local console.
|
| 96 |
</para>
|
| 97 |
<para>
|
| 98 |
The most obvious thing to try first is to reboot with your old kernel.
|
| 99 |
However, for various reasons documented elsewhere in this document, this is not
|
| 100 |
guaranteed to work.
|
| 101 |
</para>
|
| 102 |
<para>
|
| 103 |
If that fails, you will need an alternative way to boot your system so you can
|
| 104 |
access and repair it. One option is to use a special rescue image or a Linux
|
| 105 |
live CD. After booting from that, you should be able to mount your root file
|
| 106 |
system and <literal>chroot</literal> into it to investigate and fix the
|
| 107 |
problem.
|
| 108 |
</para>
|
| 109 |
<para>
|
| 110 |
Another option we'd like to recommend is to use the <emphasis>rescue
|
| 111 |
mode</emphasis> of the &releasename; Debian Installer. The advantage of using the
|
| 112 |
installer is that you can choose between its many installation methods for one
|
| 113 |
that best suits your situation. For more information, please consult the
|
| 114 |
section <quote>Recovering a Broken System</quote> in chapter 8 of the <ulink
|
| 115 |
url="&url-install-manual;">Installation
|
| 116 |
Guide</ulink> and the <ulink
|
| 117 |
url="&url-wiki;DebianInstaller/FAQ">Debian Installer FAQ</ulink>.
|
| 118 |
</para>
|
| 119 |
<section id="recovery-initrd">
|
| 120 |
<title>Debug shell during boot using initrd</title>
|
| 121 |
<para>
|
| 122 |
The <systemitem role="package">initramfs-tools</systemitem> includes a debug
|
| 123 |
shell<footnote><para> This feature can be disabled by adding the parameter
|
| 124 |
<literal>panic=0</literal> to your boot parameters. </para> </footnote> in the
|
| 125 |
initrds it generates. If for example the initrd is unable to mount your root
|
| 126 |
file system, you will be dropped into this debug shell which has basic commands
|
| 127 |
available to help trace the problem and possibly fix it.
|
| 128 |
</para>
|
| 129 |
<para>
|
| 130 |
Basic things to check are: presence of correct device files in
|
| 131 |
<filename>/dev</filename>; what modules are loaded (<literal>cat
|
| 132 |
/proc/modules</literal>); output of <command>dmesg</command> for errors loading
|
| 133 |
drivers. The output of <command>dmesg</command> will also show what device
|
| 134 |
files have been assigned to which disks; you should check that against the
|
| 135 |
output of <literal>echo $ROOT</literal> to make sure that the root file system
|
| 136 |
is on the expected device.
|
| 137 |
</para>
|
| 138 |
<para>
|
| 139 |
If you do manage to fix the problem, typing <literal>exit</literal> will quit
|
| 140 |
the debug shell and continue the boot process at the point it failed. Of
|
| 141 |
course you will also need to fix the underlying problem and regenerate the
|
| 142 |
initrd so the next boot won't fail again.
|
| 143 |
</para>
|
| 144 |
</section>
|
| 145 |
|
| 146 |
</section>
|
| 147 |
|
| 148 |
<section id="upgrade-preparations">
|
| 149 |
<title>Prepare a safe environment for the upgrade</title>
|
| 150 |
<para>
|
| 151 |
The distribution upgrade should be done either locally from a textmode virtual
|
| 152 |
console (or a directly connected serial terminal), or remotely via an
|
| 153 |
<command>ssh</command> link.
|
| 154 |
</para>
|
| 155 |
<para>
|
| 156 |
In order to gain extra safety margin when upgrading remotely, we suggest that
|
| 157 |
you run upgrade processes in the virtual console provided by the
|
| 158 |
<command>screen</command> program, which enables safe reconnection and ensures
|
| 159 |
the upgrade process is not interrupted even if the remote connection process
|
| 160 |
fails.
|
| 161 |
</para>
|
| 162 |
<important>
|
| 163 |
<para>
|
| 164 |
You should <emphasis>not</emphasis> upgrade using <command>telnet</command>,
|
| 165 |
<command>rlogin</command>, <command>rsh</command>, or from an X
|
| 166 |
session managed by <command>xdm</command>, <command>gdm</command>
|
| 167 |
or <command>kdm</command> etc on the machine you are upgrading.
|
| 168 |
That is because each of those services may well be terminated
|
| 169 |
during the upgrade, which can result in an
|
| 170 |
<emphasis>inaccessible</emphasis> system that is only half-upgraded.
|
| 171 |
</para>
|
| 172 |
</important>
|
| 173 |
|
| 174 |
<programlisting condition="fixme">
|
| 175 |
TODO: surely gdm/kdm are sane?
|
| 176 |
(vorlon) haha, no, gdm is not; I had that thought, and tested a gdm
|
| 177 |
restart on my live session ;)
|
| 178 |
</programlisting>
|
| 179 |
|
| 180 |
</section>
|
| 181 |
|
| 182 |
<section arch="i386;amd64" id="prepare-initramfs">
|
| 183 |
<title>Prepare initramfs for <acronym>LILO</acronym><indexterm><primary>LILO</primary></indexterm></title>
|
| 184 |
<para>
|
| 185 |
Users using the <acronym>LILO</acronym> bootloader should note that the default
|
| 186 |
settings for <systemitem
|
| 187 |
role="package">initramfs-tools</systemitem> now generate an
|
| 188 |
initramfs that is too large for <acronym>LILO</acronym> to load. Such users should
|
| 189 |
either switch to <systemitem role="package">grub</systemitem>, or
|
| 190 |
edit the file
|
| 191 |
<filename>/etc/initramfs-tools/initramfs.conf</filename>, changing
|
| 192 |
the line <programlisting>MODULES=most</programlisting> to read
|
| 193 |
<programlisting>MODULES=dep</programlisting></para>
|
| 194 |
|
| 195 |
<para>
|
| 196 |
Note, however, that doing this will cause <systemitem
|
| 197 |
role="package">initramfs-tools</systemitem> to install only those
|
| 198 |
modules that are required for the particular hardware that it is
|
| 199 |
run on, onto the initramfs; as such, if you want to generate a
|
| 200 |
boot medium that will work on more hardware than just the one
|
| 201 |
you're generating it on, you should leave the setting to
|
| 202 |
<programlisting>MODULES=most</programlisting> and make sure you do
|
| 203 |
not use <acronym>LILO</acronym>.
|
| 204 |
</para>
|
| 205 |
</section>
|
| 206 |
|
| 207 |
</section>
|
| 208 |
|
| 209 |
<section id="system-status">
|
| 210 |
<title>Checking system status</title>
|
| 211 |
<para>
|
| 212 |
The upgrade process described in this chapter has been designed for upgrades
|
| 213 |
from <quote>pure</quote> &oldreleasename; systems without third-party packages.
|
| 214 |
For the greatest reliability of the
|
| 215 |
upgrade process, you may wish to remove third-party packages from your system
|
| 216 |
before you begin upgrading.
|
| 217 |
</para>
|
| 218 |
<para>
|
| 219 |
This procedure also assumes your system has been updated to the latest point
|
| 220 |
release of &oldreleasename;. If you have not done this or are unsure, follow the
|
| 221 |
instructions in <xref linkend="old-upgrade"/>.
|
| 222 |
</para>
|
| 223 |
<section id="review-actions">
|
| 224 |
<title>Review actions pending in package manager</title>
|
| 225 |
<para>
|
| 226 |
In some cases, the use of <command>apt-get</command> for installing packages
|
| 227 |
instead of <command>aptitude</command> might make <command>aptitude</command>
|
| 228 |
consider a package as <quote>unused</quote> and schedule it for removal. In general, you
|
| 229 |
should make sure the system is fully up-to-date and <quote>clean</quote> before proceeding
|
| 230 |
with the upgrade.
|
| 231 |
</para>
|
| 232 |
<para>
|
| 233 |
Because of this you should review if there are any pending actions in the
|
| 234 |
package manager <command>aptitude</command>. If a package is scheduled for
|
| 235 |
removal or update in the package manager, it might negatively impact the
|
| 236 |
upgrade procedure. Note that correcting this is only possible if your
|
| 237 |
<filename>sources.list</filename> still points to <emphasis>&oldreleasename;</emphasis>;
|
| 238 |
and not to <emphasis>stable</emphasis> or <emphasis>&releasename;</emphasis>; see <xref
|
| 239 |
linkend="old-sources"/>.
|
| 240 |
</para>
|
| 241 |
<para>
|
| 242 |
To do this, you have to run <command>aptitude</command> in <quote>visual mode</quote> and
|
| 243 |
press <keycap>g</keycap> (<quote>Go</quote>). If it shows any actions, you should review them and either fix
|
| 244 |
them or implement the suggested actions. If no actions are suggested you will
|
| 245 |
be presented with a message saying <quote>No packages are scheduled to be installed,
|
| 246 |
removed, or upgraded</quote>.
|
| 247 |
</para>
|
| 248 |
</section>
|
| 249 |
|
| 250 |
<section id="disable-apt-pinning">
|
| 251 |
<title>Disabling APT pinning</title>
|
| 252 |
<para>
|
| 253 |
If you have configured APT to install certain packages from a distribution
|
| 254 |
other than stable (e.g. from testing), you may have to change your APT pinning
|
| 255 |
configuration (stored in <filename>/etc/apt/preferences</filename>) to allow
|
| 256 |
the upgrade of packages to the versions in the new stable release. Further
|
| 257 |
information on APT pinning can be found in <citerefentry>
|
| 258 |
<refentrytitle>apt_preferences</refentrytitle> <manvolnum>5</manvolnum>
|
| 259 |
</citerefentry>.
|
| 260 |
</para>
|
| 261 |
</section>
|
| 262 |
|
| 263 |
<section id="package-status">
|
| 264 |
<title>Checking packages status</title>
|
| 265 |
<para>
|
| 266 |
Regardless of the method used for upgrading, it is recommended that you check
|
| 267 |
the status of all packages first, and verify that all packages are in an
|
| 268 |
upgradable state. The following command will show any packages which have a
|
| 269 |
status of Half-Installed or Failed-Config, and those with any error status.
|
| 270 |
</para>
|
| 271 |
<screen>
|
| 272 |
# dpkg --audit
|
| 273 |
</screen>
|
| 274 |
<para>
|
| 275 |
You could also inspect the state of all packages on your system using
|
| 276 |
<command>dselect</command>, <command>aptitude</command>, or with commands such
|
| 277 |
as
|
| 278 |
</para>
|
| 279 |
<screen>
|
| 280 |
# dpkg -l | pager
|
| 281 |
</screen>
|
| 282 |
<para>
|
| 283 |
or
|
| 284 |
</para>
|
| 285 |
<screen>
|
| 286 |
# dpkg --get-selections "*" > ~/curr-pkgs.txt
|
| 287 |
</screen>
|
| 288 |
<para>
|
| 289 |
It is desirable to remove any holds before upgrading. If any package that is
|
| 290 |
essential for the upgrade is on hold, the upgrade will fail.
|
| 291 |
</para>
|
| 292 |
<para>
|
| 293 |
Note that <command>aptitude</command> uses a different method for registering
|
| 294 |
packages that are on hold than <command>apt-get</command> and
|
| 295 |
<command>dselect</command>. You can identify packages on hold for
|
| 296 |
<command>aptitude</command> with
|
| 297 |
</para>
|
| 298 |
<screen>
|
| 299 |
# aptitude search "~ahold" | grep "^.h"
|
| 300 |
</screen>
|
| 301 |
<para>
|
| 302 |
If you want to check which packages you had on hold for
|
| 303 |
<command>apt-get</command>, you should use
|
| 304 |
</para>
|
| 305 |
<screen>
|
| 306 |
# dpkg --get-selections | grep hold
|
| 307 |
</screen>
|
| 308 |
<para>
|
| 309 |
If you changed and recompiled a package locally, and didn't rename it or put an
|
| 310 |
epoch in the version, you must put it on hold to prevent it from being
|
| 311 |
upgraded.
|
| 312 |
</para>
|
| 313 |
<para>
|
| 314 |
The <quote>hold</quote> package state for <command>aptitude</command> can be changed using:
|
| 315 |
</para>
|
| 316 |
<screen>
|
| 317 |
# aptitude hold <replaceable>package_name</replaceable>
|
| 318 |
</screen>
|
| 319 |
<para>
|
| 320 |
Replace <literal>hold</literal> with <literal>unhold</literal> to unset the
|
| 321 |
<quote>hold</quote> state.
|
| 322 |
</para>
|
| 323 |
<para>
|
| 324 |
If there is anything you need to fix, it is best to make sure your
|
| 325 |
<filename>sources.list</filename> still refers to &oldreleasename; as explained in <xref
|
| 326 |
linkend="old-sources"/>.
|
| 327 |
</para>
|
| 328 |
</section>
|
| 329 |
|
| 330 |
<section id="userbackports">
|
| 331 |
<title>Unofficial sources and backports</title>
|
| 332 |
<para>
|
| 333 |
If you have any non-Debian packages on your system, you should be aware that
|
| 334 |
these may be removed during the upgrade because of conflicting dependencies.
|
| 335 |
If these packages were installed by adding an extra package archive in your
|
| 336 |
<filename>/etc/apt/sources.list</filename>, you should check if that archive
|
| 337 |
also offers packages compiled for &releasename; and change the source line accordingly
|
| 338 |
at the same time as your source lines for Debian packages.
|
| 339 |
</para>
|
| 340 |
<para>
|
| 341 |
Some users may have unofficial backported <quote>newer</quote> versions of packages that
|
| 342 |
<emphasis>are</emphasis> in Debian installed on their &oldreleasename; system. Such
|
| 343 |
packages are most likely to cause problems during an upgrade as they may result
|
| 344 |
in file conflicts<footnote><para> Debian's package management system normally
|
| 345 |
does not allow a package to remove or replace a file owned by another package
|
| 346 |
unless it has been defined to replace that package. </para> </footnote>.
|
| 347 |
<xref linkend="trouble"/> has some information on how to deal with file
|
| 348 |
conflicts if they should occur.
|
| 349 |
</para>
|
| 350 |
</section>
|
| 351 |
|
| 352 |
</section>
|
| 353 |
|
| 354 |
<section id="handle-conflict">
|
| 355 |
<title>Manually unmarking packages</title>
|
| 356 |
<para>
|
| 357 |
To prevent <command>aptitude</command> from removing some packages that were
|
| 358 |
pulled in through dependencies, you need to manually unmark them as
|
| 359 |
<emphasis>auto</emphasis> packages. This includes OpenOffice and Vim for
|
| 360 |
desktop installs:
|
| 361 |
</para>
|
| 362 |
<screen>
|
| 363 |
# aptitude unmarkauto openoffice.org vim
|
| 364 |
</screen>
|
| 365 |
<para>
|
| 366 |
And 2.6 kernel images if you have installed them using a kernel metapackage:
|
| 367 |
</para>
|
| 368 |
<screen>
|
| 369 |
# aptitude unmarkauto $(dpkg-query -W 'kernel-image-2.6.*' | cut -f1)
|
| 370 |
</screen>
|
| 371 |
<note>
|
| 372 |
<para>
|
| 373 |
You can review which packages are marked as <emphasis>auto</emphasis> in
|
| 374 |
aptitude by running:
|
| 375 |
</para>
|
| 376 |
<screen># aptitude search 'i~M <replaceable>package_name</replaceable>'</screen>
|
| 377 |
</note>
|
| 378 |
</section>
|
| 379 |
|
| 380 |
<section id="upgrade-process">
|
| 381 |
<title>Preparing sources for APT</title>
|
| 382 |
<para>
|
| 383 |
Before starting the upgrade you must set up <systemitem
|
| 384 |
role="package">apt</systemitem>'s configuration file for package lists,
|
| 385 |
<filename>/etc/apt/sources.list</filename>.
|
| 386 |
</para>
|
| 387 |
<para>
|
| 388 |
<systemitem role="package">apt</systemitem> will consider all packages that can
|
| 389 |
be found via any <quote><literal>deb</literal></quote> line, and install the package with the
|
| 390 |
highest version number, giving priority to the first mentioned lines (that way,
|
| 391 |
in case of multiple mirror locations, you'd typically first name a local
|
| 392 |
harddisk, then CD-ROMs, and then HTTP/FTP mirrors).
|
| 393 |
</para>
|
| 394 |
<para>
|
| 395 |
A release can often be referred to by both its codename (e.g.
|
| 396 |
<literal>&oldreleasename;</literal>, <literal>&releasename;</literal>) and by
|
| 397 |
its status name (i.e. <literal>oldstable</literal>, <literal>stable</literal>,
|
| 398 |
<literal>testing</literal>, <literal>unstable</literal>). Referring to
|
| 399 |
a release by its codename has the advantage that you will never be surprised by
|
| 400 |
a new release and for this reason is the approach taken here. It does of
|
| 401 |
course mean that you will have to watch out for release announcements yourself.
|
| 402 |
If you use the status name instead, you will just see loads of updates for
|
| 403 |
packages available as soon as a release has happened.
|
| 404 |
</para>
|
| 405 |
<section id="network">
|
| 406 |
<title>Adding APT Internet sources</title>
|
| 407 |
<para>
|
| 408 |
The default configuration is set up for installation from main Debian Internet
|
| 409 |
servers, but you may wish to modify <filename>/etc/apt/sources.list</filename>
|
| 410 |
to use other mirrors, preferably a mirror that is network-wise closest to you.
|
| 411 |
</para>
|
| 412 |
<para>
|
| 413 |
Debian HTTP or FTP mirror addresses can be found at <ulink
|
| 414 |
url="&url-debian-mirrors;"></ulink> (look at the <quote>list of Debian
|
| 415 |
mirrors</quote> section). HTTP mirrors are generally speedier than FTP mirrors.
|
| 416 |
</para>
|
| 417 |
<para>
|
| 418 |
For example, suppose your closest Debian mirror is
|
| 419 |
<literal>&url-debian-mirror-eg;</literal>. When inspecting that
|
| 420 |
mirror with a web browser or FTP program, you will notice that the main
|
| 421 |
directories are organized like this:
|
| 422 |
</para>
|
| 423 |
<screen>
|
| 424 |
&url-debian-mirror-eg;/dists/&releasename;/main/binary-i386/...
|
| 425 |
&url-debian-mirror-eg;/dists/&releasename;/contrib/binary-i386/...
|
| 426 |
</screen>
|
| 427 |
<para>
|
| 428 |
To use this mirror with <systemitem role="package">apt</systemitem>, you add this line to your
|
| 429 |
<filename>sources.list</filename> file:
|
| 430 |
</para>
|
| 431 |
<screen>
|
| 432 |
deb &url-debian-mirror-eg; &releasename; main contrib
|
| 433 |
</screen>
|
| 434 |
<para>
|
| 435 |
Note that the `<literal>dists</literal>' is added implicitly, and the arguments
|
| 436 |
after the release name are used to expand the path into multiple directories.
|
| 437 |
</para>
|
| 438 |
<para>
|
| 439 |
After adding your new sources, disable the previously existing
|
| 440 |
<quote><literal>deb</literal></quote> lines in <filename>sources.list</filename> by placing a
|
| 441 |
hash sign (<literal>#</literal>) in front of them.
|
| 442 |
</para>
|
| 443 |
</section>
|
| 444 |
|
| 445 |
<section id="localmirror">
|
| 446 |
<title>Adding APT sources for a local mirror</title>
|
| 447 |
<para>
|
| 448 |
Instead of using HTTP or FTP packages mirrors, you may wish to modify
|
| 449 |
<filename>/etc/apt/sources.list</filename> to use a mirror on a local disk
|
| 450 |
(possibly mounted over <acronym>NFS</acronym>).
|
| 451 |
</para>
|
| 452 |
<para>
|
| 453 |
For example, your packages mirror may be under
|
| 454 |
<filename>/var/ftp/debian/</filename>, and have main directories like this:
|
| 455 |
</para>
|
| 456 |
<screen>
|
| 457 |
/var/ftp/debian/dists/&releasename;/main/binary-i386/...
|
| 458 |
/var/ftp/debian/dists/&releasename;/contrib/binary-i386/...
|
| 459 |
</screen>
|
| 460 |
<para>
|
| 461 |
To use this with <systemitem role="package">apt</systemitem>, add this line to your
|
| 462 |
<filename>sources.list</filename> file:
|
| 463 |
</para>
|
| 464 |
<screen>
|
| 465 |
deb file:/var/ftp/debian &releasename; main contrib
|
| 466 |
</screen>
|
| 467 |
<para>
|
| 468 |
Note that the `<literal>dists</literal>' is added implicitly, and the arguments
|
| 469 |
after the release name are used to expand the path into multiple directories.
|
| 470 |
</para>
|
| 471 |
<para>
|
| 472 |
After adding your new sources, disable the previously existing
|
| 473 |
<quote><literal>deb</literal></quote> lines in <filename>sources.list</filename> by placing a
|
| 474 |
hash sign (<literal>#</literal>) in front of them.
|
| 475 |
</para>
|
| 476 |
</section>
|
| 477 |
|
| 478 |
<section id="cdroms">
|
| 479 |
<title>Adding APT source from CD-ROM or DVD</title>
|
| 480 |
<para>
|
| 481 |
If you want to use CDs <emphasis>only</emphasis>, comment out the existing
|
| 482 |
<quote><literal>deb</literal></quote> lines in <filename>/etc/apt/sources.list</filename> by
|
| 483 |
placing a hash sign (<literal>#</literal>) in front of them.
|
| 484 |
</para>
|
| 485 |
<para>
|
| 486 |
Make sure there is a line in <filename>/etc/fstab</filename> that enables
|
| 487 |
mounting your CD-ROM drive at the <filename>/cdrom</filename> mount point (the
|
| 488 |
exact <filename>/cdrom</filename> mount point is required for
|
| 489 |
<command>apt-cdrom</command>). For example, if <filename>/dev/hdc</filename>
|
| 490 |
is your CD-ROM drive, <filename>/etc/fstab</filename> should contain a line
|
| 491 |
like:
|
| 492 |
</para>
|
| 493 |
<screen>
|
| 494 |
/dev/hdc /cdrom auto defaults,noauto,ro 0 0
|
| 495 |
</screen>
|
| 496 |
<para>
|
| 497 |
Note that there must be <emphasis>no spaces</emphasis> between the words
|
| 498 |
<literal>defaults,noauto,ro</literal> in the fourth field.
|
| 499 |
</para>
|
| 500 |
<para>
|
| 501 |
To verify it works, insert a CD and try running
|
| 502 |
</para>
|
| 503 |
<screen>
|
| 504 |
# mount /cdrom # this will mount the CD to the mount point
|
| 505 |
# ls -alF /cdrom # this should show the CD's root directory
|
| 506 |
# umount /cdrom # this will unmount the CD
|
| 507 |
</screen>
|
| 508 |
<para>
|
| 509 |
Next, run:
|
| 510 |
</para>
|
| 511 |
<screen>
|
| 512 |
# apt-cdrom add
|
| 513 |
</screen>
|
| 514 |
<para>
|
| 515 |
for each Debian Binary CD-ROM you have, to add the data about each CD to APT's
|
| 516 |
database.
|
| 517 |
</para>
|
| 518 |
</section>
|
| 519 |
|
| 520 |
</section>
|
| 521 |
|
| 522 |
<section id="upgradingpackages">
|
| 523 |
<title>Upgrading packages</title>
|
| 524 |
<para>
|
| 525 |
The recommended way to upgrade from previous &debian; releases is to
|
| 526 |
use the package management tool <command>aptitude</command>. This program
|
| 527 |
makes safer decisions about package installations than running
|
| 528 |
<command>apt-get</command> directly.
|
| 529 |
</para>
|
| 530 |
<para>
|
| 531 |
Don't forget to mount all needed partitions (notably the root and
|
| 532 |
<filename>/usr</filename> partitions) read-write, with a command like:
|
| 533 |
</para>
|
| 534 |
<screen>
|
| 535 |
# mount -o remount,rw /<replaceable>mountpoint</replaceable>
|
| 536 |
</screen>
|
| 537 |
<para>
|
| 538 |
Next you should double-check that the APT source entries (in
|
| 539 |
<filename>/etc/apt/sources.list</filename>) refer either to
|
| 540 |
<quote><literal>&releasename;</literal></quote> or to <quote><literal>stable</literal></quote>. There should not be
|
| 541 |
any sources entries pointing to &oldreleasename;.
|
| 542 |
<note>
|
| 543 |
<para>
|
| 544 |
Source lines for a CD-ROM will often refer to
|
| 545 |
<quote><literal>unstable</literal></quote>; although this may be confusing, you
|
| 546 |
should <emphasis>not</emphasis> change it.
|
| 547 |
</para>
|
| 548 |
</note>
|
| 549 |
</para>
|
| 550 |
<section id="record-session">
|
| 551 |
<title>Recording the session</title>
|
| 552 |
<para>
|
| 553 |
It is strongly recommended that you use the <command>/usr/bin/script</command>
|
| 554 |
program to record a transcript of the upgrade session. Then if a problem
|
| 555 |
occurs, you will have a log of what happened, and if needed, can provide exact
|
| 556 |
information in a bug report. To start the recording, type:
|
| 557 |
</para>
|
| 558 |
<screen>
|
| 559 |
# script -t 2>~/upgrade-&releasename;.time -a ~/upgrade-&releasename;.script
|
| 560 |
</screen>
|
| 561 |
<para>
|
| 562 |
or similar. Do not put the typescript file in a temporary directory such as
|
| 563 |
<filename>/tmp</filename> or <filename>/var/tmp</filename> (files in those
|
| 564 |
directories may be deleted during the upgrade or during any restart).
|
| 565 |
</para>
|
| 566 |
<para>
|
| 567 |
The typescript will also allow you to review information that has scrolled
|
| 568 |
off-screen. Just switch to VT2 (using
|
| 569 |
<keycombo action='simul'><keycap>Alt</keycap><keycap>F2</keycap></keycombo>)
|
| 570 |
and, after logging in, use
|
| 571 |
<literal>less -R ~root/upgrade-&releasename;.script</literal> to view
|
| 572 |
the file.
|
| 573 |
</para>
|
| 574 |
<para>
|
| 575 |
After you have completed the upgrade, you can stop <command>script</command> by
|
| 576 |
typing <literal>exit</literal> at the prompt.
|
| 577 |
</para>
|
| 578 |
|
| 579 |
<programlisting condition="fixme">
|
| 580 |
TODO: Could mention the script I provided in 400725 which is useful if you
|
| 581 |
have not dumped the timing file
|
| 582 |
</programlisting>
|
| 583 |
|
| 584 |
<para>
|
| 585 |
If you have used the <emphasis>-t</emphasis> switch for
|
| 586 |
<command>script</command> you can use the <command>scriptreplay</command>
|
| 587 |
program to replay the whole session:
|
| 588 |
</para>
|
| 589 |
<screen>
|
| 590 |
# scriptreplay ~/upgrade-&releasename;.time ~/upgrade-&releasename;.script
|
| 591 |
</screen>
|
| 592 |
</section>
|
| 593 |
|
| 594 |
<section id="updating-lists">
|
| 595 |
<title>Updating the package list</title>
|
| 596 |
<para>
|
| 597 |
First the list of available packages for the new release needs to be fetched.
|
| 598 |
This is done by executing:
|
| 599 |
</para>
|
| 600 |
<screen>
|
| 601 |
# aptitude update
|
| 602 |
</screen>
|
| 603 |
<para>
|
| 604 |
Running this the first time new sources are updated will print out some
|
| 605 |
warnings related to the availability of the sources. These warnings are
|
| 606 |
harmless and will not appear if you rerun the command again.
|
| 607 |
</para>
|
| 608 |
</section>
|
| 609 |
|
| 610 |
<section id="sufficient-space">
|
| 611 |
<title>Make sure you have sufficient space for the upgrade</title>
|
| 612 |
<para>
|
| 613 |
You have to make sure before upgrading your system that you have sufficient
|
| 614 |
hard disk space when you start the full system upgrade described in <xref
|
| 615 |
linkend="upgrading-other"/>. First, any package needed for installation that
|
| 616 |
is fetched from the network is stored in
|
| 617 |
<filename>/var/cache/apt/archives</filename> (and the
|
| 618 |
<filename>partial/</filename> subdirectory, during download), so you must make
|
| 619 |
sure you have enough space on the file system partition that holds
|
| 620 |
<filename>/var/</filename> to temporarily download the packages that will be
|
| 621 |
installed in your system. After the download, you will probably need more
|
| 622 |
space in other file system partitions in order to both install upgraded
|
| 623 |
packages (which might contain bigger binaries or more data) and new packages
|
| 624 |
that will be pulled in for the upgrade. If your system does not have
|
| 625 |
sufficient space you might end up with an incomplete upgrade that might be
|
| 626 |
difficult to recover from.
|
| 627 |
</para>
|
| 628 |
<para>
|
| 629 |
Both <command>aptitude</command> and <systemitem role="package">apt</systemitem> will show you
|
| 630 |
detailed information of the disk space needed for the installation. Before
|
| 631 |
executing the upgrade, you can see this estimate by running:
|
| 632 |
</para>
|
| 633 |
<screen>
|
| 634 |
# aptitude -y -s -f --with-recommends dist-upgrade
|
| 635 |
[ ... ]
|
| 636 |
XXX upgraded, XXX newly installed, XXX to remove and XXX not upgraded.
|
| 637 |
Need to get xx.xMB/yyyMB of archives. After unpacking AAAMB will be used.
|
| 638 |
Would download/install/remove packages.
|
| 639 |
</screen>
|
| 640 |
<para>
|
| 641 |
<footnote><para> Running this command at the beginning of the upgrade process
|
| 642 |
may give an error, for the reasons described in the next sections. In that
|
| 643 |
case you will need to wait until you've done the minimal system upgrade as in
|
| 644 |
<xref linkend="minimal-upgrade"/> and upgraded your kernel as in <xref
|
| 645 |
linkend="upgrading-kernel"/> before running this command to estimate the disk
|
| 646 |
space. </para> </footnote>
|
| 647 |
</para>
|
| 648 |
<para>
|
| 649 |
If you do not have enough space for the upgrade, make sure you free up space
|
| 650 |
beforehand. You can:
|
| 651 |
</para>
|
| 652 |
<itemizedlist>
|
| 653 |
<listitem>
|
| 654 |
<para>
|
| 655 |
Remove packages that have been previously downloaded for installation (at
|
| 656 |
<filename>/var/cache/apt/archive</filename>). Cleaning up the package cache by
|
| 657 |
running <command>apt-get clean</command> or <command>aptitude clean</command>
|
| 658 |
will remove all previously downloaded package files.
|
| 659 |
</para>
|
| 660 |
</listitem>
|
| 661 |
<listitem>
|
| 662 |
<para>
|
| 663 |
Remove old packages you no longer use. If you have
|
| 664 |
<systemitem role="package">popularity-contest</systemitem> installed, you can use
|
| 665 |
<command>popcon-largest-unused</command> to list the packages you do not use in
|
| 666 |
the system that occupy the most space. You can also use
|
| 667 |
<command>deborphan</command> or <command>debfoster</command> to find obsolete
|
| 668 |
packages (see <xref linkend="obsolete"/> ). Alternatively you can start
|
| 669 |
<command>aptitude</command> in <quote>visual mode</quote> and find obsolete packages under
|
| 670 |
<quote>Obsolete and Locally Created Packages</quote>.
|
| 671 |
</para>
|
| 672 |
</listitem>
|
| 673 |
<listitem>
|
| 674 |
<para>
|
| 675 |
Remove packages taking up too much space, which are not currently needed (you
|
| 676 |
can always reinstall them after the upgrade). You can list the packages that
|
| 677 |
take up most of the disk space with <command>dpigs</command> (available in the
|
| 678 |
<systemitem role="package">debian-goodies</systemitem> package) or with
|
| 679 |
<command>wajig</command> (running <literal>wajig size</literal>).
|
| 680 |
</para>
|
| 681 |
<programlisting condition="fixme">
|
| 682 |
TODO: consider this for lenny
|
| 683 |
You can list packages that take up most of the disk space with
|
| 684 |
/aptitude/. Start /aptitude/ into "visual mode", select
|
| 685 |
"Views" and "New Flat Package List" (this menu entry is available only
|
| 686 |
after etch version), press "l" and enter "~i", press "S" and enter
|
| 687 |
"~installsize", then it will give you nice list to work with. Doing
|
| 688 |
this after partial upgrade described in ref id="upgrading_aptitude"
|
| 689 |
should give you access to this new feature.
|
| 690 |
</programlisting>
|
| 691 |
|
| 692 |
</listitem>
|
| 693 |
<listitem>
|
| 694 |
<para>
|
| 695 |
Temporarily move to another system, or permanently remove, system logs residing
|
| 696 |
under <filename>/var/log/</filename>.
|
| 697 |
</para>
|
| 698 |
</listitem>
|
| 699 |
</itemizedlist>
|
| 700 |
<para>
|
| 701 |
Note that in order to safely remove packages, it is advisable to switch your
|
| 702 |
<filename>sources.list</filename> back to &oldreleasename; as described in <xref
|
| 703 |
linkend="old-sources"/>.
|
| 704 |
</para>
|
| 705 |
</section>
|
| 706 |
|
| 707 |
<section id="aptupgrade1st">
|
| 708 |
<title>Upgrade apt and/or aptitude first</title>
|
| 709 |
<para>
|
| 710 |
Several bug reports have shown that the versions of the <systemitem
|
| 711 |
role="package">aptitude</systemitem> and <systemitem
|
| 712 |
role="package">apt</systemitem> packages in etch are often unable to
|
| 713 |
handle the upgrade to &releasename;. In &releasename;, <systemitem
|
| 714 |
role="package">apt</systemitem> better deals with complex chains
|
| 715 |
of packages requiring immediate configuration and <systemitem
|
| 716 |
role="package">aptitude</systemitem> is smarter in searching
|
| 717 |
solutions for satisfying the dependencies. As these two features
|
| 718 |
are heavily involved during the dist-upgrade to &releasename;, it
|
| 719 |
is then required to upgrade those two packages before upgrading
|
| 720 |
anything else. For <systemitem role="package">apt</systemitem>, run:
|
| 721 |
<programlisting># apt-get install apt</programlisting>
|
| 722 |
and for <systemitem role="package">aptitude</systemitem> (if you have
|
| 723 |
it installed) run:
|
| 724 |
<programlisting># aptitude install aptitude</programlisting>
|
| 725 |
</para>
|
| 726 |
<para>
|
| 727 |
This step will automatically upgrade <systemitem
|
| 728 |
role="package">libc6</systemitem> and <systemitem
|
| 729 |
role="package">locales</systemitem> and will pull in SELinux support libraries
|
| 730 |
(<systemitem role="package">libselinux1</systemitem>). At this point, some
|
| 731 |
running services will be restarted, including <command>xdm</command>,
|
| 732 |
<command>gdm</command> and <command>kdm</command>. As a consequence, local X11
|
| 733 |
sessions might be disconnected.
|
| 734 |
</para>
|
| 735 |
</section>
|
| 736 |
<section id="aptconvert">
|
| 737 |
<title>Using aptitude's list of automatically-installed packages with apt</title>
|
| 738 |
<para>
|
| 739 |
<systemitem role="package">aptitude</systemitem> maintains a list
|
| 740 |
of packages that were installed automatically (for instance, as
|
| 741 |
dependencies of another package). In &releasename;, <systemitem
|
| 742 |
role="package">apt</systemitem> now has this feature as well.
|
| 743 |
</para>
|
| 744 |
<para>
|
| 745 |
The first time the &releasename; version of <systemitem
|
| 746 |
role="package">aptitude</systemitem> is run, it will read in its
|
| 747 |
list of automatically installed packages and convert it for use
|
| 748 |
with the &releasename; version of <systemitem
|
| 749 |
role="package">apt</systemitem>. If you have <systemitem
|
| 750 |
role="package">aptitude</systemitem> installed, you should at
|
| 751 |
least issue one <systemitem role="package">aptitude</systemitem>
|
| 752 |
command to do the conversion. One way to do this is by searching for
|
| 753 |
a non-existent package:
|
| 754 |
<programlisting># aptitude search "?false"</programlisting>
|
| 755 |
</para>
|
| 756 |
</section>
|
| 757 |
|
| 758 |
<section id="minimal-upgrade">
|
| 759 |
<title>Minimal system upgrade</title>
|
| 760 |
<para>
|
| 761 |
Because of certain necessary package conflicts between &oldreleasename; and &releasename;, running
|
| 762 |
<literal>aptitude dist-upgrade</literal> directly will often remove large
|
| 763 |
numbers of packages that you will want to keep. We therefore recommend a
|
| 764 |
two-part upgrade process, first a minimal upgrade to overcome these conflicts,
|
| 765 |
then a full <literal>dist-upgrade</literal>.
|
| 766 |
</para>
|
| 767 |
<para>
|
| 768 |
First, run:
|
| 769 |
</para>
|
| 770 |
<screen>
|
| 771 |
# aptitude upgrade
|
| 772 |
</screen>
|
| 773 |
<para>
|
| 774 |
This has the effect of upgrading those packages which can be upgraded without
|
| 775 |
requiring any other packages to be removed or installed.
|
| 776 |
</para>
|
| 777 |
<para>
|
| 778 |
The next step will vary depending on the set of packages that you have
|
| 779 |
installed. These release notes give general advice about which method should
|
| 780 |
be used, but if in doubt, it is recommended that you examine the package
|
| 781 |
removals proposed by each method before proceeding.
|
| 782 |
</para>
|
| 783 |
<para>
|
| 784 |
Some common packages that are expected to be removed include <systemitem
|
| 785 |
role="package">base-config</systemitem>, <systemitem
|
| 786 |
role="package">hotplug</systemitem>, <systemitem
|
| 787 |
role="package">xlibs</systemitem>, <systemitem
|
| 788 |
role="package">netkit-inetd</systemitem>, <systemitem
|
| 789 |
role="package">python2.3</systemitem>, <systemitem
|
| 790 |
role="package">xfree86-common</systemitem>, and <systemitem
|
| 791 |
role="package">xserver-common</systemitem>. For a more complete list of
|
| 792 |
packages obsoleted in &releasename;, see <xref linkend="obsolete"/>.
|
| 793 |
</para>
|
| 794 |
<section id="minimal-upgrade-desktop">
|
| 795 |
<title>Upgrading a desktop system</title>
|
| 796 |
<para>
|
| 797 |
This upgrade path has been verified to work on systems with the &oldreleasename;
|
| 798 |
<literal>desktop</literal> task installed. It is probably the method that will
|
| 799 |
give the best results on systems with the <literal>desktop</literal> task
|
| 800 |
installed, or with the <literal>gnome</literal> or <literal>kde</literal>
|
| 801 |
packages installed.
|
| 802 |
</para>
|
| 803 |
<para>
|
| 804 |
It is probably <emphasis>not</emphasis> the correct method to use if you do not
|
| 805 |
already have the <systemitem role="package">libfam0c102</systemitem> and
|
| 806 |
<systemitem role="package">xlibmesa-glu</systemitem> packages installed:
|
| 807 |
</para>
|
| 808 |
<screen>
|
| 809 |
# dpkg -l libfam0c102 | grep ^ii
|
| 810 |
# dpkg -l xlibmesa-glu | grep ^ii
|
| 811 |
</screen>
|
| 812 |
<para>
|
| 813 |
If you do have a full desktop system installed, run:
|
| 814 |
</para>
|
| 815 |
<screen>
|
| 816 |
# aptitude install libfam0 xlibmesa-glu
|
| 817 |
</screen>
|
| 818 |
</section>
|
| 819 |
|
| 820 |
<section id="minimal-upgrade-x-server">
|
| 821 |
<title>Upgrading a system with some X packages installed</title>
|
| 822 |
<para>
|
| 823 |
Systems with some X packages installed, but not the full
|
| 824 |
<literal>desktop</literal> task, require a different method. This method
|
| 825 |
applies in general to systems with <systemitem
|
| 826 |
role="package">xfree86-common</systemitem> installed, including some server
|
| 827 |
systems which have <systemitem role="package">tasksel</systemitem> server tasks
|
| 828 |
installed as some of these tasks include graphical management tools. It is
|
| 829 |
likely the correct method to use on systems which run X, but do not have the
|
| 830 |
full <literal>desktop</literal> task installed.
|
| 831 |
</para>
|
| 832 |
<screen>
|
| 833 |
# dpkg -l xfree86-common | grep ^ii
|
| 834 |
</screen>
|
| 835 |
<para>
|
| 836 |
First, check whether you have the <systemitem
|
| 837 |
role="package">libfam0c102</systemitem> and <systemitem
|
| 838 |
role="package">xlibmesa-glu</systemitem> packages installed.
|
| 839 |
</para>
|
| 840 |
<screen>
|
| 841 |
# dpkg -l libfam0c102 | grep ^ii
|
| 842 |
# dpkg -l xlibmesa-glu | grep ^ii
|
| 843 |
</screen>
|
| 844 |
<para>
|
| 845 |
If you do not have <systemitem role="package">libfam0c102</systemitem>
|
| 846 |
installed, do not include <systemitem role="package">libfam0</systemitem> in
|
| 847 |
the following commandline. If you do not have <systemitem
|
| 848 |
role="package">xlibmesa-glu</systemitem> installed, do not include it in the
|
| 849 |
following commandline. <footnote><para> This command will determine whether
|
| 850 |
you need libfam0 and xlibmesa-glu installed, and auto-select them for you:
|
| 851 |
</para> <screen> # aptitude install x11-common \ $(dpkg-query --showformat
|
| 852 |
'${Package} ${Status}\n' -W libfam0c102 xlibmesa-glu \ | grep 'ok installed$' |
|
| 853 |
sed -e's/ .*//; s/c102//') </screen> </footnote>
|
| 854 |
</para>
|
| 855 |
<screen>
|
| 856 |
# aptitude install x11-common <replaceable>libfam0</replaceable> <replaceable>xlibmesa-glu</replaceable>
|
| 857 |
</screen>
|
| 858 |
<para>
|
| 859 |
Note that installing <systemitem role="package">libfam0</systemitem> will also
|
| 860 |
install the File Alteration Monitor (<systemitem
|
| 861 |
role="package">fam</systemitem>) as well as the RPC portmapper (<systemitem
|
| 862 |
role="package">portmap</systemitem>) if not already available in your system.
|
| 863 |
Both packages will enable a new network service in the system although they can
|
| 864 |
both be configured to be bound to the (internal) loopback network device.
|
| 865 |
</para>
|
| 866 |
</section>
|
| 867 |
|
| 868 |
<section id="minimal-upgrade-server">
|
| 869 |
<title>Upgrading a system with no X support installed</title>
|
| 870 |
<para>
|
| 871 |
On a system with no X, no additional <literal>aptitude install</literal>
|
| 872 |
command should be required, and you can move on to the next step.
|
| 873 |
</para>
|
| 874 |
</section>
|
| 875 |
|
| 876 |
</section>
|
| 877 |
|
| 878 |
<section id="upgrading-kernel">
|
| 879 |
<title>Upgrading the kernel</title>
|
| 880 |
<para>
|
| 881 |
The <systemitem role="package">udev</systemitem> version in &releasename; does not
|
| 882 |
support kernel versions earlier than 2.6.15 (which includes &oldreleasename; 2.6.8
|
| 883 |
kernels), and the <systemitem role="package">udev</systemitem> version in &oldreleasename;
|
| 884 |
will not work properly with the latest kernels. In addition, installing the
|
| 885 |
&releasename; version of <systemitem role="package">udev</systemitem> will force the
|
| 886 |
removal of <systemitem role="package">hotplug</systemitem>, used by Linux 2.4
|
| 887 |
kernels.
|
| 888 |
</para>
|
| 889 |
<para>
|
| 890 |
As a consequence, the previous kernel package will probably not boot properly
|
| 891 |
after this upgrade. Similarly, there is a time window during the upgrade in
|
| 892 |
which <systemitem role="package">udev</systemitem> has been upgraded but the
|
| 893 |
latest kernel has not been installed. If the system were to be rebooted at
|
| 894 |
this point, in the middle of the upgrade, it might not be bootable because of
|
| 895 |
drivers not being properly detected and loaded. (See <xref
|
| 896 |
linkend="upgrade-preparations"/> for recommendations on preparing for this
|
| 897 |
possibility if you are upgrading remotely.)
|
| 898 |
</para>
|
| 899 |
<para>
|
| 900 |
Unless your system has the <literal>desktop</literal> task installed, or other
|
| 901 |
packages that would cause an unacceptable number of package removals, it is
|
| 902 |
therefore recommended that you upgrade the kernel on its own at this point.
|
| 903 |
</para>
|
| 904 |
<para>
|
| 905 |
To proceed with this kernel upgrade, run:
|
| 906 |
</para>
|
| 907 |
<screen>
|
| 908 |
# aptitude install linux-image-2.6-<replaceable>flavor</replaceable>
|
| 909 |
</screen>
|
| 910 |
<para>
|
| 911 |
See <xref linkend="kernel-metapackage"/> for help in determining which flavor
|
| 912 |
of kernel package you should install.
|
| 913 |
</para>
|
| 914 |
<para>
|
| 915 |
In the desktop case, it is unfortunately not possible to ensure the new kernel
|
| 916 |
package is installed immediately after the new <systemitem
|
| 917 |
role="package">udev</systemitem> is installed, so there is a window of unknown
|
| 918 |
length when your system will have no kernel installed with full hotplug
|
| 919 |
support. See <xref linkend="newkernel"/> for information on configuring your
|
| 920 |
system to not depend on hotplug for booting.
|
| 921 |
</para>
|
| 922 |
</section>
|
| 923 |
|
| 924 |
<section id="upgrading-other">
|
| 925 |
<title>Upgrading the rest of the system</title>
|
| 926 |
<para>
|
| 927 |
You are now ready to continue with the main part of the upgrade. Execute:
|
| 928 |
</para>
|
| 929 |
<screen>
|
| 930 |
# aptitude dist-upgrade
|
| 931 |
</screen>
|
| 932 |
<para>
|
| 933 |
This will perform a complete upgrade of the system, i.e. install the newest
|
| 934 |
available versions of all packages, and resolve all possible dependency changes
|
| 935 |
between packages in different releases. If necessary, it will install some new
|
| 936 |
packages (usually new library versions, or renamed packages), and remove any
|
| 937 |
conflicting obsoleted packages.
|
| 938 |
</para>
|
| 939 |
<para>
|
| 940 |
When upgrading from a set of CD-ROMs, you will be asked to insert specific CDs
|
| 941 |
at several points during the upgrade. You might have to insert the same CD
|
| 942 |
multiple times; this is due to inter-related packages that have been spread out
|
| 943 |
over the CDs.
|
| 944 |
</para>
|
| 945 |
<para>
|
| 946 |
New versions of currently installed packages that cannot be upgraded without
|
| 947 |
changing the install status of another package will be left at their current
|
| 948 |
version (displayed as <quote>held back</quote>). This can be resolved by either using
|
| 949 |
<command>aptitude</command> to choose these packages for installation or by
|
| 950 |
trying <literal>aptitude -f install
|
| 951 |
<replaceable>package</replaceable></literal>.
|
| 952 |
</para>
|
| 953 |
</section>
|
| 954 |
|
| 955 |
<section id="get-signatures">
|
| 956 |
<title>Getting package signatures</title>
|
| 957 |
<para>
|
| 958 |
After the upgrade, with the new version of <systemitem role="package">apt</systemitem> you can now
|
| 959 |
update your package information, which will include the new package signature
|
| 960 |
checking mechanism:
|
| 961 |
</para>
|
| 962 |
<screen>
|
| 963 |
# aptitude update
|
| 964 |
</screen>
|
| 965 |
<para>
|
| 966 |
The upgrade will have already retrieved and enabled the signing keys for
|
| 967 |
Debian's package archives. If you add other (unofficial) package sources,
|
| 968 |
<systemitem role="package">apt</systemitem> will print warnings related to its inability to confirm
|
| 969 |
that packages downloaded from them are legitimate and have not been tampered
|
| 970 |
with. For more information please see <xref linkend="pkgmgmt"/>.
|
| 971 |
</para>
|
| 972 |
<para>
|
| 973 |
You will notice that, since you are using the new version of
|
| 974 |
<systemitem role="package">apt</systemitem>, it will download package differences files
|
| 975 |
(<literal>pdiff</literal>) instead of the full package index list. For more
|
| 976 |
information on this feature please read <xref linkend="apt-pdiff"/>.
|
| 977 |
</para>
|
| 978 |
</section>
|
| 979 |
|
| 980 |
<section id="trouble">
|
| 981 |
<title>Possible issues during upgrade</title>
|
| 982 |
<para>
|
| 983 |
If an operation using <command>aptitude</command>, <command>apt-get</command>,
|
| 984 |
or <command>dpkg</command> fails with the error
|
| 985 |
</para>
|
| 986 |
<screen>
|
| 987 |
E: Dynamic MMap ran out of room
|
| 988 |
</screen>
|
| 989 |
<para>
|
| 990 |
the default cache space is insufficient. You can solve this by either removing
|
| 991 |
or commenting lines you don't need in
|
| 992 |
<filename>/etc/apt/sources.list</filename> or by increasing the cache size.
|
| 993 |
The cache size can be increased by setting <literal>APT::Cache-Limit</literal>
|
| 994 |
in <filename>/etc/apt/apt.conf</filename>. The following command will set it
|
| 995 |
to a value that should be sufficient for the upgrade:
|
| 996 |
</para>
|
| 997 |
<screen>
|
| 998 |
# echo 'APT::Cache-Limit "12500000";' >> /etc/apt/apt.conf
|
| 999 |
</screen>
|
| 1000 |
<para>
|
| 1001 |
This assumes that you do not yet have this variable set in that file.
|
| 1002 |
</para>
|
| 1003 |
<para>
|
| 1004 |
Sometimes it's necessary to enable the <literal>APT::Force-LoopBreak</literal>
|
| 1005 |
option in APT to be able to temporarily remove an essential package due to a
|
| 1006 |
Conflicts/Pre-Depends loop. <command>aptitude</command> will alert you of this
|
| 1007 |
and abort the upgrade. You can work around that by specifying <literal>-o
|
| 1008 |
APT::Force-LoopBreak=1</literal> option on <command>aptitude</command> command
|
| 1009 |
line.
|
| 1010 |
</para>
|
| 1011 |
<para>
|
| 1012 |
It is possible that a system's dependency structure can be so corrupt as to
|
| 1013 |
require manual intervention. Usually this means using
|
| 1014 |
<command>aptitude</command> or
|
| 1015 |
</para>
|
| 1016 |
<screen>
|
| 1017 |
# dpkg --remove <replaceable>package_name</replaceable>
|
| 1018 |
</screen>
|
| 1019 |
<para>
|
| 1020 |
to eliminate some of the offending packages, or
|
| 1021 |
</para>
|
| 1022 |
<screen>
|
| 1023 |
# aptitude -f install
|
| 1024 |
# dpkg --configure --pending
|
| 1025 |
</screen>
|
| 1026 |
<para>
|
| 1027 |
In extreme cases you might have to force re-installation with a command like
|
| 1028 |
</para>
|
| 1029 |
<screen>
|
| 1030 |
# dpkg --install <replaceable>/path/to/package_name.deb</replaceable>
|
| 1031 |
</screen>
|
| 1032 |
<para>
|
| 1033 |
File conflicts should not occur if you upgrade from a <quote>pure</quote> &oldreleasename; system, but
|
| 1034 |
can occur if you have unofficial backports installed. A file conflict will
|
| 1035 |
result in an error like:
|
| 1036 |
</para>
|
| 1037 |
<screen>
|
| 1038 |
Unpacking <replaceable><package-foo></replaceable> (from <replaceable><package-foo-file></replaceable>) ...
|
| 1039 |
dpkg: error processing <replaceable><package-foo></replaceable> (--install):
|
| 1040 |
trying to overwrite `<replaceable><some-file-name></replaceable>',
|
| 1041 |
which is also in package <replaceable><package-bar></replaceable>
|
| 1042 |
dpkg-deb: subprocess paste killed by signal (Broken pipe)
|
| 1043 |
Errors were encountered while processing:
|
| 1044 |
<replaceable><package-foo></replaceable>
|
| 1045 |
</screen>
|
| 1046 |
<para>
|
| 1047 |
You can try to solve a file conflict by forcibly removing the package mentioned
|
| 1048 |
on the <emphasis>last</emphasis> line of the error message:
|
| 1049 |
</para>
|
| 1050 |
<screen>
|
| 1051 |
# dpkg -r --force-depends <replaceable>package_name</replaceable>
|
| 1052 |
</screen>
|
| 1053 |
<para>
|
| 1054 |
After fixing things up, you should be able to resume the upgrade by repeating
|
| 1055 |
the previously described <literal>aptitude</literal> commands.
|
| 1056 |
</para>
|
| 1057 |
<para>
|
| 1058 |
During the upgrade, you will be asked questions regarding the configuration or
|
| 1059 |
re-configuration of several packages. When you are asked if any file in the
|
| 1060 |
<filename>/etc/init.d</filename> or <filename>/etc/terminfo</filename>
|
| 1061 |
directories, or the <filename>/etc/manpath.config</filename> file should be
|
| 1062 |
replaced by the package maintainer's version, it's usually necessary to answer
|
| 1063 |
`yes' to ensure system consistency. You can always revert to the old versions,
|
| 1064 |
since they will be saved with a <literal>.dpkg-old</literal> extension.
|
| 1065 |
</para>
|
| 1066 |
<para>
|
| 1067 |
If you're not sure what to do, write down the name of the package or file and
|
| 1068 |
sort things out at a later time. You can search in the typescript file to
|
| 1069 |
review the information that was on the screen during the upgrade.
|
| 1070 |
</para>
|
| 1071 |
</section>
|
| 1072 |
|
| 1073 |
</section>
|
| 1074 |
|
| 1075 |
<section id="newkernel">
|
| 1076 |
<title>Upgrading your kernel and related packages</title>
|
| 1077 |
<para>
|
| 1078 |
This section explains how to upgrade your kernel and identifies potential
|
| 1079 |
issues related to this upgrade. You can either install one of the <systemitem
|
| 1080 |
role="package">linux-image-*</systemitem> packages provided by Debian, or
|
| 1081 |
compile a customized kernel from source.
|
| 1082 |
</para>
|
| 1083 |
<para>
|
| 1084 |
Note that a lot of information in this section is based on the assumption that
|
| 1085 |
you will be using one of the modular Debian kernels, together with <systemitem
|
| 1086 |
role="package">initramfs-tools</systemitem> and <systemitem
|
| 1087 |
role="package">udev</systemitem>. If you choose to use a custom kernel that
|
| 1088 |
does not require an initrd or if you use a different initrd generator, some of
|
| 1089 |
the information may not be relevant for you.
|
| 1090 |
</para>
|
| 1091 |
<para>
|
| 1092 |
Note also that if <systemitem role="package">udev</systemitem> is
|
| 1093 |
<emphasis>not</emphasis> installed on your system, it is still possible to use
|
| 1094 |
<systemitem role="package">hotplug</systemitem> for hardware discovery.
|
| 1095 |
</para>
|
| 1096 |
<para>
|
| 1097 |
If you are currently using a 2.4 kernel, you should also read <xref
|
| 1098 |
linkend="upgrade-to-2.6"/> carefully.
|
| 1099 |
</para>
|
| 1100 |
<section id="kernel-metapackage">
|
| 1101 |
<title>Installing the kernel metapackage</title>
|
| 1102 |
<para>
|
| 1103 |
When you dist-upgrade from &oldreleasename; to &releasename;, it is strongly recommended that you
|
| 1104 |
install a new linux-image-2.6-* metapackage. This package may be installed
|
| 1105 |
automatically by the dist-upgrade process. You can verify this by running:
|
| 1106 |
</para>
|
| 1107 |
<screen>
|
| 1108 |
# dpkg -l "linux-image*" | grep ^ii
|
| 1109 |
</screen>
|
| 1110 |
<para>
|
| 1111 |
If you do not see any output, then you will need to install a new linux-image
|
| 1112 |
package by hand. To see a list of available linux-image-2.6 metapackages, run:
|
| 1113 |
</para>
|
| 1114 |
<screen>
|
| 1115 |
# apt-cache search linux-image-2.6- | grep -v transition
|
| 1116 |
</screen>
|
| 1117 |
<para>
|
| 1118 |
If you are unsure about which package to select, run <literal>uname
|
| 1119 |
-r</literal> and look for a package with a similar name. For example, if you
|
| 1120 |
see '<literal>2.4.27-3-686</literal>', it is recommended that you install <systemitem
|
| 1121 |
role="package">linux-image-2.6-686</systemitem>. (Note that the 386 flavor no
|
| 1122 |
longer exists; if you are currently using the 386 kernel flavor, you should
|
| 1123 |
install the 486 flavor instead.) You may also use <command>apt-cache</command>
|
| 1124 |
to see a long description of each package in order to help choose the best one
|
| 1125 |
available. For example:
|
| 1126 |
</para>
|
| 1127 |
<screen>
|
| 1128 |
# apt-cache show linux-image-2.6-686
|
| 1129 |
</screen>
|
| 1130 |
<para>
|
| 1131 |
You should then use <literal>aptitude install</literal> to install it. Once
|
| 1132 |
this new kernel is installed you should reboot at the next available
|
| 1133 |
opportunity to get the benefits provided by the new kernel version.
|
| 1134 |
</para>
|
| 1135 |
<para>
|
| 1136 |
For the more adventurous there is an easy way to compile your own custom kernel
|
| 1137 |
on &debian;. Install the <systemitem
|
| 1138 |
role="package">kernel-package</systemitem> tool and read the documentation in
|
| 1139 |
<filename>/usr/share/doc/kernel-package</filename>.
|
| 1140 |
</para>
|
| 1141 |
</section>
|
| 1142 |
|
| 1143 |
<section id="upgrade-from-2.6">
|
| 1144 |
<title>Upgrading from a 2.6 kernel</title>
|
| 1145 |
<para>
|
| 1146 |
If you are currently running a 2.6 series kernel from &oldreleasename; this upgrade will
|
| 1147 |
take place automatically after you do a full upgrade of the system packages (as
|
| 1148 |
described in <xref linkend="upgradingpackages"/> ).
|
| 1149 |
</para>
|
| 1150 |
<para>
|
| 1151 |
If possible, it is to your advantage to upgrade the kernel package separately
|
| 1152 |
from the main <literal>dist-upgrade</literal> to reduce the chances of a
|
| 1153 |
temporarily non-bootable system. See <xref linkend="upgrading-kernel"/> for a
|
| 1154 |
description of this process. Note that this should only be done after the
|
| 1155 |
minimal upgrade process described in <xref linkend="minimal-upgrade"/>.
|
| 1156 |
</para>
|
| 1157 |
<para>
|
| 1158 |
You can also take this step if you are using your own custom kernel and want to
|
| 1159 |
use the kernel available in &releasename;. If your kernel version is not supported by
|
| 1160 |
<systemitem role="package">udev</systemitem> then it is recommended that you
|
| 1161 |
upgrade after the minimal upgrade. If your version is supported by <systemitem
|
| 1162 |
role="package">udev</systemitem> you can safely wait until after the full
|
| 1163 |
system upgrade.
|
| 1164 |
</para>
|
| 1165 |
</section>
|
| 1166 |
|
| 1167 |
<section id="upgrade-from-2.4">
|
| 1168 |
<title>Upgrading from a 2.4 kernel</title>
|
| 1169 |
<para>
|
| 1170 |
If you have a 2.4 kernel installed, and your system relies on <systemitem
|
| 1171 |
role="package">hotplug</systemitem> for its hardware detection you should first
|
| 1172 |
upgrade to a 2.6 series kernel from &oldreleasename; before attempting the upgrade. Make
|
| 1173 |
sure that the 2.6 series kernel boots your system and all your hardware is
|
| 1174 |
properly detected before you perform the upgrade. The <systemitem
|
| 1175 |
role="package">hotplug</systemitem> package is removed from the system (in
|
| 1176 |
favor of <systemitem role="package">udev</systemitem>) when you do a full
|
| 1177 |
system upgrade. If you do not do the kernel upgrade before this your system
|
| 1178 |
might not boot up properly from this point on. Once you have done an upgrade
|
| 1179 |
to a 2.6 series kernel in &oldreleasename; you can do a kernel upgrade as described in
|
| 1180 |
<xref linkend="upgrade-from-2.6"/>.
|
| 1181 |
</para>
|
| 1182 |
<para>
|
| 1183 |
If your system does not rely on <systemitem
|
| 1184 |
role="package">hotplug</systemitem><footnote><para> You can have the kernel
|
| 1185 |
modules needed by your system loaded statically through proper configuration of
|
| 1186 |
<filename>/etc/modules</filename>.</para> </footnote> you can delay the kernel
|
| 1187 |
upgrade to after you have done a full system upgrade, as described in <xref
|
| 1188 |
linkend="upgrading-other"/>. Once your system has been upgraded you can then
|
| 1189 |
do the following (changing the kernel package name to the one most suited to
|
| 1190 |
your system by substituting <varname>flavor</varname>):
|
| 1191 |
</para>
|
| 1192 |
<screen>
|
| 1193 |
# aptitude install linux-image-2.6-<replaceable>flavor</replaceable>
|
| 1194 |
</screen>
|
| 1195 |
</section>
|
| 1196 |
|
| 1197 |
<section id="device-reorder">
|
| 1198 |
<title>Device enumeration reordering</title>
|
| 1199 |
<para>
|
| 1200 |
&releasename; features a more robust mechanism for hardware discovery than previous
|
| 1201 |
releases. However, this may cause changes in the order devices are discovered
|
| 1202 |
on your system, affecting the order in which device names are assigned. For
|
| 1203 |
example, if you have two network adapters that are associated with two
|
| 1204 |
different drivers, the devices eth0 and eth1 refer to may be swapped. Please
|
| 1205 |
note that the new mechanism means that if you e.g. exchange ethernet adapters
|
| 1206 |
in a running &releasename; system, the new adapter will also get a new interface name.
|
| 1207 |
</para>
|
| 1208 |
<para>
|
| 1209 |
For network devices, you can avoid this reordering by using <systemitem
|
| 1210 |
role="package">udev</systemitem> rules, more specifically, through the
|
| 1211 |
definitions at
|
| 1212 |
<filename>/etc/udev/rules.d/z25_persistent-net.rules</filename><footnote><para>
|
| 1213 |
The rules there are automatically generated by the script
|
| 1214 |
<filename>/etc/udev/rules.d/z45_persistent-net-generator.rules</filename> to
|
| 1215 |
have persistent names for network interfaces. Delete this symlink to disable
|
| 1216 |
persistent device naming for NICs by <systemitem
|
| 1217 |
role="package">udev</systemitem>. </para> </footnote>. Alternatively you can
|
| 1218 |
use the <command>ifrename</command> utility to bind physical devices to
|
| 1219 |
specific names at boot time. See <citerefentry>
|
| 1220 |
<refentrytitle>ifrename</refentrytitle> <manvolnum>8</manvolnum>
|
| 1221 |
</citerefentry> and <citerefentry> <refentrytitle>iftab</refentrytitle>
|
| 1222 |
<manvolnum>5</manvolnum> </citerefentry> for more information. The two
|
| 1223 |
alternatives (<systemitem role="package">udev</systemitem> and
|
| 1224 |
<command>ifrename</command>) should not be used at the same time.
|
| 1225 |
</para>
|
| 1226 |
<para>
|
| 1227 |
For storage devices, you can avoid this reordering by using <systemitem
|
| 1228 |
role="package">initramfs-tools</systemitem> and configuring it to load storage
|
| 1229 |
device driver modules in the same order they are currently loaded. To do this,
|
| 1230 |
identify the order the storage modules on your system were loaded by looking at
|
| 1231 |
the output of <command>lsmod</command>. <command>lsmod</command> lists modules
|
| 1232 |
in the reverse order that they were loaded in, i.e., the first module in the
|
| 1233 |
list was the last one loaded. Note that this will only work for devices which
|
| 1234 |
the kernel enumerates in a stable order (like PCI devices).
|
| 1235 |
</para>
|
| 1236 |
<para>
|
| 1237 |
However, removing and reloading modules after initial boot will affect this
|
| 1238 |
order. Also, your kernel may have some drivers linked statically, and these
|
| 1239 |
names will not appear in the output of <command>lsmod</command>. You may be
|
| 1240 |
able to decipher these driver names and load order from looking at
|
| 1241 |
<filename>/var/log/kern.log</filename>, or the output of
|
| 1242 |
<command>dmesg</command>.
|
| 1243 |
</para>
|
| 1244 |
<para>
|
| 1245 |
Add these module names to <filename>/etc/initramfs-tools/modules</filename> in
|
| 1246 |
the order they should be loaded at boot time. Some module names may have
|
| 1247 |
changed between &oldreleasename; and &releasename;. For example, sym53c8xx_2 has become sym53c8xx.
|
| 1248 |
</para>
|
| 1249 |
<para>
|
| 1250 |
You will then need to regenerate your initramfs image(s) by executing
|
| 1251 |
<literal>update-initramfs -u -k all</literal>.
|
| 1252 |
</para>
|
| 1253 |
<para>
|
| 1254 |
Once you are running a &releasename; kernel and <systemitem
|
| 1255 |
role="package">udev</systemitem>, you may reconfigure your system to access
|
| 1256 |
disks by an alias that is not dependent upon driver load order. These aliases
|
| 1257 |
reside in the <filename>/dev/disk/</filename> hierarchy.
|
| 1258 |
</para>
|
| 1259 |
</section>
|
| 1260 |
|
| 1261 |
<section id="boot-timing">
|
| 1262 |
<title>Boot timing issues</title>
|
| 1263 |
<para>
|
| 1264 |
If an initrd created with <systemitem
|
| 1265 |
role="package">initramfs-tools</systemitem> is used to boot the system, in some
|
| 1266 |
cases the creation of device files by <systemitem
|
| 1267 |
role="package">udev</systemitem> can happen too late for the boot scripts to
|
| 1268 |
act on.
|
| 1269 |
</para>
|
| 1270 |
<para>
|
| 1271 |
The usual symptoms are that the boot will fail because the root file system
|
| 1272 |
cannot be mounted and you are dropped into a debug shell, but that when you
|
| 1273 |
check afterwards, all devices that are needed are present in
|
| 1274 |
<filename>/dev</filename>. This has been observed in cases where the root file
|
| 1275 |
system is on a <acronym>USB</acronym> disk or on <acronym>RAID</acronym>, especially if lilo is used.
|
| 1276 |
</para>
|
| 1277 |
<para>
|
| 1278 |
A workaround for this issue is to use the boot parameter
|
| 1279 |
<literal>rootdelay=<replaceable>9</replaceable></literal>. The value for the
|
| 1280 |
timeout (in seconds) may need to be adjusted.
|
| 1281 |
</para>
|
| 1282 |
</section>
|
| 1283 |
|
| 1284 |
</section>
|
| 1285 |
|
| 1286 |
<section id="nownownow">
|
| 1287 |
<title>Things to do before rebooting</title>
|
| 1288 |
<para>
|
| 1289 |
When <literal>aptitude dist-upgrade</literal> has finished, the <quote>formal</quote> upgrade
|
| 1290 |
is complete, but there are some other things that should be taken care of
|
| 1291 |
<emphasis>before</emphasis> the next reboot.
|
| 1292 |
</para>
|
| 1293 |
|
| 1294 |
<section id="rerunlilo">
|
| 1295 |
<title>Rerun lilo</title>
|
| 1296 |
<para>
|
| 1297 |
If you are using <systemitem role="package">lilo</systemitem> as your
|
| 1298 |
bootloader (it is the default bootloader for some installations of &oldreleasename;) it is
|
| 1299 |
strongly recommended that you rerun <command>lilo</command> after the upgrade:
|
| 1300 |
</para>
|
| 1301 |
<screen>
|
| 1302 |
# /sbin/lilo
|
| 1303 |
</screen>
|
| 1304 |
<para>
|
| 1305 |
Notice this is needed even if you did not upgrade your system's kernel, as
|
| 1306 |
<command>lilo</command>'s second stage will change due to the package upgrade.
|
| 1307 |
</para>
|
| 1308 |
<para>
|
| 1309 |
Also, review the contents of your <filename>/etc/kernel-img.conf</filename> and
|
| 1310 |
make sure that you have <literal>do_bootloader = Yes</literal> in it. That
|
| 1311 |
way the bootloader will always be rerun after a kernel upgrade.
|
| 1312 |
</para>
|
| 1313 |
<para>
|
| 1314 |
If you encounter any issues when running <command>lilo</command>, review the
|
| 1315 |
symbolic links in <filename>/</filename> to <filename>vmlinuz</filename> and
|
| 1316 |
<filename>initrd</filename> and the contents of your
|
| 1317 |
<filename>/etc/lilo.conf</filename> for discrepancies.
|
| 1318 |
</para>
|
| 1319 |
<para>
|
| 1320 |
If you forgot to rerun <command>lilo</command> before the reboot or the system
|
| 1321 |
is accidentally rebooted before you could do this manually, your system might
|
| 1322 |
fail to boot. Instead of the lilo prompt, you will only see
|
| 1323 |
<literal>LI</literal> when booting the system<footnote><para> For more
|
| 1324 |
information on <command>lilo</command>'s boot error codes please see <ulink
|
| 1325 |
url="http://tldp.org/HOWTO/Bootdisk-HOWTO/a1483.html">The Linux Bootdisk
|
| 1326 |
HOWTO</ulink>. </para> </footnote>. See <xref linkend="recovery"/> for
|
| 1327 |
information on how to recover from this.
|
| 1328 |
</para>
|
| 1329 |
</section>
|
| 1330 |
|
| 1331 |
<section id="mdadm">
|
| 1332 |
<title>Upgrading mdadm</title>
|
| 1333 |
<para>
|
| 1334 |
mdadm now needs a configuration file to assemble MD arrays (<acronym>RAID</acronym>) from the
|
| 1335 |
initial ramdisk and during the system initialisation sequence. Please make
|
| 1336 |
sure to read and act upon the instructions in
|
| 1337 |
<filename>/usr/share/doc/mdadm/README.upgrading-2.5.3.gz</filename> after the
|
| 1338 |
package has been upgraded <emphasis role="strong">and before you
|
| 1339 |
reboot</emphasis>. The latest version of this file is available at <ulink
|
| 1340 |
url="http://svn.debian.org/wsvn/pkg-mdadm/mdadm/trunk/debian/README.upgrading-2.5.3?op=file"></ulink>;
|
| 1341 |
please consult it in case of problems.
|
| 1342 |
</para>
|
| 1343 |
</section>
|
| 1344 |
|
| 1345 |
</section>
|
| 1346 |
|
| 1347 |
<section id="boot-hangs">
|
| 1348 |
<title>System boot hangs on <literal>Waiting for root file
|
| 1349 |
system</literal></title>
|
| 1350 |
<subtitle>Procedure to recover from <filename>/dev/hda</filename>
|
| 1351 |
became <filename>/dev/sda</filename></subtitle>
|
| 1352 |
|
| 1353 |
<para>
|
| 1354 |
Some users have reported that an upgrade could cause the kernel
|
| 1355 |
not finding the system root partition after a system reboot.
|
| 1356 |
</para>
|
| 1357 |
|
| 1358 |
<para>
|
| 1359 |
In such case, the system boot will hang on the following message:
|
| 1360 |
<screen>Waiting for root file system ...</screen>
|
| 1361 |
and after a few seconds a bare busybox prompt will show.
|
| 1362 |
</para>
|
| 1363 |
|
| 1364 |
<para>
|
| 1365 |
This problem can occur when the upgrade of the kernel introduces
|
| 1366 |
the use of the new generation of <acronym>IDE</acronym>
|
| 1367 |
drivers. The <acronym>IDE</acronym> disk naming convention for the
|
| 1368 |
old drivers was <literal>hda</literal>, <literal>hdb</literal>,
|
| 1369 |
<literal>hdc</literal>, <literal>hdd</literal>. The new drivers
|
| 1370 |
will name the same disks respectively <literal>sda</literal>,
|
| 1371 |
<literal>sdb</literal>, <literal>sdc</literal>,
|
| 1372 |
<literal>sdd</literal>. The problem appears when the upgrade does
|
| 1373 |
not generate a new <filename>/boot/grub/menu.lst</filename> file
|
| 1374 |
to take the new naming convention into account. During the boot,
|
| 1375 |
Grub will pass a system root partition to the kernel that the
|
| 1376 |
kernel doesn't find.
|
| 1377 |
</para>
|
| 1378 |
|
| 1379 |
<para>
|
| 1380 |
If you have encountered this problem after upgrading, jump to
|
| 1381 |
<xref linkend="how-to-recover"/>. To avoid the problem before
|
| 1382 |
upgrading, read ahead.
|
| 1383 |
</para>
|
| 1384 |
|
| 1385 |
<section id="avoid-problems-before-upgrading">
|
| 1386 |
<title>How to avoid the problem before upgrading</title>
|
| 1387 |
|
| 1388 |
<para>
|
| 1389 |
One can avoid this problem entirely by using an identifier for
|
| 1390 |
the root filesystem that does not change from one boot to the
|
| 1391 |
next. There are two possible methods for doing this - labelling
|
| 1392 |
the filesystem, or using the filesystem's universal unique
|
| 1393 |
identifier (<acronym>UUID</acronym>). These methods are
|
| 1394 |
supported in Debian since the 'etch' release.
|
| 1395 |
</para>
|
| 1396 |
|
| 1397 |
<para>
|
| 1398 |
The two approaches have advantages and disadvantages. The
|
| 1399 |
labelling approach is more readable, but there may be problems
|
| 1400 |
if another filesystem on your machine has the same label. The
|
| 1401 |
uuid approach is uglier, but having two clashing uuids is highly
|
| 1402 |
unlikely.
|
| 1403 |
</para>
|
| 1404 |
|
| 1405 |
<para>
|
| 1406 |
For the examples below we assume the root filesystem is on
|
| 1407 |
<filename>/dev/hda6</filename>. We also assume your system has a
|
| 1408 |
working udev installation and ext2 or ext3 filesystems.
|
| 1409 |
</para>
|
| 1410 |
|
| 1411 |
<para>
|
| 1412 |
To implement the labelling approach:
|
| 1413 |
<orderedlist>
|
| 1414 |
<listitem>
|
| 1415 |
<para>
|
| 1416 |
Label the filesystem (the name must be < 16 characters)
|
| 1417 |
by running the command:
|
| 1418 |
<programlisting>e2label /dev/hda6 rootfilesys</programlisting>
|
| 1419 |
</para>
|
| 1420 |
</listitem>
|
| 1421 |
<listitem>
|
| 1422 |
<para>
|
| 1423 |
Edit <filename>/boot/grub/menu.lst</filename> and change the line:
|
| 1424 |
<programlisting># kopt=root=/dev/hda6 ro</programlisting>
|
| 1425 |
to
|
| 1426 |
<programlisting># kopt=root=LABEL=rootfilesys ro</programlisting>
|
| 1427 |
<note>
|
| 1428 |
<para>
|
| 1429 |
Do not remove the <literal>#</literal> at the start of
|
| 1430 |
the line, it needs to be there.
|
| 1431 |
</para>
|
| 1432 |
</note>
|
| 1433 |
</para>
|
| 1434 |
</listitem>
|
| 1435 |
<listitem>
|
| 1436 |
<para>
|
| 1437 |
Update the <literal>kernel</literal> lines in
|
| 1438 |
<filename>menu.lst</filename> by running the command
|
| 1439 |
<command>update-grub</command>.
|
| 1440 |
</para>
|
| 1441 |
</listitem>
|
| 1442 |
<listitem>
|
| 1443 |
<para>
|
| 1444 |
Edit <filename>/etc/fstab</filename> and change the line
|
| 1445 |
that mounts the <filename>/</filename> partition, eg.:
|
| 1446 |
|
| 1447 |
<programlisting>/dev/hda6 / ext3 defaults,errors=remount-ro 0 1</programlisting>
|
| 1448 |
|
| 1449 |
to
|
| 1450 |
|
| 1451 |
<programlisting>LABEL=rootfilesys / ext3 defaults,errors=remount-ro 0 1</programlisting>
|
| 1452 |
|
| 1453 |
The change that matters here is the first column, you
|
| 1454 |
don't need to modify the other columns of this line.
|
| 1455 |
</para>
|
| 1456 |
</listitem>
|
| 1457 |
</orderedlist>
|
| 1458 |
</para>
|
| 1459 |
|
| 1460 |
<para>
|
| 1461 |
To implement the uuid approach:
|
| 1462 |
<orderedlist>
|
| 1463 |
<listitem>
|
| 1464 |
<para>
|
| 1465 |
Find out the universal unique identifier of your filesystem by issuing:
|
| 1466 |
<command>ls -l /dev/disk/by-uuid | grep hda6</command>
|
| 1467 |
</para>
|
| 1468 |
<para>
|
| 1469 |
You should get a line similar to this one:
|
| 1470 |
<screen>lrwxrwxrwx 1 root root 24 2008-09-25 08:16 d0dfcc8a-417a-41e3-ad2e-9736317f2d8a -> ../../hda6</screen>
|
| 1471 |
|
| 1472 |
The <acronym>UUID</acronym> is the name of the symbolic
|
| 1473 |
link pointing to <filename>/dev/hda6</filename> ie.:
|
| 1474 |
<literal>d0dfcc8a-417a-41e3-ad2e-9736317f2d8a</literal>.
|
| 1475 |
<note>
|
| 1476 |
<para>
|
| 1477 |
Your filesystem <acronym>UUID</acronym>
|
| 1478 |
will be a different string.
|
| 1479 |
</para>
|
| 1480 |
</note>
|
| 1481 |
</para>
|
| 1482 |
</listitem>
|
| 1483 |
<listitem>
|
| 1484 |
<para>
|
| 1485 |
Edit <filename>/boot/grub/menu.lst</filename> and change
|
| 1486 |
the line
|
| 1487 |
|
| 1488 |
<programlisting># kopt=root=/dev/hda6 ro</programlisting>
|
| 1489 |
|
| 1490 |
to
|
| 1491 |
|
| 1492 |
<programlisting># kopt=root=UUID=d0dfcc8a-417a-41e3-ad2e-9736317f2d8 ro</programlisting>
|
| 1493 |
|
| 1494 |
<note>
|
| 1495 |
<para>
|
| 1496 |
Do not remove the <literal>#</literal> at the start of
|
| 1497 |
the line, it needs to be there.
|
| 1498 |
</para>
|
| 1499 |
</note>
|
| 1500 |
</para>
|
| 1501 |
</listitem>
|
| 1502 |
<listitem>
|
| 1503 |
<para>
|
| 1504 |
Update the <literal>kernel</literal> lines in
|
| 1505 |
<filename>menu.lst</filename> by running the command
|
| 1506 |
<command>update-grub</command>.
|
| 1507 |
</para>
|
| 1508 |
</listitem>
|
| 1509 |
<listitem>
|
| 1510 |
<para>
|
| 1511 |
Edit <filename>/etc/fstab</filename> and change the line that mounts the <filename>/</filename> partition, eg.:
|
| 1512 |
|
| 1513 |
<programlisting>/dev/hda6 / ext3 defaults,errors=remount-ro 0 1</programlisting>
|
| 1514 |
|
| 1515 |
to
|
| 1516 |
|
| 1517 |
<programlisting>UUID=d0dfcc8a-417a-41e3-ad2e-9736317f2d8 / ext3 defaults,errors=remount-ro 0 1</programlisting>
|
| 1518 |
|
| 1519 |
The change that matters here is the first column, you
|
| 1520 |
don't need to modify the other columns of this line.
|
| 1521 |
</para>
|
| 1522 |
</listitem>
|
| 1523 |
</orderedlist>
|
| 1524 |
</para>
|
| 1525 |
</section>
|
| 1526 |
|
| 1527 |
<section id="how-to-recover">
|
| 1528 |
<title>How to recover from the problem after the upgrade</title>
|
| 1529 |
|
| 1530 |
<section id="solution1">
|
| 1531 |
<title>Solution 1</title>
|
| 1532 |
<para>
|
| 1533 |
This is applicable when Grub shows you the menu interface for
|
| 1534 |
selecting the entry you want to boot from. If such menu does
|
| 1535 |
not appear, try pressing <keycap>Esc</keycap> key before the
|
| 1536 |
kernel boots in order to make it appear. If you can't get
|
| 1537 |
into this menu, try <xref linkend="solution2"/> or <xref
|
| 1538 |
linkend="solution3"/>.
|
| 1539 |
</para>
|
| 1540 |
|
| 1541 |
<orderedlist>
|
| 1542 |
<listitem>
|
| 1543 |
<para>
|
| 1544 |
In the Grub menu, highlight the entry you want to boot
|
| 1545 |
from. Press <keycap>e</keycap> key to edit the options
|
| 1546 |
related to this entry. You will see something like:
|
| 1547 |
|
| 1548 |
<screen>root (hd0,0)
|
| 1549 |
kernel /vmlinuz-2.6.26-1-686 root=/dev/hda6 ro
|
| 1550 |
initrd /initrd.img-2.6.26-1-686</screen>
|
| 1551 |
</para>
|
| 1552 |
</listitem>
|
| 1553 |
<listitem>
|
| 1554 |
<para>
|
| 1555 |
Highlight the line
|
| 1556 |
|
| 1557 |
<screen>kernel /vmlinuz-2.6.26-1-686 root=/dev/hda6 ro</screen>
|
| 1558 |
|
| 1559 |
press <keycap>e</keycap> key and replace
|
| 1560 |
<literal>hdX</literal> with
|
| 1561 |
<literal>sd<replaceable>X</replaceable></literal>
|
| 1562 |
(<varname>X</varname> being the letter
|
| 1563 |
<literal>a</literal>, <literal>b</literal>,
|
| 1564 |
<literal>c</literal> or <literal>d</literal> depending of
|
| 1565 |
your system), In my example the line becomes:
|
| 1566 |
|
| 1567 |
<screen>kernel /vmlinuz-2.6.26-1-686 root=/dev/sda6 ro</screen>
|
| 1568 |
|
| 1569 |
Then press <keycap>Enter</keycap> to save the
|
| 1570 |
modification. If other lines show
|
| 1571 |
<literal>hd<replaceable>X</replaceable></literal>, change
|
| 1572 |
these line too. Don't modify the entry similar to
|
| 1573 |
<literal>root (hd0,0)</literal>. Once all modifications
|
| 1574 |
are done, press <keycap>b</keycap> key. And your system
|
| 1575 |
should now boot as usual.
|
| 1576 |
</para>
|
| 1577 |
</listitem>
|
| 1578 |
<listitem>
|
| 1579 |
<para>
|
| 1580 |
Now that your system has booted, you need to fix this
|
| 1581 |
issue permanently. Jump to <xref
|
| 1582 |
linkend="avoid-problems-before-upgrading"/> and apply one
|
| 1583 |
of the two proposed procedures.
|
| 1584 |
</para>
|
| 1585 |
</listitem>
|
| 1586 |
</orderedlist>
|
| 1587 |
</section>
|
| 1588 |
|
| 1589 |
<section id="solution2">
|
| 1590 |
<title>Solution 2</title>
|
| 1591 |
|
| 1592 |
<para>
|
| 1593 |
Boot from a debian installation media
|
| 1594 |
(<acronym>CD</acronym>/<acronym>DVD</acronym>) and when
|
| 1595 |
prompt, type <literal>rescue</literal> to launch the rescue
|
| 1596 |
mode. Select your language, location, keyboard mapping, let it
|
| 1597 |
configure the network no matter if it success or not. After a
|
| 1598 |
while, you should be asked for selecting a partition you want
|
| 1599 |
to use as root file system. The proposed choices will look
|
| 1600 |
something like:
|
| 1601 |
|
| 1602 |
<screen>/dev/ide/host0/bus0/target0/lun0/part1
|
| 1603 |
/dev/ide/host0/bus0/target0/lun0/part2
|
| 1604 |
/dev/ide/host0/bus0/target0/lun0/part5
|
| 1605 |
/dev/ide/host0/bus0/target0/lun0/part6</screen>
|
| 1606 |
</para>
|
| 1607 |
|
| 1608 |
<para>
|
| 1609 |
If you know which partition is your root file system, choose
|
| 1610 |
the right one. If you don't, just try with the first. If it
|
| 1611 |
complains about an invalid root file system partition, try the
|
| 1612 |
next one, and so on. Trying one after the other shouldn't arm
|
| 1613 |
your partitions and if you have only one system installed on
|
| 1614 |
your disks, you should easily find the right root file system
|
| 1615 |
partition. If you have many systems installed on your disks,
|
| 1616 |
it would be better to know exactly which is the right
|
| 1617 |
partition.
|
| 1618 |
</para>
|
| 1619 |
|
| 1620 |
<para>
|
| 1621 |
Once you have choosen a partition, you will be proposed among
|
| 1622 |
several actions. Make the choice of executing a shell in the
|
| 1623 |
selected partition. If it complains that it cannot do that
|
| 1624 |
then try with another partition.
|
| 1625 |
</para>
|
| 1626 |
|
| 1627 |
<para>
|
| 1628 |
Now you should have shell access as user root on your root
|
| 1629 |
file system mounted on <filename>/</filename>. You need access
|
| 1630 |
to the <filename>/boot</filename>, <filename>/sbin</filename>
|
| 1631 |
and <filename>/usr</filename> directories content. If these
|
| 1632 |
directories need to be mounted from other partitions, do it.
|
| 1633 |
(see <filename>/etc/fstab</filename> if you have no idea of
|
| 1634 |
which partition to mount).
|
| 1635 |
</para>
|
| 1636 |
|
| 1637 |
<para>
|
| 1638 |
Jump to <xref linkend="avoid-problems-before-upgrading"/> and
|
| 1639 |
apply one of the two proposed procedures to fix the problem
|
| 1640 |
parmanently. Then type <literal>exit</literal> to leave the
|
| 1641 |
rescue shell and select <literal>reboot</literal> for
|
| 1642 |
rebooting the system as usual. (Don't forget to remove the
|
| 1643 |
bootable media)
|
| 1644 |
</para>
|
| 1645 |
</section>
|
| 1646 |
|
| 1647 |
<section id="solution3">
|
| 1648 |
<title>Solution 3</title>
|
| 1649 |
|
| 1650 |
<orderedlist>
|
| 1651 |
<listitem>
|
| 1652 |
<para>
|
| 1653 |
Boot from your favorite LiveCD distribution (Debian Live,
|
| 1654 |
Knoppix, Ubuntu Live and many other).
|
| 1655 |
</para>
|
| 1656 |
</listitem>
|
| 1657 |
<listitem>
|
| 1658 |
<para>
|
| 1659 |
Mount the partition where your <filename>/boot</filename>
|
| 1660 |
directory is. If you don't know which one it is, use the
|
| 1661 |
output of the command <command>dmesg</command> to find
|
| 1662 |
whether your disk is known as <literal>hda</literal>,
|
| 1663 |
<literal>hdb</literal>, <literal>hdc</literal>,
|
| 1664 |
<literal>hdd</literal> or <literal>sda</literal>,
|
| 1665 |
<literal>sdb</literal>, <literal>sdc</literal>,
|
| 1666 |
<literal>sdd</literal>. Once you know which disk to work
|
| 1667 |
on, for example <literal>sdb</literal>, issue the
|
| 1668 |
following command to see the partition table of the disk
|
| 1669 |
and to find the right partition <command>fdisk -l
|
| 1670 |
/dev/sdb</command>
|
| 1671 |
</para>
|
| 1672 |
</listitem>
|
| 1673 |
<listitem>
|
| 1674 |
<para>
|
| 1675 |
Assuming that you have mounted the right partition under
|
| 1676 |
<filename>/mnt</filename> and that this partition contains
|
| 1677 |
the <filename>/boot</filename> directory and its content,
|
| 1678 |
edit the <filename>/mnt/boot/grub/menu.lst</filename>
|
| 1679 |
file.
|
| 1680 |
</para>
|
| 1681 |
<para>
|
| 1682 |
Find the section similar to:
|
| 1683 |
<programlisting>## ## End Default Options ##
|
| 1684 |
|
| 1685 |
title Debian GNU/Linux, kernel 2.6.26-1-686
|
| 1686 |
root (hd0,0)
|
| 1687 |
kernel /vmlinuz-2.6.26-1-686 root=/dev/hda6 ro
|
| 1688 |
initrd /initrd.img-2.6.26-1-686
|
| 1689 |
|
| 1690 |
title Debian GNU/Linux, kernel 2.6.26-1-686 (single-user mode)
|
| 1691 |
root (hd0,0)
|
| 1692 |
kernel /vmlinuz-2.6.26-1-686 root=/dev/hda6 ro single
|
| 1693 |
initrd /initrd.img-2.6.26-1-686
|
| 1694 |
|
| 1695 |
### END DEBIAN AUTOMAGIC KERNELS LIST</programlisting>
|
| 1696 |
|
| 1697 |
and replace every <literal>hda</literal>,
|
| 1698 |
<literal>hdb</literal>, <literal>hdc</literal>,
|
| 1699 |
<literal>hdd</literal> respectively with
|
| 1700 |
<literal>sda</literal>, <literal>sdb</literal>,
|
| 1701 |
<literal>sdc</literal>, <literal>sdd</literal>. Don't
|
| 1702 |
modify the line similar to:
|
| 1703 |
|
| 1704 |
<screen>root (hd0,0)</screen>
|
| 1705 |
</para>
|
| 1706 |
</listitem>
|
| 1707 |
<listitem>
|
| 1708 |
<para>
|
| 1709 |
Reboot the system, remove the LiveCD and your system
|
| 1710 |
should boot correctly.
|
| 1711 |
</para>
|
| 1712 |
</listitem>
|
| 1713 |
<listitem>
|
| 1714 |
<para>
|
| 1715 |
When it has booted, apply one of the two proposed
|
| 1716 |
procedures under <xref
|
| 1717 |
linkend="avoid-problems-before-upgrading"/> to fix the
|
| 1718 |
problem permanently.
|
| 1719 |
</para>
|
| 1720 |
</listitem>
|
| 1721 |
</orderedlist>
|
| 1722 |
</section>
|
| 1723 |
</section>
|
| 1724 |
</section>
|
| 1725 |
|
| 1726 |
<section id="for-next">
|
| 1727 |
<title>Preparing for the next release</title>
|
| 1728 |
<para>
|
| 1729 |
After the upgrade there are several things you can do to prepare for the next
|
| 1730 |
release.
|
| 1731 |
</para>
|
| 1732 |
<itemizedlist>
|
| 1733 |
<listitem>
|
| 1734 |
<para>
|
| 1735 |
If using <systemitem role="package">grub</systemitem>, edit
|
| 1736 |
<filename>/etc/kernel-img.conf</filename> and adjust the location of the
|
| 1737 |
<command>update-grub</command> program changing
|
| 1738 |
<filename>/sbin/update-grub</filename> to
|
| 1739 |
<filename>/usr/sbin/update-grub</filename>.
|
| 1740 |
</para>
|
| 1741 |
</listitem>
|
| 1742 |
<listitem>
|
| 1743 |
<para>
|
| 1744 |
If the new kernel image metapackage was pulled in as a dependency of the old
|
| 1745 |
one, it will be marked as automatically installed, which should be corrected:
|
| 1746 |
</para>
|
| 1747 |
<screen>
|
| 1748 |
# aptitude unmarkauto $(dpkg-query -W 'linux-image-2.6-*' | cut -f1)
|
| 1749 |
</screen>
|
| 1750 |
</listitem>
|
| 1751 |
<listitem>
|
| 1752 |
<para>
|
| 1753 |
Remove &oldreleasename;'s kernel metapackages by running:
|
| 1754 |
</para>
|
| 1755 |
<screen>
|
| 1756 |
# aptitude purge kernel-image-2.6-<replaceable>flavor</replaceable>
|
| 1757 |
</screen>
|
| 1758 |
</listitem>
|
| 1759 |
<listitem>
|
| 1760 |
<para>
|
| 1761 |
Move any configuration options from <filename>/etc/network/options</filename>
|
| 1762 |
to <filename>/etc/sysctl.conf</filename>. Please see
|
| 1763 |
<filename>/usr/share/doc/netbase/README.Debian</filename> for details.
|
| 1764 |
</para>
|
| 1765 |
</listitem>
|
| 1766 |
<listitem>
|
| 1767 |
<para>
|
| 1768 |
Remove obsolete and unused packages as described in <xref linkend="obsolete"/>.
|
| 1769 |
You should review which configuration files they use and consider purging
|
| 1770 |
the packages to remove their configuration files.
|
| 1771 |
</para>
|
| 1772 |
</listitem>
|
| 1773 |
</itemizedlist>
|
| 1774 |
</section>
|
| 1775 |
|
| 1776 |
<section id="deprecated">
|
| 1777 |
<title>Deprecated packages</title>
|
| 1778 |
<para>
|
| 1779 |
With the release of <literal>Lenny</literal> a bigger number of server packages
|
| 1780 |
will be deprecated, thus updating to newer versions of those now will save you
|
| 1781 |
from trouble when updating to <literal>Lenny</literal>.
|
| 1782 |
</para>
|
| 1783 |
<para>
|
| 1784 |
This includes the following packages:
|
| 1785 |
</para>
|
| 1786 |
<itemizedlist>
|
| 1787 |
<listitem>
|
| 1788 |
<para>
|
| 1789 |
apache (1.x), successor is apache2
|
| 1790 |
</para>
|
| 1791 |
</listitem>
|
| 1792 |
<listitem>
|
| 1793 |
<para>
|
| 1794 |
bind8, successor is bind9
|
| 1795 |
</para>
|
| 1796 |
</listitem>
|
| 1797 |
<listitem>
|
| 1798 |
<para>
|
| 1799 |
php4, successor is php5
|
| 1800 |
</para>
|
| 1801 |
</listitem>
|
| 1802 |
<listitem>
|
| 1803 |
<para>
|
| 1804 |
postgresql-7.4, successor is postgresql-8.1
|
| 1805 |
</para>
|
| 1806 |
</listitem>
|
| 1807 |
<listitem>
|
| 1808 |
<para>
|
| 1809 |
exim 3, successor is exim4
|
| 1810 |
</para>
|
| 1811 |
</listitem>
|
| 1812 |
</itemizedlist>
|
| 1813 |
</section>
|
| 1814 |
|
| 1815 |
<section id="obsolete">
|
| 1816 |
<title>Obsolete packages</title>
|
| 1817 |
<para>
|
| 1818 |
Introducing several thousand new packages, &releasename; also retires and omits more
|
| 1819 |
than two thousand old packages that were in &oldreleasename;. It provides no upgrade path
|
| 1820 |
for these obsolete packages. While nothing prevents you from continuing to use
|
| 1821 |
an obsolete package where desired, the Debian project will usually discontinue
|
| 1822 |
security support for it a year after &releasename;'s release<footnote><para> Or for as
|
| 1823 |
long as there is not another release in that time frame. Typically only two
|
| 1824 |
stable releases are supported at any given time. </para> </footnote>, and will
|
| 1825 |
not normally provide other support in the meantime. Replacing them with
|
| 1826 |
available alternatives, if any, is recommended.
|
| 1827 |
</para>
|
| 1828 |
<para>
|
| 1829 |
There are many reasons why packages might have been removed from the
|
| 1830 |
distribution: they are no longer maintained upstream; there is no longer a
|
| 1831 |
Debian Developer interested in maintaining the packages; the functionality they
|
| 1832 |
provide has been superseded by different software (or a new version); or they
|
| 1833 |
are no longer considered suitable for &releasename; due to bugs in them. In the latter
|
| 1834 |
case, packages might still be present in the <quote>unstable</quote> distribution.
|
| 1835 |
</para>
|
| 1836 |
<para>
|
| 1837 |
Detecting which packages in an updated system are <quote>obsolete</quote> is easy since the
|
| 1838 |
package management front-ends will mark them as such. If you are using
|
| 1839 |
<command>aptitude</command>, you will see a listing of these packages in the
|
| 1840 |
<quote>Obsolete and Locally Created Packages</quote> entry. <command>dselect</command>
|
| 1841 |
provides a similar section but the listing it presents might differ. Also, if
|
| 1842 |
you have used <command>aptitude</command> to manually install packages in &oldreleasename;
|
| 1843 |
it will have kept track of those packages you manually installed and will be
|
| 1844 |
able to mark as obsolete those packages pulled in by dependencies alone which
|
| 1845 |
are no longer needed if a package has been removed. Also,
|
| 1846 |
<command>aptitude</command>, unlike <command>deborphan</command> will not mark
|
| 1847 |
as obsolete packages that you manually installed, as opposed to those that were
|
| 1848 |
automatically installed through dependencies.
|
| 1849 |
</para>
|
| 1850 |
<para>
|
| 1851 |
There are additional tools you can use to find obsolete packages such as
|
| 1852 |
<command>deborphan</command>, <command>debfoster</command> or
|
| 1853 |
<command>cruft</command>. <command>deborphan</command> is highly recommended,
|
| 1854 |
although it will (in default mode) only report obsolete libraries: packages in
|
| 1855 |
the <quote><literal>libs</literal></quote> or <quote><literal>oldlibs</literal></quote> sections that are not used by any other packages. Do not
|
| 1856 |
blindly remove the packages these tools present, especially if you are using
|
| 1857 |
aggressive non-default options that are prone to produce false positives. It
|
| 1858 |
is highly recommended that you manually review the packages suggested for
|
| 1859 |
removal (i.e. their contents, size and description) before you remove them.
|
| 1860 |
</para>
|
| 1861 |
<para>
|
| 1862 |
The <ulink url="&url-bts;">Debian Bug Tracking System</ulink>
|
| 1863 |
often provides additional information on why the package was removed. You
|
| 1864 |
should review both the archived bug reports for the package itself and the
|
| 1865 |
archived bug reports for the <ulink
|
| 1866 |
url="&url-bts;cgi-bin/pkgreport.cgi?pkg=ftp.debian.org&archive=yes">ftp.debian.org
|
| 1867 |
pseudo-package</ulink>.
|
| 1868 |
</para>
|
| 1869 |
<section id="dummy">
|
| 1870 |
<title>Dummy packages</title>
|
| 1871 |
<para>
|
| 1872 |
Some packages from &oldreleasename; have been split into several packages in &releasename;, often
|
| 1873 |
to improve system maintainability. To ease the upgrade path in such cases,
|
| 1874 |
&releasename; often provides <quote>dummy</quote> packages: empty packages that have the same name as
|
| 1875 |
the old package in &oldreleasename; with dependencies that cause the new packages to be
|
| 1876 |
installed. These <quote>dummy</quote> packages are considered obsolete packages after the
|
| 1877 |
upgrade and can be safely removed.
|
| 1878 |
</para>
|
| 1879 |
<para>
|
| 1880 |
Most (but not all) dummy packages' descriptions indicate their purpose.
|
| 1881 |
Package descriptions for dummy packages are not uniform, however, so you might
|
| 1882 |
also find <command>deborphan</command> with the <literal>--guess</literal>
|
| 1883 |
options useful to detect them in your system. Note that some dummy packages
|
| 1884 |
are not intended to be removed after an upgrade but are, instead, used to keep
|
| 1885 |
track of the current available version of a program over time.
|
| 1886 |
</para>
|
| 1887 |
</section>
|
| 1888 |
|
| 1889 |
</section>
|
| 1890 |
|
| 1891 |
<section id="plans-for-nigel">
|
| 1892 |
<title>Plans for the next Debian release</title>
|
| 1893 |
|
| 1894 |
<section arch="arm;armel">
|
| 1895 |
<title>Drop of the ARM port, in favour of the ARM EABI port</title>
|
| 1896 |
|
| 1897 |
<para>
|
| 1898 |
Debian lenny has two different and incompatible ARM ports: the
|
| 1899 |
old ABI port (arm) and the new EABI port (armel). Debian lenny
|
| 1900 |
is the last release with support for the ARM port and future
|
| 1901 |
releases will only support the ARM EABI or armel port. It's
|
| 1902 |
therefore recommended to use armel for new installations of
|
| 1903 |
lenny.
|
| 1904 |
</para>
|
| 1905 |
|
| 1906 |
<para>
|
| 1907 |
With the exception of Netwinder, installer images for supported
|
| 1908 |
ARM machines are available for both arm and armel in lenny.
|
| 1909 |
Netwinder support is only available for arm and it will be
|
| 1910 |
dropped after lenny along with the arm port.
|
| 1911 |
</para>
|
| 1912 |
|
| 1913 |
<para>
|
| 1914 |
Please visit <ulink
|
| 1915 |
url="http://wiki.debian.org/ArmEabiPort">this page</ulink> to
|
| 1916 |
learn more about the ARM EABI (armel) port.
|
| 1917 |
</para>
|
| 1918 |
</section>
|
| 1919 |
</section>
|
| 1920 |
</chapter>
|