hotfix install packages to gnu/linux distros - install.sh
This commit is contained in:
parent
14ae23997e
commit
096ffbaed4
103
install.sh
103
install.sh
@ -27,32 +27,54 @@ function msg_err() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ----------
|
||||||
|
# Get OS ID
|
||||||
|
# ----------
|
||||||
|
function get_os_id() {
|
||||||
|
cat /etc/*release 2>/dev/null |
|
||||||
|
tr '[:upper:]' '[:lower:]' |
|
||||||
|
grep "^id=" | head -n1 | cut -d= -f2 | tr -d '"'
|
||||||
|
}
|
||||||
|
|
||||||
|
# -------------------------
|
||||||
|
# Map programs to packages
|
||||||
|
# -------------------------
|
||||||
|
function map_program_to_package() {
|
||||||
|
local program="$1"
|
||||||
|
local os="$2"
|
||||||
|
|
||||||
|
case "$program" in
|
||||||
|
ls) echo "coreutils" ;;
|
||||||
|
iproute2)
|
||||||
|
case "$os" in
|
||||||
|
fedora|rhel|centos|amzn|rocky|almalinux) echo "iproute" ;;
|
||||||
|
*) echo "iproute2" ;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
*) echo "$program" ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# ---------------------
|
||||||
# Check Requirements
|
# Check Requirements
|
||||||
# -------------------
|
# -------------------
|
||||||
function install_package() {
|
function install_package() {
|
||||||
local pkg="$1"
|
local pkg="$1"
|
||||||
|
local os="$2"
|
||||||
local sudo_cmd=""
|
local sudo_cmd=""
|
||||||
local OS_ID=""
|
|
||||||
|
|
||||||
# Determine if root or use sudo/doas
|
|
||||||
case "$(id -u)" in
|
case "$(id -u)" in
|
||||||
0) sudo_cmd="" ;;
|
0) sudo_cmd="" ;;
|
||||||
*)
|
*)
|
||||||
case "$(command -v doas 2>/dev/null)" in
|
if command -v doas &>/dev/null; then
|
||||||
"") sudo_cmd="sudo" ;;
|
sudo_cmd="doas"
|
||||||
*) sudo_cmd="doas" ;;
|
else
|
||||||
esac
|
sudo_cmd="sudo"
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Get OS ID (e.g., arch, debian, ubuntu, fedora, alpine, etc.)
|
case "$os" in
|
||||||
OS_ID=$(
|
|
||||||
cat /etc/*release 2>/dev/null |
|
|
||||||
tr '[:upper:]' '[:lower:]' |
|
|
||||||
grep "^id=" | head -n1 | cut -d= -f2 | tr -d '"'
|
|
||||||
)
|
|
||||||
|
|
||||||
case "$OS_ID" in
|
|
||||||
arch|manjaro|endeavouros|hyperbola|artix)
|
arch|manjaro|endeavouros|hyperbola|artix)
|
||||||
$sudo_cmd pacman -Sy --noconfirm "$pkg"
|
$sudo_cmd pacman -Sy --noconfirm "$pkg"
|
||||||
;;
|
;;
|
||||||
@ -76,32 +98,37 @@ function install_package() {
|
|||||||
$sudo_cmd apk add --no-cache "$pkg"
|
$sudo_cmd apk add --no-cache "$pkg"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
msg_err "Sistema operativo no soportado: $OS_ID" "Unsupported OS: $OS_ID"
|
msg_err "Sistema operativo no soportado: $os" "Unsupported OS: $os"
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
programs=("curl" "less" "ls" "iproute2" "unzip")
|
# ---------------------------
|
||||||
for program in "${programs[@]}"; do
|
# Check and install programs
|
||||||
if ! command -v "$program" &>/dev/null; then
|
# ---------------------------
|
||||||
case "$program" in
|
function check_and_install_programs() {
|
||||||
ls) pkg="coreutils" ;;
|
local os_id
|
||||||
iproute2)
|
os_id=$(get_os_id)
|
||||||
case "$OS_ID" in
|
local programs=("curl" "less" "ls" "iproute2" "unzip")
|
||||||
fedora|rhel|centos) pkg="iproute" ;;
|
|
||||||
*) pkg="iproute2" ;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
*) pkg="$program" ;;
|
|
||||||
esac
|
|
||||||
msg "Instalando dependencia: $pkg" "Installing dependency: $pkg"
|
|
||||||
install_package "$pkg"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
|
for prog in "${programs[@]}"; do
|
||||||
|
if ! command -v "$prog" &>/dev/null; then
|
||||||
|
local pkg
|
||||||
|
pkg=$(map_program_to_package "$prog" "$os_id")
|
||||||
|
msg "Instalando dependencia: $pkg" "Installing dependency: $pkg"
|
||||||
|
install_package "$pkg" "$os_id"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
# ---------------------
|
||||||
|
# Install dependencies
|
||||||
|
# ---------------------
|
||||||
|
check_and_install_programs "$@"
|
||||||
|
|
||||||
|
# ------------------------
|
||||||
# Check URLs availability
|
# Check URLs availability
|
||||||
# -----------------------
|
# ------------------------
|
||||||
function _url_exists() {
|
function _url_exists() {
|
||||||
curl --output /dev/null --silent --head --write-out "%{http_code}" "$1"
|
curl --output /dev/null --silent --head --write-out "%{http_code}" "$1"
|
||||||
}
|
}
|
||||||
@ -124,6 +151,7 @@ function _urls() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# -----------
|
||||||
# Show usage
|
# Show usage
|
||||||
# -----------
|
# -----------
|
||||||
function show_usage() {
|
function show_usage() {
|
||||||
@ -142,6 +170,7 @@ function show_usage() {
|
|||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# --------------------------
|
||||||
# Download and unzip archive
|
# Download and unzip archive
|
||||||
# --------------------------
|
# --------------------------
|
||||||
function download_and_unzip() {
|
function download_and_unzip() {
|
||||||
@ -182,8 +211,9 @@ function download_and_unzip() {
|
|||||||
rm -rf "$TMP_DIR"
|
rm -rf "$TMP_DIR"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# -------------------
|
||||||
# Backup and install
|
# Backup and install
|
||||||
# ------------------
|
# -------------------
|
||||||
function backup_and_install() {
|
function backup_and_install() {
|
||||||
download_and_unzip
|
download_and_unzip
|
||||||
|
|
||||||
@ -197,8 +227,9 @@ function backup_and_install() {
|
|||||||
"\033[0;36mTemplate copied to ~/$CONFIG_FILE \033[0m"
|
"\033[0;36mTemplate copied to ~/$CONFIG_FILE \033[0m"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# -----------
|
||||||
# Parse args
|
# Parse args
|
||||||
# ----------
|
# -----------
|
||||||
for param in "$@"; do
|
for param in "$@"; do
|
||||||
shift
|
shift
|
||||||
case "$param" in
|
case "$param" in
|
||||||
@ -220,7 +251,9 @@ while getopts "hsn" opt; do
|
|||||||
done
|
done
|
||||||
shift $((OPTIND - 1))
|
shift $((OPTIND - 1))
|
||||||
|
|
||||||
|
# ------------------------------
|
||||||
# Setup config file based on OS
|
# Setup config file based on OS
|
||||||
|
# ------------------------------
|
||||||
case "$OSTYPE" in
|
case "$OSTYPE" in
|
||||||
darwin*) CONFIG_FILE=".bash_profile" ;;
|
darwin*) CONFIG_FILE=".bash_profile" ;;
|
||||||
*) CONFIG_FILE=".bashrc" ;;
|
*) CONFIG_FILE=".bashrc" ;;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user