YUM with elementary meta-data versioning (revision, time, tag) -- WAS: YUM v. APT v. SmartPM

Bryan J. Smith b.j.smith at ieee.org
Mon Aug 6 12:56:36 UTC 2007


On Mon, 2007-08-06 at 07:30 -0400, Bryan J. Smith wrote:
> I think YUM's speed is over-demonized.  At most, I wish there was an
> option to discretely decide when to sync with the repositories, like
> in Apt.  And there are other considerations too.

Okay, let's switch gears _away_ from the "home consumer" aspects and
start looking at Fedora's _real_ value at enterprises.  Like it or not,
Fedora is the staple of not only RHEL, but it's core technologies are
what enterprises deploy.

- What enterprises would like out of YUM (at least my experience)

Expanding on the "discrete" comment, I once implemented a simple set of
Bash scripts to maintain elementary versioning in YUM repositories.  I
did it because I wanted to get away from using separate repositories.
At the same time, it was backward compatible with normal usage.  My
Bash-based hack wasn't integrated with the YUM client itself, but there
is no reason it can't be.

- Ultra-simple ECM in the repository ...

>From Fedora's standpoint, keeping updates, updates-testing, development,
etc... in separate repositories makes sense.  But in an enterprise, it
just does not.  I want to have my enterprise configuration management
(ECM) in the same "release" repository.  I want to be able to go back to
any state of the repository by ...
 - Revision (incremented each time the meta-data is re-created)
 - Time (merely uses the latest revision available at that time)
 - Tag (label on a revision for easier usage)

This can be done 100% with the meta-data and is rather simple (with one
YUM-RPM caveat, see below).  You simply have multiple meta-data files
with a revision appended -- e.g., ".(rev)", as well as a single file
with a list of all tags, e.g., ".tags".  Or, to be even more advanced,
you can leverage RCS by having a single ",v" file -- which stores all
revisions as well as tags.  For backward compatibility, the latest is
always the normal meta-data filename(s) of the repository -- in the case
of a RCS ",v" meta-data file, it would be the "checked-out" version.

- What this buys enterprises?

I can now mix my "testing" of new package roll-outs (possibly under
integration and/or regression test) with my "early adopters" as well as
the "default, lateset release."  I also may have different departments
or projects on different "releases" and those could also be tagged,
without having to build symlinks/hard link scripts, among other things.

But most importantly, this is _not_ a difficult hack.  I'm not talking
about advanced configuration management, I'm talking about ...

 o Maintaining a history of meta-data revisions in the repo tools
   (either individual files or a RCS ",v" file)

 o Maintaining a set of tags to those revision files in the repo tools
   (again, either a tag index file or its in the RCS ",v" file)

 o Having YUM clients being able to fetch by revision, date or tag
   (revision is easy, date resolution to revision is easy,
    and tag is easy)

And for backward compatibility with older, "pre-ECM YUM", the repo tools
throw out the standard meta-data file(s).

- The one YUM-RPM caveat / limitation

Now the one limitation is that you can't get "clean reverts" and people
would need to be aware of that.  I.e., if you're system is already at
revision 49, YUM-RPM is not going to be able to take you back to
revision 47 automagically, you can only go forward -- at least
"cleanly."  Otherwise would require heavy modification to YUM-RPM, at
least from what I've seen.  I'm not advocating that effort (although it
would be nice in the future -- and one reason I like Smart's, although
limited, features here), so I'm not looking for anyone to bother.

I'm only talking about offering updates by repository ...  
 - Revision
 - Time
 - Tag

Based updates, of at least the current revision or later of the system.
If someone is at revision 49 and they try to update to revision 47, or a
date or tag that is before revision 49, then it doesn't allow that.  I
don't like maintaining separate repositories for the same set of ECM
releases, often in the flow of "integration/regression" testing, "early
adopter/tester" and "main release" -- as well as being able to setup an
older state of the package repository that was a "known, good quality."



-- 
Bryan J. Smith         Professional, Technical Annoyance
mailto:b.j.smith at ieee.org   http://thebs413.blogspot.com
--------------------------------------------------------
        Fission Power:  An Inconvenient Solution





More information about the marketing mailing list