Dependencie Check updated
This commit is contained in:
parent
cffdc504ca
commit
6d37ad3af0
3 changed files with 83 additions and 91 deletions
|
|
@ -18,91 +18,43 @@ else
|
|||
fi
|
||||
|
||||
### DEPENDENCIES
|
||||
|
||||
dep_check() {
|
||||
local pkg="$1"
|
||||
|
||||
check_for_package() {
|
||||
if dpkg-query -s "$1" 1>/dev/null 2>&1; then
|
||||
return 0
|
||||
elif apt-cache show "$1" 1>/dev/null 2>&1; then
|
||||
return 1
|
||||
if dpkg -s "$pkg" >/dev/null 2>&1; then
|
||||
echo "$pkg" >>/tmp/installed_dev
|
||||
else
|
||||
return 2
|
||||
echo "$pkg" >>/tmp/missing_dev
|
||||
fi
|
||||
}
|
||||
|
||||
for package in $deps; do
|
||||
if check_for_package "$package"; then
|
||||
printf "%-20s - %s\n" "$package" "package is installed"
|
||||
elif [ $? -eq 1 ]; then
|
||||
printf "%-20s - %s\n" "$package" "package is not installed, it is available in package repository"
|
||||
else
|
||||
printf "%-20s - %s\n" "$package" "package is not installed, it is not available in package repository"
|
||||
fi
|
||||
done
|
||||
|
||||
for pkg in "${deps[@]}"; do
|
||||
dep_check "$pkg"
|
||||
done
|
||||
|
||||
installed="$(cat /tmp/installed_dev 2>/dev/null)"
|
||||
missing="$(cat /tmp/missing_dev 2>/dev/null)"
|
||||
|
||||
if ! [ "$missing" ]; then
|
||||
echo -e "\n ${GRN}Dependencies met. Proceeding...${CRS}\n"
|
||||
else
|
||||
echo -e "\n ${RED}Following dependencies are missing :${CRS}\n\n$missing"
|
||||
while true; do
|
||||
echo -e " ${YEL}Do you wish to install via APT?"
|
||||
read -p " (Y/n) --> " install
|
||||
echo ""
|
||||
if [[ "$install" = "" || "$install" = "y" || "$install" = "Y" ]]; then
|
||||
sudo apt update && sudo apt install -y $pkgs_apt
|
||||
echo -e "\n ${YEL}Do you wish to install via APT?"
|
||||
read -p " (Y/n) --> " install_dep
|
||||
echo -e "${CRS}"
|
||||
if [[ "$install_dep" = "" || "$install_dep" = "y" || "$install_dep" = "Y" ]]; then
|
||||
sudo apt update && sudo apt install -y $missing --simulate
|
||||
echo -e "\n ${GRN}Dependencies installed. Proceeding...${CRS}\n"
|
||||
break
|
||||
|
||||
elif [[ "$install" == "n" || "$install" = "N" ]]; then
|
||||
sudo rm /tmp/installed_dev /tmp/missing_dev 2>/dev/null
|
||||
break
|
||||
elif [[ "$install_dep" == "n" || "$install_dep" = "N" ]]; then
|
||||
echo -e "\n ${RED}Missing dependencies... Exiting!${CRS}\n"
|
||||
sudo rm /tmp/installed_dev /tmp/missing_dev 2>/dev/null
|
||||
exit 1
|
||||
|
||||
else
|
||||
echo -e "\n ${YEL}Invalid response... Try again...\n\n ${GRN}Y ${YEL}= (Yes, install dependencies and continue)\n ${RED}N ${YEL}= (No, don't install dependencies and exit)${CRS}\n "
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
|
||||
# List of packages to check
|
||||
packages=("git" "gcc" "python3" "vim")
|
||||
|
||||
# Function to check if a package is installed and install if not
|
||||
check_and_install() {
|
||||
local pkg="$1"
|
||||
local package_manager=""
|
||||
|
||||
# Determine the package manager based on the system
|
||||
if command -v apt-get >/dev/null 2>&1; then
|
||||
package_manager="apt-get"
|
||||
elif command -v yum >/dev/null 2>&1; then
|
||||
package_manager="yum"
|
||||
elif command -v dnf >/dev/null 2>&1; then
|
||||
package_manager="dnf"
|
||||
else
|
||||
echo "Unsupported package manager. Cannot proceed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if package is installed
|
||||
if dpkg -s "$pkg" >/dev/null 2>&1; then
|
||||
echo "$pkg is already installed."
|
||||
else
|
||||
echo "$pkg is not installed."
|
||||
read -p "Would you like to install $pkg? (Y/N): " answer
|
||||
case $answer in
|
||||
[Yy]*)
|
||||
if [[ "$package_manager" == "apt-get" ]]; then
|
||||
sudo apt-get install -y "$pkg"
|
||||
elif [[ "$package_manager" == "yum" ]]; then
|
||||
sudo yum install -y "$pkg"
|
||||
elif [[ "$package_manager" == "dnf" ]]; then
|
||||
sudo dnf install -y "$pkg"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "Skipping installation of $pkg."
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
}
|
||||
|
||||
# Loop through each package and check/install
|
||||
for pkg in "${packages[@]}"; do
|
||||
check_and_install "$pkg"
|
||||
done
|
||||
fi
|
||||
Loading…
Add table
Add a link
Reference in a new issue