On 09/30/2014 06:16 PM, Bill Allombert wrote:
> On Tue, Sep 30, 2014 at 05:44:54PM +0200, [email protected] wrote:
>> Package: menu
>> Version: 2.1.47
>>
>> hello,
>>
>> when i invoke update-menu on a debian jessie system without the bash
>> shell being installed the following error is shown:
>>
>> # update-menus -d -v
>> sh: 1: exec: /bin/bash: not found
>> Unknown error, message=exec /bin/bash -o pipefail -c 'dpkg-query --show
>> --showformat="\${status} \${provides} \${package}\n" | sed -n -e
>> "/installed\|triggers-awaited\|triggers-pending
>> /{s/^.*\(installed\|triggers-awaited\|triggers-pending\) *//; s/[, ][,
>> ]*/\n/g; p}"'
>>
>>
>> when setting an alternative to the dash shell it results in this error:
>>
>> # update-menus -d -v
>> update-menus[22707]: Dpkg is not locking dpkg status area, good.
>> update-menus[22707]: Reading installed packages list...
>> /bin/bash: 0: Illegal option -o pipefail
>> Unknown error, message=exec /bin/bash -o pipefail -c 'dpkg-query --show
>> --showformat="\${status} \${provides} \${package}\n" | sed -n -e
>> "/installed\|triggers-awaited\|triggers-pending
>> /{s/^.*\(installed\|triggers-awaited\|triggers-pending\) *//; s/[, ][,
>> ]*/\n/g; p}"'
>>
>>
>> this is caused by an hardcoded dependency on the bash shell that is not
>> mentioned in the packages dependency list.
> 
> Hello Gabriel,
> 
> bash is marked 'Essential: yes' so according to Debian policy, packages 
> ust not add dependencies on bash.
> See policy 3.5:
> 
>      Packages are not required to declare any dependencies they have on
>      other packages which are marked `Essential' (see below), and should
>      not do so unless they depend on a particular version of that
>      package.[1]
> 
> And 10.4:
> 
>      If a shell script requires non-SUSv3 features from the shell
>      interpreter other than those listed above, the appropriate shell must
>      be specified in the first line of the script (e.g., `#!/bin/bash') and
>      the package must depend on the package providing the shell (unless the
>      shell package is marked "Essential", as in the case of `bash').
> 
> In this instance, bash is required because I do not know how to implement
> the equivalent of '-o pipefail' with a POSIX shell.
> 
> Cheers,
> 


Hi Bill,


thanks for pointing this out. I did not know how to ipmlement pipefail
in a POSIX conformal way either and searching on the internet didn't
give me any results of interest for this situation.

But in general I think it should be possible to circumvent the pipefail
here by storing the results of the dpkg query in some sort of structure
and process it with C++-style string routines.

I'm not sure whether I'll find the time to do the programming for that
but would you be interested at all?


Cheers,
Gabriel


-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Reply via email to