/[ddp]/manuals/branches/release-notes/lenny/ca/upgrading.dbk
ViewVC logotype

Contents of /manuals/branches/release-notes/lenny/ca/upgrading.dbk

Parent Directory Parent Directory | Revision Log Revision Log


Revision 5608 - (show annotations) (download)
Fri Nov 28 19:45:28 2008 UTC (4 years, 5 months ago) by xerakko
File size: 77382 byte(s)
sync issues.dbk with english ver. 5607
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 "*" &gt; ~/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&gt;~/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";' &gt;&gt; /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>&lt;package-foo&gt;</replaceable> (from <replaceable>&lt;package-foo-file&gt;</replaceable>) ...
1039 dpkg: error processing <replaceable>&lt;package-foo&gt;</replaceable> (--install):
1040 trying to overwrite `<replaceable>&lt;some-file-name&gt;</replaceable>',
1041 which is also in package <replaceable>&lt;package-bar&gt;</replaceable>
1042 dpkg-deb: subprocess paste killed by signal (Broken pipe)
1043 Errors were encountered while processing:
1044 <replaceable>&lt;package-foo&gt;</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 &lt; 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&amp;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>

  ViewVC Help
Powered by ViewVC 1.1.5