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

slink -> potato mostly great, still some rough edges though



[ I realize that I've been quite generous not only in the body
  of this message, but also in the To: header.  So please, if 
  you want to respond to only part of my message, leave all the
  less relevant addresses out of the To: header in your reply. 
  Thanks. ]
  

Hi,

I Just finished upgrading my main system from slink to potato, 
using dselect (apt method.)


The results are mostly positive: 

- On a AMD K6-2 350 with 128 MB it took less than an hour to 
  complete (it helped a bit having a lot of debs already in a 
  local squid cache.)

- After upgrading, it seems that everything still works (or at 
  least the mail system still does if I get this out ;)

- An even more fuzzier and warmer "It just works." feeling than
  I had after the last upgrade.  After a massive upgrade, in 
  which for most packages a version, more than a year newer (and
  hey, this is internet time!) was installed, all my setting are
  still there and things are still working, silently but steady.

Debian Rules (tm).


Of course, I also have some whinin^H^H^H^H^H observations and 
remarks to make after my experiences:

1.  Disk space problems.

  I needed to download and store 130Megs of debs.  This machine
  has enough disk to spare, other machines I own don't.  I found
  a way to do it using nfs mounts, but it involves some twiddling,
  as apt appears to be quite picky about locking.

  Basically, it worked now, but I've been bitten by it before
  and believe me, it aint pretty.

  Until now, I have not seen anyone else notice this (but I didn't
  look for very hard it either.)  I have upgraded several other 
  machines from slink to potato.  Usually, this happened right
  after finishing a slink base installation.  In these situations,
  there is usually plenty of space on /var and the number of 
  to-be-upgraded packages is low, because only the default packages
  heve been installed yet.  So no problem.

  But, if the machine has been used for a while, it has a lot of 
  additional packages installed, much of /var claimed for such 
  frivolous use as mail, news, webdata, databases and system logs.

  So, when it is time for an upgrade, suddenly a 100 MB free space
  on /var is not enough and the system cannot be upgraded easily.  
  
  I see three approaches:

  A:  tell all the users with less than 200 MB to spend on /var to:
     1. "dpkg -r" half of their additionally installed packages,
        which keeps the config information but removes both the
        package and the need to update it;
     2. upgrade what's left of their system;
     3. reinstall all the removed packages, in stages.
     4. stop claiming that Debian is the superior distro, because
        it is so much easier to maintain (once you get it installed.)
  
  B: "ask Jason":
     1. fix apt-get to be considerate about disk-space and learn it
        to cope with and work around diskspace problems.  
     2. test the new apt-get while everything is in freeze, so
        basically apt-get is not getting stress-tested by thousands 
        of admins, hooked on unstable (which gives them a woody.)
     3. cross fingers that this was implemented and tested right.    
     4  if we get awa^H^H^H^H^H^Hit works out, keep proclaiming 
        to the whole world that Debian is superior from the rest.
  
  C:  make upgrading (and installing) more modular (my favorite.)
  
  Here's what I mean with approach C:
  
  Directly, the upgrade diskspace problem can largely be fixed by 
  creating special "upgrade" Packages files and matching "deb" 
  lines for apt's sources list file.
  
  The idea is to provide a cut-down Packages list containing only
  references to the most basic, "essential" packages.  This would 
  be used to do a "basic" update.  After that, the next update run 
  can fetch a second-stage Packages file, this time containing a 
  bigger set of packages, e.g. the "important" ones.

  Finally, when all basic packages and packages providing infra-
  structure to other packages have been upgraded, an update can
  be done to the "default" potato Packages list.

  Thus, we can limit the maximum amount of packages that has to
  be queued at a time.  Also, because it is know much better
  at any time what packages are on the system and in what state,
  the upgrade process can be made more fool-proof.

  This is just a sketch, but the idea is that you can "gate" users
  from one release to another (not necessarily the first next!)[2]
  by carefully controlling a sequence of exact sets and versions 
  of base packages.

  But wait, there is more.
  
  Taking this idea a little further, potato could offer several
  different package profiles.  This way, users can be offered 
  specialized subsets of debian packages.  One big win is when
  people are thrown into dselect (or any other dpkg/apt frontend).

  Instead of having to navigate through all the 4000 Debian packages,
  they get to see only packages from the subsets they care about.
  This will save us a lot of complaints about package manager
  complexity, I believe.
  
  I'd like to also make the observation that running dpkg on a 
  low-resources machine is getting harder for every package added 
  to Debian.  The dpkg database is getting too big for my 386sx20
  with only 16MB [1].  Starting dpkg takes ages and dselect tends to
  bomb out due to lack of memory.  The only way to effectively use
  dpkg on such a system is to clear the available list after an
  "update" and before actually running "dpkg -i".

  Since I'm not going to install tetex-extra, postgresql-dev,
  xserver-3dfx or communicator on a low-resource machine or a
  firewall, I don't really need to have these in a Packages file 
  for such a machine.  

  Similarly, on a dedicated webserver, nameserver or fileserver,
  there is no need to have the whole set of games or x-windows
  packages available.  Splitting these into their own Packages
  files would allow an administrator to selectively enable any 
  corresponding deb resource lines in /etc/apt/sources.list .

  Note that this is completely orthogonal to and does not replace
  the task-* packages.  In fact I think the two should be combined,
  whereby installing a task-* might actually update the apt sources
  list, making the related packages available to dpkg and visible 
  to the user in the interactive package selection tools.
  
  I am thinking of the following scheme, in which barebones task-* 
  packages are provided in the base Packages list.  Unlike the 
  current setup, the metapackage would not come with dependencies on 
  related "real" packages.  Instead, installing the metapackage would 
  simply update the apt sources and successively update the available 
  list with the new Packages file.  
  
  In this new list comes another, higher version of the metapackage, 
  which replaces and conflicts with the base version.  This version 
  of the metapackage comes with the usual payload of dependencies, 
  recommends etc.  against the various other packages, that are also 
  included in the optional Packages list.

  Another advantage to this approach is that it makes it a little
  harder for unsuspecting users to try to install 2618 packages
  the first time they use dselect.  It might also make some
  cross-dependency bugs more easy to isolate.

  Of course, there are some rough edges to be sorted out, but I've
  conveniently left that as an implementation detail <g>.

  Comments, flames anyone?


2.  Important daemons not running during upgrade.

  Syslogd was stopped early in the process.  What made this a 
  problem is that it was not restarted immediately.  
  
  Image me sitting in agony about this, while watching packages 
  such as emacs, netscape and other non-essentials to the system 
  unpack, a fair part of the 130 MB upgrade in all.  
  Even worse, some packages interrupted the unpacking process, 
  asking me to hit return on some upgrade notice.  

  All that time, I had no syslog daemon running and lost all messages
  sent to the system logging facility.  Meanwhile, newly upgraded 
  versions of daemons were started - in such circumstances, it is 
  IMHO paramount to have syslogd working correctly.

  I'm not sure if this is a sysklogd problem or an apt problem.
  IIRC apt tries to be very careful about stopping and starting
  daemons during an upgrade, but it seems not to apply this to
  syslogd. 

  Exim broke temporarily, causing a bounced message.  I'm not 
  complaining too loudly about that, since some of the damage was
  my own fault.  Still, some of the exim configuration file syntax 
  has changed quite a bit and as a result, exim complained about
  invalid configuration every time I tried to send mail during the 
  update.  
  
  Oh well, it works now, so I'm not terribly inclined to figure 
  out what happened, though I might if people think it's worth it.  

  In any case, I'd like to ask other testers to check for the 
  availability of their mail system _during_ the upgrade.


Again, the general quality of things is fairly impressive.  Lots
of improvement over hamm->slink.  It seems that particularly the 
bulk dependency handling is much better now, probably mostly thanks 
to the apt guys.

Kudos to everyone making this possible and, more important, happen.

Cheers,


Joost


[1] When I first tried Linux, having 16MB of RAM on a 386 was 
  quite a luxury.  Geez, people even installed Win95 on 4MB 
  machines, because that's what it says on the box.

[2] Or, how about from _distribution_ to _distribution_? 



Reply to: