[pacman-dev] [PATCH] makepkg: fall back to su if sudo is not available

Allan McRae allan at archlinux.org
Sat Mar 6 17:28:09 EST 2010


On 05/03/10 12:57, Ray Kohler wrote:
> I just came across a nuisance with this patch: it warns about the use
> of su both inside, and outside, of the fakeroot run. Here's another
> version that checks INFAKEROOT before printing that, such that it'll
> only do so outside of the fakeroot.
>
>> From 94840c1c5f1fc0f3b4699bcb174f615042ff1cf1 Mon Sep 17 00:00:00 2001
> From: Ray Kohler<ataraxia937 at gmail.com>
> Date: Sat, 20 Feb 2010 21:08:25 -0500
> Subject: [PATCH] makepkg: fall back to su if sudo is not available
>
> Signed-off-by: Ray Kohler<ataraxia937 at gmail.com>
> ---
>   scripts/makepkg.sh.in |   15 ++++++++-------
>   1 files changed, 8 insertions(+), 7 deletions(-)
>
> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> index 5bd294c..75ce7e9 100644
> --- a/scripts/makepkg.sh.in
> +++ b/scripts/makepkg.sh.in
> @@ -344,8 +344,12 @@ download_file() {
>
>   run_pacman() {
>   	local ret=0
> -	if (( ! ASROOT ))&&  [[ $1 != "-T" ]]&&  sudo -l $PACMAN&>/dev/null; then
> -		sudo $PACMAN $PACMAN_OPTS "$@" || ret=$?
> +	if (( ! ASROOT ))&&  [[ $1 != "-T" ]]; then
> +		if [ "$(type -p sudo)" ]&&  sudo -l $PACMAN&>/dev/null; then
> +			sudo $PACMAN $PACMAN_OPTS "$@" || ret=$?
> +		else
> +			su -c "$PACMAN $PACMAN_OPTS $*" || ret=$?
> +		fi
>   	else
>   		$PACMAN $PACMAN_OPTS "$@" || ret=$?
>   	fi
> @@ -1687,12 +1691,9 @@ else
>   fi
>
>   # check for sudo if we will need it during makepkg execution
> -if (( ! ASROOT&&  ( DEP_BIN || RMDEPS || INSTALL ) )); then
> +if (( ! ( ASROOT || INFAKEROOT )&&  ( DEP_BIN || RMDEPS || INSTALL ) )); then
>   	if [ ! "$(type -p sudo)" ]; then
> -		error "$(gettext "Cannot find the sudo binary! Is sudo installed?")"
> -		plain "$(gettext "Missing dependencies cannot be installed or
> removed as a normal user")"
> -		plain "$(gettext "without sudo; install and configure sudo to
> auto-resolve dependencies.")"


That message looked a bit ugly in a standard 80 wide terminal so I 
changed it to:

"Sudo can not be found. Using su to acquire root privileges."


Otherwise, this looks fine.  Pulled to my working branch.

Allan


More information about the pacman-dev mailing list