[Yum] history, tagged installations, and downgrade

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

 



I'm not sure if I have the capacity to explain where I see the problems
with this.  It boils down to a problem with the way modern packaging
systems work.  I firmly believe that this is not something that could be
reasonably accomplished within the frame work of RPM.  I can't speak as
confidently about other packaging systems, but I've not seen one yet
that does a downgrade well.

In order to make something like this work, you will need to rethink they
way packaging works.  The way configuration files are stored, the way
dependencies work, the way obsoletes work, etc.  RPM  packaging, as I
see it, is tuned toward very specific tasks, installing software that
doesn't exist, and upgrading software that does.  Even the latter is
more an extension on the former.  

Yum is a layer too high to solve this problem.  Or at least too high of
a layer to start.  Probably would be more useful to build another tool
that would handle that, *after* the packaging mechanism itself was built
to deal with that.  Do remember that yum relies on RPM to do a bulk of
the actual package related functions, yum is just sort of a transport. 
(A brilliant transport, mind you ;) ).

In just the case of configuration files, you run into a problem. 
Presumably for this, you'd have to have some sort of version control
system, that links the file to a given package version.  Then you run
into a problem with the rest of the package.   The way things work
currently, we essentially have access to two versions of a package for
any given release.  The shipping version, and the current errata
release.  Keeping track of and providing for the distribution of the
intermediate packages introduces a big problem.  To be safe, you really
need to store the package locally, because you won't really be able to
rely on your repository to hold onto all version of a package.  Or if
you can, then you introduce a lot of pain and expense on your package
maintainer.  Of course, you could just store the diffs locally, so that
could help with some of the problems.  But then you run into a lot of
complicated calculations when doing rollbacks.  Even if you are going
back to just the previous RPM.

I don't even want to get into the insanity of major system components. 
Thinking about a package that might introduce a moderate chain of
dependencies makes my eyes start to bleed.

Really though, I think that when considering this problem, the problem
of downgrading, we have to look at what we are trying to solve, and what
problems the tools we currently have are trying to solve.  

These tools, rpm and yum, are designed to ease the mass distribution of
software.  As a sysadmin, my point of view is that the cases where I
need to downgrade are going to be more one off, more isolated cases. 
The effort required to solve this problem is simply not worth it, in my
mind.  The way I will solve these problems of needing to downgrade is by
testing first, removing and re-installing when I have to downgrade, fix
the problems with a previous upgraded package and issue another upgrade,
or rebuild a system in the case that it is totally screwed.

For the places where I'm inclined not to care, like my workstation at
home, my laptop, and my beater machine at work (where I do stupid things
deliberately), I'm willing to break the system and do weird things to
fix problems.  For the systems I consider important, I do not trust the
current design of RPM packaging to use even another tool to do the
downgrade.  

My summary is that this problem really needs to be solved by a radically
different tact.  Either by methods involving a lot of people
interactions (uninstalling/reinstalling packages, or re-installing
systems) or by building a new packaging system designed to allow for
downgrading (even if new == a new version of RPM.)  There's a *lot* of
thinking that needs to be done in that case.

--Chris



On Sat, 2003-11-22 at 08:31, Robert G. Brown wrote:
> This is just to add a couple of related feature suggestions for the
> future.  Recent discussion has indicated that a "downgrade" feature
> would be very useful.  I would go further and say that to optimally
> support development efforts in e.g. fedora and elsewhere in our Brave
> New World as well as to permit systems to be kept optimally stable, both
> version freeze and free upward/downward mobility in version are
> highly desireable.  To support these in turn, I'd suggest the
> possibility of yum being given a complete CVS-like history mechanism.
> In fact, given that yum's philosophy is to work on top of existing
> tools, it wouldn't be totally crazy for yum to implement a CVS layer to
> manage the history mechanism.  This could be done with a secondary
> tool or a simple command line option, on any desired granularity (e.g.
> run once a day in the nightly cron).
> 
> The way I envision it working is to dump the full package list (fully
> expanded, not compressed by groups) into e.g. /var/cache/yum/rpmlist
> that is kept under CVS control.  The file is rebuilt whenever yum is
> appropriately invoked and automagically overnight, with a CVS commit
> that will of course do nothing if nothing has changed (the usual case).
> IF yum could then be asked to install specific RPMs by revision number
> or better yet to downgrade to specific SETS of RPMs by CVS tag and IF
> repositories were managed by simply adding updates and never removing
> the old RPMs as they are superceded, one could actually do the
> following:
> 
>   a) Install RPM A and all its dependencies as part of a basic system
> install.  Tag resulting full install as "stable_1" a week or four later
> as it turns out to be stable and happy.
>   b) Install RPM A' ditto, with all sorts of changes occuring
>   c) Discover that a horrible bug in dependency ten of RPM A' breaks RPM
> C, which your life relies on functioning perfectly while you didn't
> really give a rat's ass about A->A'.
>   d) No worries, just yum downgrade stable_1.  Lickety-zip, five minutes
> later A' and all its ratsnest of dependency changes is gone, and you
> didn't have to rebuild the A source RPM and a dozen others and
> artificially boost revision numbers to get there.
> 
> Obviously I think that this would be a great boon to development sites
> e.g. the Mozilla site.  One reason everybody is fairly cautious about
> upgrading is the likelihood of something breaking and the PITA of
> backing off if it does.  Yum could utterly and forever remove this as a
> PITA and indeed make it easy.  (The ability to lock clients to tagged
> full revision sets would incidentally be of great benefit to e.g. banks
> and hospitals as well, as they often have to undergo a federally
> mandated process of testing and approval to change ANYTHING in their
> underlying systems).
> 
>    rgb


[Index of Archives]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]

  Powered by Linux