Ross McKerchar
2009-May-01 15:22 UTC
[Puppet Users] Cant get puppet to remove rpm''s with circular dependencies
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. --~--~---------~--~----~------------~-------~--~----~ 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+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~----------~----~----~----~------~----~------~--~---
Jason Rojas
2009-May-01 15:36 UTC
[Puppet Users] Re: Cant get puppet to remove rpm''s with circular dependencies
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. > > > >--~--~---------~--~----~------------~-------~--~----~ 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+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~----------~----~----~----~------~----~------~--~---
Jim Pirzyk
2009-May-01 17:27 UTC
[Puppet Users] Re: Cant get puppet to remove rpm''s with circular dependencies
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. >> >>> >> > > > --~--~---------~--~----~------------~-------~--~----~ > 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 > +unsubscribe@googlegroups.com > For more options, visit this group at http://groups.google.com/ > group/puppet-users?hl=en > -~----------~----~----~----~------~----~------~--~------ @(#) $Id: dot.signature,v 1.15 2007/12/27 15:06:13 pirzyk Exp $ __o jim@pirzyk.org ------------------------------------------- _''\<,_ (*)/ (*) I''d rather be out biking. --- @(#) $Id: dot.signature,v 1.15 2007/12/27 15:06:13 pirzyk Exp $ __o jim@pirzyk.org ------------------------------------------- _''\<,_ (*)/ (*) I''d rather be out biking.
Brandon Evans
2009-May-01 18:14 UTC
[Puppet Users] Re: Cant get puppet to remove rpm''s with circular dependencies
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 jim@pirzyk.org ------------------------------------------- > _''\<,_ > (*)/ (*) I''d rather be out biking. > > > > --- @(#) $Id: dot.signature,v 1.15 2007/12/27 15:06:13 pirzyk Exp $ > __o jim@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+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~----------~----~----~----~------~----~------~--~---