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

Re: disaster upgrading to elf

David Engel writes ("Re: disaster upgrading to elf"):
> Well, upgrading to ELF really is pretty painless.  [...]
> The first thing you need to do is reinstall the a.out 093R6 base
> system from scratch.  [...]


> The next thing to do is to install the latest dpkg package from the
> ALPHA_TEST directory by running
> 	dpkg --install <path>/dpkg-<version>.deb
> Then (temporarily) remove the old a.out libc package by running
> 	dpkg --remove --force-depends libc
> You may also need to add --force-essential if the above doesn't work.
> Then install the new a.out libc package by running
> 	dpkg --install <path>/libc4-<version>.deb
> Then install the latest ld.so package by running
> 	dpkg --install <path>/ld.so-<version>.deb
> Then install the new ELF libc5 package by running
> 	dpkg --install <path>/libc5-<version>.deb

This lot should not be necessary.  Also, after
  dpkg --remove --force-depends --force-remove-essential libc
your system will probably be completely shafted.  Instead, do as

1.   Ensure that you have at least dpkg-1.0.7, or 1.0.10 if you want
     to be able to use `dpkg-split --split'.

2.   dpkg --install ld.so-<version>.deb

3.   dpkg --remove libc
 OR  use dselect to deselect `libc' (ie, select it for removal)
 If you use dpkg it will produce an error message about dependencies,
 but it will have noted that you wanted to remove libc.

4.   dpkg --install --auto-deconfigure libc4-<version>.deb
 This will replace libc with libc4.  It may deconfigure (ie, break)
 your a.out compiler packages, if you have any installed.

5.   dpkg --install libc5-<version>.deb
 This will install the ELF libc.

NB that you can do this without having to reinstall your system at

Now you can run both a.out and ELF binaries.  The a.out compiler, if
you have one, will be broken - replace it with the new ELF gcc package
from the development tree, or with the new aout-gcc backward-
compatibility package.

At any point,
    dpkg --audit
will tell you about anything that dpkg knows is still broken.

> At this point, you might be able to use dselect to complete the
> installation, but I still wouldn't trust it.  IMHO, you would be
> better using dpkg directly to install the remaining packages you
> desire.

The reason for this is that the development tree is still full of much
broken stuff, and you may well find that the resulting system is
unuseable and too broken to be able to fix itself ..

> [...]     You may have to override some
> things by using --force-<something> to get a few packages installed,
> but until you are more familiar with things, I recommend you don't do
> this before checking with me first.

Quite.  I would strongly advise people NOT to use any --force flags
without being *very* sure of what they're doing.

> I know this all seems rather complicated.  I suppose it is, but only
> because you are converting to ELF before all of the upgrade kinks are
> worked out.  Regular users will have a much easier time of this when
> the conversion to ELF is complete.

I expect we'll have to tell them to
  dpkg --install dpkg-<version>.deb
  dpkg --install ld.so-<version>.deb
  dpkg --install --auto-deconfigure libc4-<version>.deb 
  dpkg --install libc5-<version>.deb
before using dselect in the usual way.

When we've got it sorted out, though, mistakes will just produce error
messages and temporarily broken nonessential packages rather than
unrecoverably broken systems.


Reply to: