Brett,

You're welcome, hope it's useful to you, or someone.

By the way, it's funny how superfluous stuff can go unnoticed for a 
long time.  It looks like the 'rpmserver' argument passed to the 
wrapper script is unused, probably a relic from an earlier draft.

-Ed


[EMAIL PROTECTED] wrote:
> Dear Ed,
> 
> All I can say is:
> 
> THANKS!
> 
> I may hack it around a bit but if I do that I will post it back to the
> group.
> 
> Best Regards,
> 
> Brett
> 
> 
> -----Original Message-----
> From: Ed Brown [mailto:[EMAIL PROTECTED] 
> Sent: 14 July 2006 16:20
> To: Brett Delle Grazie
> Cc: help-cfengine@cfengine.org
> Subject: Re: Package installation of RPMs - Too many arguments in
> embeddedscript
> 
> Back before the 'packages:' action had an install option (~2 years ago),
> when it could only define classes, I wrote a simple[-minded?] perl
> wrapper that would parse the list of defined classes and hand off to
> yum.  I'm still using it because it's been stable, avoids limitations
> like this argument length limit, and offers us some additional features,
> like the ability to use team-private rpm repos, and to [forcibly] remove
> rpms.  FWIW, it's attached, and obviously YMMV, and, it could be much
> simplified if you have no need to refer to different repos (use at your
> own risk, disclaimer, disclaimer...) Here's how it might be used:
> 
> packages:
> # Define classes to be interpreted by called function, yw5.
> # Prefix these rpm-related classes with 'needs_'
> # Use 'needs_<rpmname>' to install from common yum repository # Use
> 'needs_NOT_<rpmname>' to remove an rpm (always handled first) # Use
> 'needs_<teamname>_<rpmname>' to specify a team specific yum repository #
> Because cfengine class names can't contain some characters, use these
> substitutions:
> #   hyphen in rpmname should be '__' in class name
> #   period in rpmname should be '___' in classname
> #   '++' in rpmname should be '____' in classname
> 
>   any::
>     krb5-libs           elsedefine=needs_krb5__libs
>     netdiag             elsedefine=needs_netdiag
>     ntp                 elsedefine=needs_ntp
> 
> shellcommands:
>    rpm::   #(shellcommands.rpm is early in actionsequence)
>       "/var/cfengine/modules/yw5 $(AllClasses) $(rpmserver)" 
> inform=false ifelapsed=0
> 
> 
> -Ed
> 
> 
> [EMAIL PROTECTED] wrote:
>> Dear Mark,
>>
>> It's not a question of how big - someone will always exceed the limit 
>> :) It's the technique employed.  I appreciate you are trying to reuse 
>> secure code by enforcing an arbitrary limit on popen calls but the 
>> list itself is internally constructed and therefore should be 
>> considered secure, _possibly_ bypassing this restriction.  I know that
> 
>> buffer overruns are a serious problem in secure software and hence I 
>> understand why this limit is in place.
>>
>> I'll probably get around it by dumping an iterated list to a temporary
> 
>> file that is constructed on the fly and parsing that to a yum/RPM 
>> command.  Convoluted but it's questionable whether I should be using 
>> cfengine for this task anyway.
>> Another option is to use package groups instead but that requires 
>> changes in my yum/yam repository.
>>
>> I could easily get around it by recompiling with a 'large enough'
>> CF_MAXARGUMENTS
>> but that would likely have other implications (memory and stack usage 
>> primarily).
>> So I would prefer not to do that unless absolutely necessary.
>>
>> I was hoping that someone had come across this before but obviously
> not.
>> I'll keep you posted.
>>
>> Thanks for your help.
>>
>> Best Regards,
>>
>> Brett
>>
>> -----Original Message-----
>> From: Mark Burgess [mailto:[EMAIL PROTECTED]
>> Sent: 14 July 2006 11:58
>> To: Brett Delle Grazie
>> Cc: help-cfengine@cfengine.org
>> Subject: Re: Package installation of RPMs - Too many arguments in 
>> embedded script
>>
>> [EMAIL PROTECTED] wrote:
>>> Dear Steve,
>>>
>>> Thanks for that.  It does appear that it's cfengine imposing the 
>>> limit
>>> way before it gets anywhere near yum. Looking at the source the issue
> 
>>> is in popen.c where it imposes the limit of CF_MAXSHELLARGS (which is
> 
>>> set to 30).  I can see why this is done (to limit memory/stack usage)
> 
>>> but it does break the package
>>>
>>> mechanism rather thoroughly.
>>>
>>> Best Regards,
>>>
>>> Brett
>>>
>>> -----Original Message-----
>>> From: Steve Kemp [mailto:[EMAIL PROTECTED]
>>> Sent: 14 July 2006 11:18
>>> To: Brett Delle Grazie
>>> Cc: help-cfengine@cfengine.org
>>> Subject: Re: Package installation of RPMs - Too many arguments in 
>>> embedded script
>>>
>>> On Fri, Jul 14, 2006 at 10:56:40AM +0100, 
>>> [EMAIL PROTECTED] wrote:
>>>
>>>>    I'm using Yum so my rpm install command is:
>>>>     
>>>>    RPMInstallCommand = ( "/usr/bin/yum -y install %s" )
>>>>     
>>>>    However I'm getting the messages (in verbose mode):
>>>>    ... long list of packages ...
>>>>    package install: cfengine:build-test: Too many arguments in
>>> embedded
>>>>    script
>>>>    Does anyone have a work around for this already (i.e. probably
>>> using
>>>>    shellcommands)?
>>>   Perhaps something like:
>>>
>>>     /bin/echo %s | xargs --max-args 20 /usr/bin/yum -y install \{\} 
>>> \;
>>>
>>>   That would split up the package installation to only attempt 20 at 
>>> a time.  Of course then you might have dependency problems if the 
>>> first 20 packages depend on something to be installed in the next  20
>> ..
>>> Steve
>>
>> How big do you think this arg list should be to help you out?
>>
>> --
>> Mark Burgess
>>
>> Professor of Network and System Administration Oslo University College
>>
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> Work: +47 22453272            Email:  [EMAIL PROTECTED]
>> Fax : +47 22453205            WWW  :  http://www.iu.hio.no/~mark
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>
>> ______________________________________________________________________
>> This email has been scanned by the MessageLabs Email Security System.
>> For more information please visit http://www.messagelabs.com/email 
>> ______________________________________________________________________
>>
>> ______________________________________________________________________
>> This email has been scanned by the MessageLabs Email Security System.
>> For more information please visit http://www.messagelabs.com/email 
>> ______________________________________________________________________
>>
>> _______________________________________________
>> Help-cfengine mailing list
>> Help-cfengine@cfengine.org
>> http://cfengine.org/mailman/listinfo/help-cfengine
> 
_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
http://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to