Merge pull request #1 from pyr0ball/newfeature-pkg-management
[New Feature] package management
This commit is contained in:
commit
1e83f6977e
1 changed files with 124 additions and 3 deletions
125
functions
125
functions
|
|
@ -2,7 +2,7 @@
|
||||||
# pyr0ball script functions library
|
# pyr0ball script functions library
|
||||||
|
|
||||||
# Initial Vars
|
# Initial Vars
|
||||||
functionsrev=1.3.0
|
functionsrev=1.4.0
|
||||||
#scriptname="${BASH_SOURCE[0]##*/}"
|
#scriptname="${BASH_SOURCE[0]##*/}"
|
||||||
#rundir="${BASH_SOURCE[0]%/*}"
|
#rundir="${BASH_SOURCE[0]%/*}"
|
||||||
#rundir_absolute=$(cd $rundir && pwd)
|
#rundir_absolute=$(cd $rundir && pwd)
|
||||||
|
|
@ -1072,7 +1072,7 @@ check-prbl-version(){
|
||||||
vercomp
|
vercomp
|
||||||
}
|
}
|
||||||
|
|
||||||
compare-versions() {
|
compare-versions(){
|
||||||
vercomp $1 $2
|
vercomp $1 $2
|
||||||
case $? in
|
case $? in
|
||||||
0) op='=';;
|
0) op='=';;
|
||||||
|
|
@ -1087,4 +1087,125 @@ compare-versions() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
identify-system(){
|
||||||
|
# OS distribution auto-detection
|
||||||
|
if type lsb_release >/dev/null 2>&1; then
|
||||||
|
# linuxbase.org
|
||||||
|
ID=$(lsb_release -si)
|
||||||
|
OS=$(lsb_release -si)
|
||||||
|
VER=$(lsb_release -sr)
|
||||||
|
elif [ -f /etc/debian_version ]; then
|
||||||
|
# Older Debian/Ubuntu/etc.
|
||||||
|
ID=debian
|
||||||
|
OS=Debian
|
||||||
|
VER=$(cat /etc/debian_version)
|
||||||
|
elif [ -f /etc/lsb-release ]; then
|
||||||
|
# For Arch and some versions of Debian/Ubuntu without lsb_release command
|
||||||
|
. /etc/lsb-release
|
||||||
|
ID=$DISTRIB_ID
|
||||||
|
OS=$DISTRIB_ID
|
||||||
|
VER=$DISTRIB_RELEASE
|
||||||
|
VER=${VER:-$LSB_VERSION}
|
||||||
|
elif [ -f /etc/os-release ]; then
|
||||||
|
# freedesktop.org arch and systemd
|
||||||
|
. /etc/os-release
|
||||||
|
ID=${ID:-VERSION_ID}
|
||||||
|
ID=${ID:-VERSION}
|
||||||
|
OS=$NAME
|
||||||
|
VER=$VERSION_ID
|
||||||
|
VER=${VER:-$VERSION}
|
||||||
|
elif [ -f /etc/redhat-release ]; then
|
||||||
|
# Older Red Hat, CentOS, etc.
|
||||||
|
OS=$(cat /etc/redhat-release | awk '{print $1}')
|
||||||
|
else
|
||||||
|
# Fall back to uname, e.g. "Linux <version>", also works for BSD, etc.
|
||||||
|
OS=$(uname -s)
|
||||||
|
VER=$(uname -r)
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
ID(){
|
||||||
|
boxborder \
|
||||||
|
"ID: $ID" \
|
||||||
|
"OS: $OS" \
|
||||||
|
"VER: $VER"
|
||||||
|
}
|
||||||
|
|
||||||
|
install_packages(){
|
||||||
|
# Separate package names and file arguments
|
||||||
|
declare -a packages=()
|
||||||
|
declare -a offline_packages=()
|
||||||
|
for arg in "$@"; do
|
||||||
|
if [[ -f $arg ]]; then
|
||||||
|
offline_packages+=("$arg")
|
||||||
|
else
|
||||||
|
packages+=("$arg")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
# Identify which distro is being run
|
||||||
|
identify-system
|
||||||
|
|
||||||
|
# Match distribution with available utilities
|
||||||
|
# TODO: Add package name transformer lists
|
||||||
|
case $ID in
|
||||||
|
amzn | centos | fedora | rhel)
|
||||||
|
if [ "${#packages[@]}" -gt 0 ]; then
|
||||||
|
sudo yum install -y "${packages[@]}"
|
||||||
|
fi
|
||||||
|
if [ "${#offline_packages[@]}" -gt 0 ]; then
|
||||||
|
sudo rpm -i "${packages[@]}"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
arch | Arch | manjaro)
|
||||||
|
if [ "${#packages[@]}" -gt 0 ]; then
|
||||||
|
sudo pacman -Syu
|
||||||
|
sudo pacman -S "${packages[@]}"
|
||||||
|
fi
|
||||||
|
if [ "${#offline_packages[@]}" -gt 0 ]; then
|
||||||
|
sudo pacman -U "${offline_packages[@]}"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
debian | ubuntu | Ubuntu)
|
||||||
|
if [ "${#packages[@]}" -gt 0 ]; then
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install "${packages[@]}"
|
||||||
|
fi
|
||||||
|
if [ "${#offline_packages[@]}" -gt 0 ]; then
|
||||||
|
sudo dpkg -i "${offline_packages[@]}"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
opensuse | sles)
|
||||||
|
if [ "${#packages[@]}" -gt 0 ]; then
|
||||||
|
sudo zypper refresh
|
||||||
|
sudo zypper install "${packages[@]}"
|
||||||
|
fi
|
||||||
|
if [ "${#offline_packages[@]}" -gt 0 ]; then
|
||||||
|
sudo rpm -i "${offline_packages[@]}"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
slackware)
|
||||||
|
if [ "${#packages[@]}" -gt 0 ]; then
|
||||||
|
for package in "${packages[@]}"; do
|
||||||
|
sudo installpkg "$package"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [ "${#offline_packages[@]}" -gt 0 ]; then
|
||||||
|
for package_file in "${offline_packages[@]}"; do
|
||||||
|
sudo installpkg "$package_file"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
brew)
|
||||||
|
if [ "${#packages[@]}" -gt 0 ]; then
|
||||||
|
brew install "${packages[@]}"
|
||||||
|
fi
|
||||||
|
if [ "${#offline_packages[@]}" -gt 0 ]; then
|
||||||
|
for package_file in "${offline_packages[@]}"; do
|
||||||
|
brew install "$package_file"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
set-boxtype
|
set-boxtype
|
||||||
Loading…
Reference in a new issue