2021-09-20 16:50:01

by Petr Vorel

[permalink] [raw]
Subject: [PATCH 1/1] install-dep: Use command -v instead of which

`command -v' is shell builtin required by POSIX [1] and supported on all
common shells (bash, zsh, dash, busybox sh, mksh). `which' utility is not
presented on some containers (e.g. Fedora, openSUSE), also going to be
removed from future Debian versions.

Also remove stderr redirection to /dev/null as it's unnecessary when
using 'command': POSIX says "no output shall be written" if the command
isn't found.

[1] https://pubs.opengroup.org/onlinepubs/9699919799/utilities/command.html
[2] https://salsa.debian.org/debian/debianutils/-/commit/3a8dd10b4502f7bae8fc6973c13ce23fc9da7efb

Signed-off-by: Petr Vorel <[email protected]>
---
install-dep | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/install-dep b/install-dep
index 621618fe..4698d44a 100755
--- a/install-dep
+++ b/install-dep
@@ -2,20 +2,20 @@
#install dependencies for compiling from source code

#RHEL/Fedora/CentOS-Stream/Rocky
-which dnf &>/dev/null || which yum &>/dev/null && {
+command -v dnf >/dev/null || command -v yum >/dev/null && {
yum install -y automake libtool make gcc rpcgen libtirpc-devel libevent-devel sqlite-devel device-mapper-devel \
libblkid-devel krb5-devel libuuid-devel
}

#Debian/ubuntu
-which apt &>/dev/null && {
+command -v apt >/dev/null && {
apt install -o APT::Install-Suggests=0 -o APT::Install-Recommends=0 --ignore-missing -y \
autotools-dev automake make libtool pkg-config libtirpc-dev libevent-dev libsqlite3-dev \
libdevmapper-dev libblkid-dev libkrb5-dev libkeyutils-dev uuid-dev
}

#openSUSE Leap
-which zypper &>/dev/null && {
+command -v zypper >/dev/null && {
zypper in --no-recommends -y automake libtool make gcc rpcgen libtirpc-devel libevent-devel sqlite-devel \
device-mapper-devel libblkid-devel krb5-devel libuuid-devel
}
--
2.33.0


2021-09-20 16:50:18

by Petr Vorel

[permalink] [raw]
Subject: Re: [PATCH 1/1] install-dep: Use command -v instead of which

> `command -v' is shell builtin required by POSIX [1] and supported on all
> common shells (bash, zsh, dash, busybox sh, mksh). `which' utility is not
> presented on some containers (e.g. Fedora, openSUSE), also going to be
> removed from future Debian versions.

> Also remove stderr redirection to /dev/null as it's unnecessary when
> using 'command': POSIX says "no output shall be written" if the command
> isn't found.
nit: [2] missing at the end of this paragraph.

Kind regards,
Petr

> [1] https://pubs.opengroup.org/onlinepubs/9699919799/utilities/command.html
> [2] https://salsa.debian.org/debian/debianutils/-/commit/3a8dd10b4502f7bae8fc6973c13ce23fc9da7efb

> Signed-off-by: Petr Vorel <[email protected]>
> ---
> install-dep | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)

> diff --git a/install-dep b/install-dep
> index 621618fe..4698d44a 100755
> --- a/install-dep
> +++ b/install-dep
> @@ -2,20 +2,20 @@
> #install dependencies for compiling from source code

> #RHEL/Fedora/CentOS-Stream/Rocky
> -which dnf &>/dev/null || which yum &>/dev/null && {
> +command -v dnf >/dev/null || command -v yum >/dev/null && {
> yum install -y automake libtool make gcc rpcgen libtirpc-devel libevent-devel sqlite-devel device-mapper-devel \
> libblkid-devel krb5-devel libuuid-devel
> }

> #Debian/ubuntu
> -which apt &>/dev/null && {
> +command -v apt >/dev/null && {
> apt install -o APT::Install-Suggests=0 -o APT::Install-Recommends=0 --ignore-missing -y \
> autotools-dev automake make libtool pkg-config libtirpc-dev libevent-dev libsqlite3-dev \
> libdevmapper-dev libblkid-dev libkrb5-dev libkeyutils-dev uuid-dev
> }

> #openSUSE Leap
> -which zypper &>/dev/null && {
> +command -v zypper >/dev/null && {
> zypper in --no-recommends -y automake libtool make gcc rpcgen libtirpc-devel libevent-devel sqlite-devel \
> device-mapper-devel libblkid-devel krb5-devel libuuid-devel
> }

2021-09-23 16:36:28

by Steve Dickson

[permalink] [raw]
Subject: Re: [PATCH 1/1] install-dep: Use command -v instead of which



On 9/20/21 11:25 AM, Petr Vorel wrote:
> `command -v' is shell builtin required by POSIX [1] and supported on all
> common shells (bash, zsh, dash, busybox sh, mksh). `which' utility is not
> presented on some containers (e.g. Fedora, openSUSE), also going to be
> removed from future Debian versions.
>
> Also remove stderr redirection to /dev/null as it's unnecessary when
> using 'command': POSIX says "no output shall be written" if the command
> isn't found.
>
> [1] https://pubs.opengroup.org/onlinepubs/9699919799/utilities/command.html
> [2] https://salsa.debian.org/debian/debianutils/-/commit/3a8dd10b4502f7bae8fc6973c13ce23fc9da7efb
>
> Signed-off-by: Petr Vorel <[email protected]>
Committed... (tag: nfs-utils-2-5-5-rc3)

steved.
> ---
> install-dep | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/install-dep b/install-dep
> index 621618fe..4698d44a 100755
> --- a/install-dep
> +++ b/install-dep
> @@ -2,20 +2,20 @@
> #install dependencies for compiling from source code
>
> #RHEL/Fedora/CentOS-Stream/Rocky
> -which dnf &>/dev/null || which yum &>/dev/null && {
> +command -v dnf >/dev/null || command -v yum >/dev/null && {
> yum install -y automake libtool make gcc rpcgen libtirpc-devel libevent-devel sqlite-devel device-mapper-devel \
> libblkid-devel krb5-devel libuuid-devel
> }
>
> #Debian/ubuntu
> -which apt &>/dev/null && {
> +command -v apt >/dev/null && {
> apt install -o APT::Install-Suggests=0 -o APT::Install-Recommends=0 --ignore-missing -y \
> autotools-dev automake make libtool pkg-config libtirpc-dev libevent-dev libsqlite3-dev \
> libdevmapper-dev libblkid-dev libkrb5-dev libkeyutils-dev uuid-dev
> }
>
> #openSUSE Leap
> -which zypper &>/dev/null && {
> +command -v zypper >/dev/null && {
> zypper in --no-recommends -y automake libtool make gcc rpcgen libtirpc-devel libevent-devel sqlite-devel \
> device-mapper-devel libblkid-devel krb5-devel libuuid-devel
> }
>