help-cfengine
[Top][All Lists]
Advanced

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

Re: method to check for package installation


From: Chip Seraphine
Subject: Re: method to check for package installation
Date: Wed, 28 Apr 2004 13:14:26 -0500
User-agent: KMail/1.5.4

I do something similar (and posted about it on the Faq-o-matic, if you can 
decipher my broken linefeeds).  The wrinkle is that the RPM often has 
non-class-friendly characters in it (dots, dashes, and plusses in 
particular).  This led me to map the packagenames to classnames that have all 
the illegals converted to underscores. 

The problem then becomes unconverting it.  It's easy to see that libsigc++ 
becomes libsigc__, but the reverse is not at all clear :-)   My solution was 
to create an http-accessible directory on my RPM server that has symbolic 
links to the appropriate versions of  all the various packages by their 
'converted' name.  My perlscript then simply does:

rpm <options> -U http://kickstart/path/to/rpmlinkdir/libsigc__

...and we're good.  This arrangement is also useful because "rpmlinkdir"  
gives me one nice place to get all RPMs, so I don't have to remember if it is 
actually in contrib/ or RPM2/ or i686/ or whatever.

If anybody is interested, I'll tidy up the scripts and post 'em.

On Wednesday 28 April 2004 10:43, Ed Brown wrote:
> Instead of a long list of conditional shellcommands, we pass the
> ALLCLASSES variable to a short perl script.  The classes we define if an
> rpm isn't installed begin with 'needs_', the rpm names that follow are
> gathered and passed to yum.  It's working well, but should, and will be
> soon, rewritten as a module.
> 
> -Ed
> 
> 
> 
> On Wed, 2004-04-28 at 08:53, Graham Allan wrote:
> > On Wed, Apr 28, 2004 at 11:23:06AM +1000, Tim Nelson wrote:
> > > On Tue, 27 Apr 2004, Graham Allan wrote:
> > > 
> > > > I'm trying to write a method file to check if a particular RPM package
> > > > is installed, and if not, install it.
> > > 
> > >   Is there some particular reason you aren't using RPM's built-in 
> > > functionality?  rpm -i and rpm -U both do this.  
> > 
> > Mainly because we use yum to perform the actual installations (rpm by
> > itself doesn't handle dependencies well enough).
> > 
> > So the desired sequesnce is to determine if a package is installed, and
> > if not, run "yum -y install packagename".
> > 
> > This has been working for a while with hard-coded lists of package
> > names, but aesthetically, it's not so great - the script has one long
> > list of class definitions to test for packages, then another long list
> > of conditional shellcommands. The test and the action are too widely
> > separated for good readability.
> > 
> > The idea was to try and move the test/shellcommand into a method so the
> > main script can simply have a list of one-line "test and install"
> > method calls.
> > 
> > G.
> 
> 
> 
> _______________________________________________
> Help-cfengine mailing list
> address@hidden
> http://mail.gnu.org/mailman/listinfo/help-cfengine
> 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]