For those who shudder at the idea of reinstalling their system from
scratch, here is what I did to upgrade. The process took more than 24
hours, but that's mainly because of the slow Internet connection and
machine (Penitum II/256 MB RAM). The system was usable all the time,
had net access, so my work wasn't disrupted in any way.
The system to be upgraded was a standard deltad installation with
GNOME, GNUstep, TeX and lots of fonts and development packages
installed. I should mention that one year ago I made an accidential
mistake by marking all packages as "manually" installed, which IMHO
made the upgrade substantially harder.
* The first step was to adjust all sources.list entries to point to
deltah, and then
* First I thought that a great amount of packages would depend on
the new glibc, so I did:
aptitude install libc6
Make sure to exit X, of course. This action removed
linux-kernel-headers; that's OK.
* Then, I decided to upgrade dpkg to take advantage of the triggers
support, which supposedly would speed up the process.
aptitude install dpkg
* Next, because the new dpkg considered libc6 in unconfigured state, I
dpkg --configure --pending
(This ran the libc6 triggers.)
* After that I thought that it would be nice to install the new
aptitude, which has many improvements in the dependency resolver.
`aptitude dist-upgrade' of course did not find any solution, and
that was expected. `aptitude install aptitude' didn't work either,
showing that apt+friends are tied to perl, the python transition and
X/GNOME. To clear the way for libapt-pkg-perl and because perl is
fairly fundamental, I did
aptitude install perl libperl5.8 perl-doc
* To get rid of the perl warnings on the console ("unable to set
locale") I ran
aptitude install locales
This shouldn't be needed if you use the C locale.
* I am not sure if the decision to upgrade apt/aptitude first was a
good idea. It seemed impossible to upgrade it, so I started
aptitude in "interactive" mode and selected python-apt for upgrade.
This resulted in a bunch of "Broken" packages, so I reiterated
through the list (by pressing "b"), selecting them either for
upgrade or removal (e.g. all those python2.4-foomodule) according to
the case. Once all the necessary packages were "hinted" and there
were no "broken" according to aptitude, I pressed "g" and it began
Many packages failed at unpack or configure stage, so I just
continued repeating with "g" without selecting more packages until
this partly cycle is completed. There were some problems:
- xkb-data conflicted with xkeyboard-config, but the latter was not
selected for removal. I did that manually.
- evolution-data-server failed to unpack, because it "Breaks"
evolution 2.6.1, while the new evolution depended on, not
surprising, the new evolution-data-server. To break this vicious
circle, I exited aptitude and did:
dpkg -B -i /var/cache/apt/archives/evolution*
This still resulted in a few failures, but was enough to break the
Many packages were failing to configure initially and that's pretty
normal -- for example, the postinst script trying to run
gconftool-2 while gconf2 is not yet configured and depends on newer
libraries with bumped SONAME. I don't remember how many times I
repeated pressing "g", but it was certainly more than 10.
* Once the previous upgrade cycle completed successfully, I tried
again `aptitude dist-upgrade' and `aptitude upgrade' from the
console -- still no luck, too many impossible to resolve
dependencies. So I started again in interactive mode, and began
marking the packages in the "Obsolete" section for removal. Except
the kernel, of course. This resulted in ~150 broken packages, so I
just reiterated through them with "b", decreasing the number to
zero. Then, as usual, "g". There were more than 350 MB to download
so I went to bed.
When I woke up in about 5 hours, the first trouble came. The
package texlive-base-bin was being configured, and its postinst
script has spawned 800 processes (etex, mktexfmt, kpsewhich), eating
all the memory and all the swap. I looked at the temporary files,
and saw it was trying to build the formats but the .fmt files were
missing. Indeed, /var/lib/texmf/web2c/pdfetex/ was completely
empty. I'm not sure this is a real bug or my fault by marking a
tetex-foo package for "purge" instead for removal. Anyway, I copied
latex.fmt, pdflatex.fmt and pdfjadetex.fmt from another machine over
the network and killed the postinst script. On the second attempt I
still got a failure, according to the log "Package color: no Driver
specified". Odd, only
/etc/texmf/tex/latex/config/color.cfg.dpkg-new existed, so I copied
it as color.cfg. Finally, success.
* The previous upgrade cycle did not complete successfully -- some
packages were failing at configure stage -- for example,
samba-common's postinst failed because it had to run ucfr, which was
missing. ucfr is available only in the new ucf, so I decided it was
time to mark all packages for upgrade. I did that again in
interactive mode, with "U".
This cycle also revealed some errors and real bugs. For some
reason, mpd was not stopped so it was failing in postinst by
complaining that the port is busy. I simply killed it.
xchat-gnome-common should conflict+replace with the old xchat-gnome,
otherwise there is a file confilct.
libexiv-dev had a file conflict with libexiv2c2a. Resolving these
conflicts is easy, I simply edit /var/lib/dpkg/info/<package>.list
and for extra safety remove the file(s) from the system.
Likewise, gnustep-make was overwriting files in gnustep-make-doc.
These are real bugs.
The following packages are broken and I just removed them:
gnome-desktop-environment: Depends on gnome-keyring-manager, which
is not available.
gnome: Depends on the above package, whose
dependencies cannot be satisfied.
gnome-fifth-toe: Likewise, depends on
gnustep-games: Depends on the unavailable ladder.app.
Thus, resolving the situation with the conflicts and repeatingly
pressing "g", I ended up with only one obsolete package (the old
kernel image) and zero packages to upgrade.
* I ran
just to be sure that everything is OK.
* I ran
to get rid of the unnecessary libraries. There were lots of them.
* I ran
apt-get autoremove --purge
to get rid of yet another three unnecessary packages.
* Finally, I started aptitude again and chose "Views -> Audit
Recommendations" to install those packages that were recommended but
missing. At least two on this list are bogus: edubuntu-artwork,
xubuntu-default-settings; so I ignored them.
* I edited /etc/kernel-img.conf, adjusting the path to /usr/sbin.
* Reboot for the first time, and here's when the second trouble came.
The kernel was complaining (device-mapper: Unable to find device),
spitting awful amount of noise on the console, and this continued
forever. I identified that the fault was evms, which somehow had
sneaked in. Unfortunately, I was unable to work on a console
because of that permanent noise (despite the suppressing variable in
/etc/sysctl.conf -- strange), and there was not enough available
memory to spawn processes under GNOME. The swap partition was not
mounted, and I was unable to mount it manually. The good old Window
Maker came to the rescue, and I purged evms, evms-cli and
evms-ncurses, resulting in initramfs-tools doing the right thing.
* Second reboot, and rejoice. However, two problems:
- Somehow my /etc/X11/X.org conf had seriously shrunk, wiping out
all the definitions in the importand sections except the xkb
settings. Doing `dpkg-reconfigure xserver-xorg' didn't help, so I
just copied an old version, which worked flawlessly with a few
- There was no sound, and the kernel was complaining at boot:
ALSA [...] es18xx.c:1823: es18xx: unable to grap ports 0x220-0x22f
These are the usual problems with ISA sound cards and newer
kernels, so I just added `pnpbios=off' to the command line at
/boot/grub/menu.lst. It worked.
One minor thing, which of course I do not consider a problem --
however it seems that it comes from gNewSense modifications:
gdm shows a warning, unable to find
/usr/share/gdm/themes/Human/Human.xml. Indeed, that directory is
empty, there is /usr/share/gdm/themes/deltah/Human.xml which is a
symlink to deltah.xml in the same directory.
gNewSense-users mailing list