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]

