[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: 'apt-get dist-upgrade' from Lenny to Squeeze crashes



Alex wrote:
> 'apt-get dist-upgrade' from Lenny (up to date as of 04 Spet. 2011)

Too late now but before upgrading I think it is advisable to look at
the output of apt-show-versions and clean up packages that are no
longer available.  Even though you were fully up to date with Lenny
there were probably other packages installed that have become obsolete
and should be removed.  I think the problem is with these extra
packages.

  $ apt-show-versions | grep -v -e uptodate

Now that you have a mixed Lenny Squeeze system looking at this output
may be more difficult.  You will have to improvise.

> to Squeeze crashes with the following error:-
> 
>    E: Internal Error, Could not perform immediate configuration (2) on libtext-iconv-perl

I think you have extra packages that have been installed previously
but are no longer in the archive and among the set there are circular
dependencies.  These circular dependencies confuse APT and cause it to
fail.

> Procedure used during upgrade to date:-

>    1) Downloaded and burned all .iso images from
>    http://cdimage.debian.org/debian-cd/6.0.2.1/i386/iso-dvd/ to DVD.
>    2) Using Synaptic, all DVDs the added to the repository using 'Add
>    CDROM', and all other repositories disabled (commemnted out).

Why?  That seems very painful to me and uses a lot of bandwidth.  Why
not download just the needed packages with apt-get instead of
downloading *all* available packages?  It is not only easier on you
but it is also easier on the archive mirrors.  Any single machine and
associated site will only use a small fraction of all available
packages.

     ...good tracking history deleted...

>    11) E: Internal Error, Could not perform immediate configuration (2) on libtext-iconv-perl
>    12) Search web for this error message and find that I have to reinstall libc6 and libc6-i686

I think not when the problem is reported with libtext-iconv-perl.  You
probably found hits on reports of error with libc6.

>    13) Reboot into "single-user" mode using root password.
>    14) apt-get install --reinstall libc6 libc6-i686

Didn't hurt but I think didn't do anything helpful either.

>    15) apt-get dist-upgrade
>    16) E: Internal Error, Could not perform immediate configuration (2) on libtext-iconv-perl

Usually that error means a circular dependency loop.  You need to find
the problem and break the loop.  Start by removing lint that has
accumulated.  If you are lucky then cleaning that up will be enough.

I don't know why you are insisting to use DVDs for this upgrade.  It
makes no sense to me and I think just setting yourself up for a more
painful upgrade.

  $ apt-show-versions | grep -v -e uptodate -e linux-image -e keyring

Review that and remove the lint that has collected.

  # dpkg --remove somepackage

Also using deborphan and orphaner can be useful for cleaning.

  # apt-get install deborphan
  # orphaner

You can force an installation of a particular package.  These packages
are downloaded to /var/cache/apt/archives.  This means that you can
fairly easily use that cache location and use dpkg to install.

  # dpkg -i --force-depends /var/cache/apt/archives/somepackage.deb

For example because your package with the problem is
libtext-iconv-perl you could for it to be the only package installed
with dpkg directly:

  # dpkg -i --force-depends /var/cache/apt/archives/libtext-iconv-perl_1.7-2_i386.deb
  # apt-get -f install

Then use 'apt-get -f install' to "fix" the newly introduced dependency
problems.

Other cleaning I recommend before an upgrade is to purge packages that
have been removed but have configuration files remaining behind.
Upgrades are a great time to clean up long gone packages that have
conffiles remaining behind that you will never use again.  Back up
anything that you wish to store long term if there is something you
have configured and think you might want to refer to again.  Remember
that a --purge deletes conffiles from /etc that are otherwise not
removed.

  $ dpkg -l | grep ^rc
  # dpkg --purge somepackage

The more styling way to do 'dpkg -l | grep ^rc' is to use grep-status
and have it print out only package names.  This is useful for more
command line and script automation.  More obscure perhaps but very
powerful and more precise output.

  $ grep-status -sPackage -n -FStatus "deinstall ok config-files"

Lastly here is a complication that makes this Debian upgrade more
difficult than most.  Debian migrates to a dependency based boot
system with Squeeze.  But it can only do this if all /etc/init.d/*
files have LSB headers.  If you don't want this migration then any
error in this will cause that part of the upgrade to stop.  You will
have a good Squeeze system but without dependency based booting.  That
is fine.  Many people consider that a feature.  But if you want to be
like a freshly installed system then you will want it.  This means
cleaning /etc/init.d/ of any executable script (e.g. mode a+x) that
does not have LSB headers.  The insserv program needs LSB headers.

  $ cd /etc/init.d
  $ ls > /tmp/list1
  $ grep -l 'BEGIN INIT INFO' * > /tmp/list2
  $ comm -3 /tmp/list1 /tmp/list2

I can give you script snippets that does the above checking in more
exacting form but it would be too much detail for this message which
is already too long.

Good luck!
Bob

Attachment: signature.asc
Description: Digital signature


Reply to: