Add is_package_installed function to know if a package is installed
This helps reduce the distro-dependent code in stack.sh, and also fixes the bug where "rpm -qa | grep sudo" will work if gnome-sudoku is installed. Rebased Change-Id: Ib1330b29b915b41d9724197edd791f0d4e0fe373
This commit is contained in:
		
				
					committed by
					
						
						Dean Troyer
					
				
			
			
				
	
			
			
			
						parent
						
							c132625d1d
						
					
				
				
					commit
					71ebc6ff65
				
			
							
								
								
									
										20
									
								
								functions
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								functions
									
									
									
									
									
								
							@@ -548,6 +548,26 @@ function install_package() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Distro-agnostic function to tell if a package is installed
 | 
			
		||||
# is_package_installed package [package ...]
 | 
			
		||||
function is_package_installed() {
 | 
			
		||||
    if [[ -z "$@" ]]; then
 | 
			
		||||
        return 1
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if [[ -z "$os_PACKAGE" ]]; then
 | 
			
		||||
        GetOSVersion
 | 
			
		||||
    fi
 | 
			
		||||
    if [[ "$os_PACKAGE" = "deb" ]]; then
 | 
			
		||||
        dpkg -l "$@" > /dev/null
 | 
			
		||||
        return $?
 | 
			
		||||
    else
 | 
			
		||||
        rpm --quiet -q "$@"
 | 
			
		||||
        return $?
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Test if the named environment variable is set and not zero length
 | 
			
		||||
# is_set env-var
 | 
			
		||||
function is_set() {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										13
									
								
								stack.sh
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								stack.sh
									
									
									
									
									
								
							@@ -182,11 +182,7 @@ if [[ $EUID -eq 0 ]]; then
 | 
			
		||||
    sleep $ROOTSLEEP
 | 
			
		||||
 | 
			
		||||
    # Give the non-root user the ability to run as **root** via ``sudo``
 | 
			
		||||
    if [[ "$os_PACKAGE" = "deb" ]]; then
 | 
			
		||||
        dpkg -l sudo || install_package sudo
 | 
			
		||||
    else
 | 
			
		||||
        rpm -qa | grep sudo || install_package sudo
 | 
			
		||||
    fi
 | 
			
		||||
    is_package_installed sudo || install_package sudo
 | 
			
		||||
    if ! getent group stack >/dev/null; then
 | 
			
		||||
        echo "Creating a group called stack"
 | 
			
		||||
        groupadd stack
 | 
			
		||||
@@ -215,12 +211,7 @@ if [[ $EUID -eq 0 ]]; then
 | 
			
		||||
    exit 1
 | 
			
		||||
else
 | 
			
		||||
    # We're not **root**, make sure ``sudo`` is available
 | 
			
		||||
    if [[ "$os_PACKAGE" = "deb" ]]; then
 | 
			
		||||
        CHECK_SUDO_CMD="dpkg -l sudo"
 | 
			
		||||
    else
 | 
			
		||||
        CHECK_SUDO_CMD="rpm -q sudo"
 | 
			
		||||
    fi
 | 
			
		||||
    $CHECK_SUDO_CMD || die "Sudo is required.  Re-run stack.sh as root ONE TIME ONLY to set up sudo."
 | 
			
		||||
    is_package_installed sudo || die "Sudo is required.  Re-run stack.sh as root ONE TIME ONLY to set up sudo."
 | 
			
		||||
 | 
			
		||||
    # UEC images ``/etc/sudoers`` does not have a ``#includedir``, add one
 | 
			
		||||
    sudo grep -q "^#includedir.*/etc/sudoers.d" /etc/sudoers ||
 | 
			
		||||
 
 | 
			
		||||
@@ -239,3 +239,44 @@ test_disable_negated_services 'a,-a' ''
 | 
			
		||||
test_disable_negated_services 'b,a,-a' 'b'
 | 
			
		||||
test_disable_negated_services 'a,b,-a' 'b'
 | 
			
		||||
test_disable_negated_services 'a,-a,b' 'b'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
echo "Testing is_package_installed()"
 | 
			
		||||
 | 
			
		||||
if [[ -z "$os_PACKAGE" ]]; then
 | 
			
		||||
    GetOSVersion
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [[ "$os_PACKAGE" = "deb" ]]; then
 | 
			
		||||
    is_package_installed dpkg
 | 
			
		||||
    VAL=$?
 | 
			
		||||
else
 | 
			
		||||
    is_package_installed rpm
 | 
			
		||||
    VAL=$?
 | 
			
		||||
fi
 | 
			
		||||
if [[ "$VAL" -eq 0 ]]; then
 | 
			
		||||
    echo "OK"
 | 
			
		||||
else
 | 
			
		||||
    echo "is_package_installed() on existing package failed"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [[ "$os_PACKAGE" = "deb" ]]; then
 | 
			
		||||
    is_package_installed dpkg bash
 | 
			
		||||
    VAL=$?
 | 
			
		||||
else
 | 
			
		||||
    is_package_installed rpm bash
 | 
			
		||||
    VAL=$?
 | 
			
		||||
fi
 | 
			
		||||
if [[ "$VAL" -eq 0 ]]; then
 | 
			
		||||
    echo "OK"
 | 
			
		||||
else
 | 
			
		||||
    echo "is_package_installed() on more than one existing package failed"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
is_package_installed zzzZZZzzz
 | 
			
		||||
VAL=$?
 | 
			
		||||
if [[ "$VAL" -ne 0 ]]; then
 | 
			
		||||
    echo "OK"
 | 
			
		||||
else
 | 
			
		||||
    echo "is_package_installed() on non-existing package failed"
 | 
			
		||||
fi
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user