diff --git a/lib/utils.sh b/lib/utils.sh index 72fd9fe..335c4b6 100755 --- a/lib/utils.sh +++ b/lib/utils.sh @@ -91,8 +91,19 @@ is_package_installed() { local pkg="$1" if command -v pacman >/dev/null 2>&1; then - pacman -Qi "$pkg" >/dev/null 2>&1 - return $? + pacman -Qi "$pkg" >/dev/null 2>&1 && return 0 + if command -v expac >/dev/null 2>&1; then + expac -Q '%n %P' 2>/dev/null | awk -v pkg="$pkg" ' + { for (i=2; i<=NF; i++) if ($i == pkg) {found=1; exit} } + END {exit !found} + ' && return 0 + else + while IFS= read -r installed; do + [[ -z "$installed" ]] && continue + pacman -Qi "$installed" 2>/dev/null | grep -qP "Provides\s*:\s*.*\b${pkg}\b" && return 0 + done < <(pacman -Qq 2>/dev/null) + fi + return 1 fi return 1