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 -~----------~----~----~----~------~----~------~--~---