I'm not sure broken is the right word.  The Package type needs a way to 
supply options to the underlying provider.

I ran into a similar issue with yum when I needed to install an RPM from 
a particular repo (yum --disablerepo=* --enablerepo=rpmforge)

Or install a package from a repo that is disabled by default (yum 
--enablrerepo=rpmforge)
I ended up reluctantly creating custom Exec's for both scenarios.

There is a feature request ticket open for the issue I mentioned

http://projects.reductivelabs.com/issues/915


-Brandon

Jim Pirzyk wrote:
> I see the same dependency problem with ypbind and yp-tools that come 
> with Fedora/RHEL/CentOS.
> 
> Changing to using an exec seems broken.  It prevents you from using the 
> builtin provider that puppet supplies.
> 
> - JimP
> 
> On May 1, 2009, at 11:36 AM, Jason Rojas wrote:
> 
>>
>> RPM circular dependencies have nothing to do with puppet.
>> I would rebuild the packages and fix the dependency issue, then the
>> problem would go away.
>>
>> If you are not comfortable with rebuilding the packages then my
>> suggestion would be use an exec for this specific case doing a rpm -e
>> --allmatches --nodeps --force package1 package2
>>
>> When you pass the package type an array of names, it iterates over
>> them instead of using the array values  like a glob.
>>
>> Again, not a puppet issue but a circular dependency issue.
>> -Jason
>>
>>
>> On May 1, 2009, at 8:22 AM, Ross McKerchar wrote:
>>
>>>
>>> Hi Guys,
>>>
>>> I'm trying to use puppet to remove some software on all our
>>> machines. The two rpm's I'm trying to remove are dependent on each
>>> other, that is rpm A requires rpm B and rpm B requires rpm A.
>>>
>>> The packages installed fine with puppet via yum (I just asked to
>>> install rpm A). Unfortunately puppet is calling "rpm -e", not "yum
>>> remove" to remove packages so just asking to remove rpm A causes a
>>> dependency error. I tried using "provider => yum" in the package
>>> definition but this was ignored.
>>>
>>> To get round this I specified both packages: "package { [rpmA,rpmB]:
>>> ensure => absent }". Unfortunately this doesn't work either. It
>>> appears puppet is running:
>>>
>>> for package in packages:
>>>        rpm -e package
>>>
>>> As opposed to:
>>>
>>> rpm -e " ".join(packages)
>>>
>>> (no prizes for guessing what language I am most familiar with :)
>>>
>>> Consequently I am unable to use puppet to remove this package. I
>>> cant easily resort to an exec statement as I am doing the following:
>>>
>>> class software{
>>>        package{ [a,b]: ensure => present }
>>> }
>>>
>>> class software::uninstall{
>>>        package{ [a,b]: ensure => absent }
>>> }
>>>
>>> As this allows me per-node control over the removal.
>>>
>>> I'm using puppet 0.24.8 on rhel5.3.
>>>
>>> Can I get round this, or should I file a bug report?
>>>
>>> -ross
>>>
>>>
>>>
>>>
>>> Sophos Plc, The Pentagon, Abingdon Science Park, Abingdon, OX14 3YP,
>>> United Kingdom.
>>> Company Reg No 2096520. VAT Reg No GB 348 3873 20.
>>>
>>>>
>>>
>>
>>
>> > 
> --- @(#) $Id: dot.signature,v 1.15 2007/12/27 15:06:13 pirzyk Exp $
>     __o  j...@pirzyk.org -------------------------------------------
>  _'\<,_
> (*)/ (*) I'd rather be out biking.
> 
> 
> 
> --- @(#) $Id: dot.signature,v 1.15 2007/12/27 15:06:13 pirzyk Exp $
>     __o  j...@pirzyk.org -------------------------------------------
>  _'\<,_
> (*)/ (*) I'd rather be out biking.
> 

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to