<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jul 28, 2020 at 2:44 AM Ulrich Windl <<a href="mailto:Ulrich.Windl@rz.uni-regensburg.de">Ulrich.Windl@rz.uni-regensburg.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">>>> Reid Wahl <<a href="mailto:nwahl@redhat.com" target="_blank">nwahl@redhat.com</a>> schrieb am 28.07.2020 um 10:21 in Nachricht<br>
<<a href="mailto:CAPiuu9-QY1tE_nat_HouCCAvDYm1rWXRGS6%2BhjcuTmgM4ggnFw@mail.gmail.com" target="_blank">CAPiuu9-QY1tE_nat_HouCCAvDYm1rWXRGS6+hjcuTmgM4ggnFw@mail.gmail.com</a>>:<br>
> On Tuesday, July 28, 2020, Ulrich Windl <<a href="mailto:Ulrich.Windl@rz.uni-regensburg.de" target="_blank">Ulrich.Windl@rz.uni-regensburg.de</a>><br>
> wrote:<br>
>>>>> Gabriele Bulfon <<a href="mailto:gbulfon@sonicle.com" target="_blank">gbulfon@sonicle.com</a>> schrieb am 28.07.2020 um 09:35 in<br>
>> Nachricht <1046247888.11369.1595921749049@www>:<br>
>>> Thanks, I patched all the scripts in build to have "#!/bin/bash" in<br>
> head, and<br>
>>> I receive no errors now.<br>
>><br>
>> If it's needed, those scripts were buggy anyway.<br>
> <br>
> How does that mean the script is buggy? It would depend on what /bin/sh is<br>
> linked to on a particular system.<br>
<br>
/bin/sh may be a minimal Bourne-compatible shell. Assuming that it is bash-compatible is a bad idea.<br>
And: Is it really a problem to require bash? I mean there are scripts that require csh (yuk!)<br></blockquote><div><br></div><div>Some resource agents do require bash (e.g., sybaseASE).</div><div><br></div><div>Re: csh -- there are? Gross ;)<br></div><div><br></div><div>Resource agents that have been around a while typically specify /bin/sh, and it's considered a regression to introduce new non-portable syntax. Syntax that was never 100% portable in the first place is a somewhat different matter. Ideally it would have been totally portable in the first place, though in practice, it apparently hasn't been. The main constraint going forward is not to make it LESS portable.<br></div><div><br></div><div>"It is considered a regression to introduce a patch that will make a
previously sh compatible resource agent suitable only for bash,
ksh, or any other non-generic shell. It is, however, perfectly
acceptable for a new resource agent to explicitly define a specific
shell, such as /bin/bash, as its interpreter."</div><div>  - <a href="https://github.com/ClusterLabs/resource-agents/blob/master/doc/dev-guides/ra-dev-guide.asc">https://github.com/ClusterLabs/resource-agents/blob/master/doc/dev-guides/ra-dev-guide.asc</a></div><div><br></div><div>I discussed a little bit with one of the devs, who said the sh portability testing has mostly been with dash on Debian. (BTW, by default, `checkbashisms` allows things that aren't POSIX but that are specified by Debian Policy.)<br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
> <br>
>>There is a "checkbashisms" program (in SLES at least) that can check<br>
> whether a shell script actually needs BASH (or compatible)...<br>
> <br>
> That's available for RHEL too. The question is whether it's worth modifying<br>
> libraries that are core to resource-agents, essentially for compatibility<br>
> with vanilla ksh. The conservative answer is no, although there is a case<br>
<br>
I never used ksh, but AFAIR the only advantage of ksh was vi-compatible command-line edition (which bash can do at least as good).<br>
Is there any good reason to require ksh for scripts?<br></blockquote><div><br></div><div>I doubt it. But the only place we require ksh is for one `su` command in the sybaseASE agent. To make sure we're on the same page: this wasn't a case of the RA specifying ksh, but rather of Gabriele's default shell being ksh and resolving sh to ksh.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> to be made in favor of the change. The local keyword has been there for<br>
> years. A lot of shells besides bash support the local keyword, and even if<br>
> ksh is the default shell on a user's system, they can likely use a<br>
> different one if needed, as Gabriele has done.<br>
>><br>
>>> Though, the IP is not configured :( I'm looking at it...<br>
>>> Is there any easy way to debug what's doing on the IP script?<br>
>>><br>
>>> Gabriele<br>
>>><br>
>>><br>
>>> Sonicle S.r.l.<br>
>>> :<br>
>>> <a href="http://www.sonicle.com" rel="noreferrer" target="_blank">http://www.sonicle.com</a> <br>
>>> Music:<br>
>>> <a href="http://www.gabrielebulfon.com" rel="noreferrer" target="_blank">http://www.gabrielebulfon.com</a> <br>
>>> Quantum Mechanics :<br>
>>> <a href="http://www.cdbaby.com/cd/gabrielebulfon" rel="noreferrer" target="_blank">http://www.cdbaby.com/cd/gabrielebulfon</a> <br>
>>><br>
> ----------------------------------------------------------------------------<br>
>>> ------<br>
>>> Da: Ulrich Windl<br>
>>> A: <a href="mailto:users@clusterlabs.org" target="_blank">users@clusterlabs.org</a> <br>
>>> Data: 28 luglio 2020 9.12.41 CEST<br>
>>> Oggetto: [ClusterLabs] Antw: [EXT] Re: ip address configuration problem<br>
>>> You could try replacing "local" with "typeset", also.<br>
>>> Reid Wahl<br>
>>> schrieb am 28.07.2020 um 09:05 in Nachricht<br>
>>> :<br>
>>> By the way, it doesn't necessarily have to be bash. Upon looking<br>
> further, a<br>
>>> lot of shells support the `local` keyword, even though it's not required<br>
> by<br>
>>> the POSIX standard. Plain ksh, however, does not :(<br>
>>> On Monday, July 27, 2020, Reid Wahl<br>
>>> wrote:<br>
>>> Hi, Gabriele. The `local` keyword is a bash built-in and not available in<br>
>>> some other shells (e.g., ksh). It's used in `have_binary()`, so it's<br>
>>> causing `check_binary(/usr/gnu/bin/awk)` to fail. It's also causing all<br>
> the<br>
>>> "local: not found" errors. I just reproduced it to make sure.<br>
>>> check_binary () {<br>
>>> if ! have_binary "$1"; then<br>
>>> if [ "$OCF_NOT_RUNNING" = 7 ]; then<br>
>>> # Chances are we have a fully setup OCF environment<br>
>>> ocf_exit_reason "Setup problem: couldn't find command: $1"<br>
>>> else<br>
>>> echo "Setup problem: couldn't find command: $1"<br>
>>> fi<br>
>>> exit $OCF_ERR_INSTALLED<br>
>>> fi<br>
>>> }<br>
>>> have_binary () {<br>
>>> if [ "$OCF_TESTER_FAIL_HAVE_BINARY" = "1" ]; then<br>
>>> false<br>
>>> else<br>
>>> local bin=`echo $1 | sed -e 's/ -.*//'`<br>
>>> test -x "`which $bin 2/dev/null`"<br>
>>> fi<br>
>>> }<br>
>>> Is bash available on your system?<br>
>>> On Mon, Jul 27, 2020 at 8:34 AM Gabriele Bulfon<br>
>>> wrote:<br>
>>> Hello,<br>
>>> after configuring crm for IP automatic configuration, I stumbled upon a<br>
>>> problem with the IPaddr utiliy that I don't understand:<br>
>>> IPaddr(xstha2_san0_IP)[10439]: 2020/07/27_17:26:17 ERROR: Setup problem:<br>
>>> couldn't find command: /usr/gnu/bin/awk<br>
>>> Jul 27 17:26:17 [10258] lrmd: notice: operation_finished:<br>
>>> xstha2_san0_IP_start_0:10439:stderr [<br>
>>> /usr/lib/ocf/resource.d/heartbeat/IPaddr[71]: local: not found [No such<br>
>>> file or directory] ]<br>
>>> Jul 27 17:26:17 [10258] lrmd: notice: operation_finished:<br>
>>> xstha2_san0_IP_start_0:10439:stderr [<br>
>>> /usr/lib/ocf/resource.d/heartbeat/IPaddr[354]: local: not found [No such<br>
>>> file or directory] ]<br>
>>> Jul 27 17:26:17 [10258] lrmd: notice: operation_finished:<br>
>>> xstha2_san0_IP_start_0:10439:stderr [<br>
>>> /usr/lib/ocf/resource.d/heartbeat/IPaddr[355]: local: not found [No such<br>
>>> file or directory] ]<br>
>>> Jul 27 17:26:17 [10258] lrmd: notice: operation_finished:<br>
>>> xstha2_san0_IP_start_0:10439:stderr [<br>
>>> /usr/lib/ocf/resource.d/heartbeat/IPaddr[356]: local: not found [No such<br>
>>> file or directory] ]<br>
>>> Jul 27 17:26:17 [10258] lrmd: notice: operation_finished:<br>
>>> xstha2_san0_IP_start_0:10439:stderr [ ocf-exit-reason:Setup problem:<br>
>>> couldn't find command: /usr/gnu/bin/awk ]<br>
>>> Jul 27 17:26:17 [10258] lrmd: notice: operation_finished:<br>
>>> xstha2_san0_IP_start_0:10439:stderr [<br>
>>> /usr/lib/ocf/resource.d/heartbeat/IPaddr[185]: local: not found [No such<br>
>>> file or directory] ]<br>
>>> Jul 27 17:26:17 [10258] lrmd: notice: operation_finished:<br>
>>> xstha2_san0_IP_start_0:10439:stderr [<br>
>>> /usr/lib/ocf/resource.d/heartbeat/IPaddr[186]: local: not found [No such<br>
>>> file or directory] ]<br>
>>> Jul 27 17:26:17 [10258] lrmd: info: log_finished: finished -<br>
>>> rsc:xstha2_san0_IP action:start call_id:22 pid:10439 exit-code:5<br>
>>> exec-time:91ms queue-time:0ms<br>
>>> It says it cannot find /usr/gnu/bin/awk but this is absolutely not true!<br>
>>> sonicle@xstorage1:/sonicle/home# ls -l /usr/gnu/bin/awk<br>
>>> -r-xr-xr-x 1 root bin 881864 Jun 1 12:25 /usr/gnu/bin/awk<br>
>>> sonicle@xstorage1:/sonicle/home# file /usr/gnu/bin/awk<br>
>>> /usr/gnu/bin/awk: ELF 64-bit LSB executable AMD64 Version 1, dynamically<br>
>>> linked, not stripped, no debugging information available<br>
>>> what may be happening??<br>
>>> Thanks!<br>
>>> Gabriele<br>
>>> Sonicle S.r.l. : <a href="http://www.sonicle.com" rel="noreferrer" target="_blank">http://www.sonicle.com</a> <br>
>>> Music: <a href="http://www.gabrielebulfon.com" rel="noreferrer" target="_blank">http://www.gabrielebulfon.com</a> <br>
>>> Quantum Mechanics : <a href="http://www.cdbaby.com/cd/gabrielebulfon" rel="noreferrer" target="_blank">http://www.cdbaby.com/cd/gabrielebulfon</a> <br>
>>> _______________________________________________<br>
>>> Manage your subscription:<br>
>>> <a href="https://lists.clusterlabs.org/mailman/listinfo/users" rel="noreferrer" target="_blank">https://lists.clusterlabs.org/mailman/listinfo/users</a> <br>
>>> ClusterLabs home: <a href="https://www.clusterlabs.org/" rel="noreferrer" target="_blank">https://www.clusterlabs.org/</a> <br>
>>> --<br>
>>> Regards,<br>
>>> Reid Wahl, RHCA<br>
>>> Software Maintenance Engineer, Red Hat<br>
>>> CEE - Platform Support Delivery - ClusterHA<br>
>>> --<br>
>>> Regards,<br>
>>> Reid Wahl, RHCA<br>
>>> Software Maintenance Engineer, Red Hat<br>
>>> CEE - Platform Support Delivery - ClusterHA<br>
>>> _______________________________________________<br>
>>> Manage your subscription:<br>
>>> <a href="https://lists.clusterlabs.org/mailman/listinfo/users" rel="noreferrer" target="_blank">https://lists.clusterlabs.org/mailman/listinfo/users</a> <br>
>>> ClusterLabs home: <a href="https://www.clusterlabs.org/" rel="noreferrer" target="_blank">https://www.clusterlabs.org/</a> <br>
>><br>
>><br>
>><br>
>> _______________________________________________<br>
>> Manage your subscription:<br>
>> <a href="https://lists.clusterlabs.org/mailman/listinfo/users" rel="noreferrer" target="_blank">https://lists.clusterlabs.org/mailman/listinfo/users</a> <br>
>><br>
>> ClusterLabs home: <a href="https://www.clusterlabs.org/" rel="noreferrer" target="_blank">https://www.clusterlabs.org/</a> <br>
>><br>
>><br>
> <br>
> -- <br>
> Regards,<br>
> <br>
> Reid Wahl, RHCA<br>
> Software Maintenance Engineer, Red Hat<br>
> CEE - Platform Support Delivery - ClusterHA<br>
<br>
<br>
<br>
_______________________________________________<br>
Manage your subscription:<br>
<a href="https://lists.clusterlabs.org/mailman/listinfo/users" rel="noreferrer" target="_blank">https://lists.clusterlabs.org/mailman/listinfo/users</a><br>
<br>
ClusterLabs home: <a href="https://www.clusterlabs.org/" rel="noreferrer" target="_blank">https://www.clusterlabs.org/</a><br>
<br>
</blockquote></div><br clear="all"><br>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div>Regards,<br><br></div>Reid Wahl, RHCA<br></div><div>Software Maintenance Engineer, Red Hat<br></div>CEE - Platform Support Delivery - ClusterHA</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>