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:
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
|
# Test if the named environment variable is set and not zero length
|
||||||
# is_set env-var
|
# is_set env-var
|
||||||
function is_set() {
|
function is_set() {
|
||||||
|
13
stack.sh
13
stack.sh
@ -182,11 +182,7 @@ if [[ $EUID -eq 0 ]]; then
|
|||||||
sleep $ROOTSLEEP
|
sleep $ROOTSLEEP
|
||||||
|
|
||||||
# Give the non-root user the ability to run as **root** via ``sudo``
|
# Give the non-root user the ability to run as **root** via ``sudo``
|
||||||
if [[ "$os_PACKAGE" = "deb" ]]; then
|
is_package_installed sudo || install_package sudo
|
||||||
dpkg -l sudo || install_package sudo
|
|
||||||
else
|
|
||||||
rpm -qa | grep sudo || install_package sudo
|
|
||||||
fi
|
|
||||||
if ! getent group stack >/dev/null; then
|
if ! getent group stack >/dev/null; then
|
||||||
echo "Creating a group called stack"
|
echo "Creating a group called stack"
|
||||||
groupadd stack
|
groupadd stack
|
||||||
@ -215,12 +211,7 @@ if [[ $EUID -eq 0 ]]; then
|
|||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
# We're not **root**, make sure ``sudo`` is available
|
# We're not **root**, make sure ``sudo`` is available
|
||||||
if [[ "$os_PACKAGE" = "deb" ]]; then
|
is_package_installed sudo || die "Sudo is required. Re-run stack.sh as root ONE TIME ONLY to set up sudo."
|
||||||
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."
|
|
||||||
|
|
||||||
# UEC images ``/etc/sudoers`` does not have a ``#includedir``, add one
|
# UEC images ``/etc/sudoers`` does not have a ``#includedir``, add one
|
||||||
sudo grep -q "^#includedir.*/etc/sudoers.d" /etc/sudoers ||
|
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 'b,a,-a' 'b'
|
||||||
test_disable_negated_services 'a,b,-a' 'b'
|
test_disable_negated_services 'a,b,-a' 'b'
|
||||||
test_disable_negated_services 'a,-a,b' '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
|
||||||
|
Loading…
Reference in New Issue
Block a user