mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
130 lines
3.5 KiB
Bash
130 lines
3.5 KiB
Bash
# Settings
|
|
source_url=${args[source]}
|
|
publisher=${args[publisher]}
|
|
# Flags
|
|
no_call=${args[--no-call]}
|
|
dry_run=${args[--dry-run]}
|
|
|
|
REQS="wget apt-transport-https"
|
|
|
|
function do_call() {
|
|
if [[ $dry_run ]]; then
|
|
echo -e "### DRY RUN: \n$1"
|
|
else
|
|
$1
|
|
fi
|
|
}
|
|
|
|
function get_distribution {
|
|
if [ -f /etc/os-release ]; then
|
|
. /etc/os-release
|
|
OS=$NAME
|
|
VER=$VERSION_ID
|
|
elif type lsb_release >/dev/null 2>&1; then
|
|
OS=$(lsb_release -si)
|
|
VER=$(lsb_release -sr)
|
|
elif [ -f /etc/lsb-release ]; then
|
|
. /etc/lsb-release
|
|
OS=$DISTRIB_ID
|
|
VER=$DISTRIB_RELEASE
|
|
elif [ -f /etc/debian_version ]; then
|
|
OS=Debian
|
|
VER=$(cat /etc/debian_version)
|
|
elif [ -f /etc/SuSe-release ]; then
|
|
OS=SEL
|
|
elif [ -f /etc/redhat-release ]; then
|
|
OS=RedHat
|
|
else
|
|
OS=$(uname -s)
|
|
VER=$(uname -r)
|
|
fi
|
|
}
|
|
|
|
echo "### Installer for InvenTree - source: $publisher/$source_url"
|
|
|
|
# Check if os and version is supported
|
|
get_distribution
|
|
echo "### Detected distribution: $OS $VER"
|
|
SUPPORTED=true # is this OS supported?
|
|
NEEDS_LIBSSL1_1=false # does this OS need libssl1.1?
|
|
|
|
DIST_OS=${OS,,}
|
|
DIST_VER=$VER
|
|
|
|
case "$OS" in
|
|
Ubuntu)
|
|
if [[ $VER == "22.04" ]]; then
|
|
SUPPORTED=true
|
|
NEEDS_LIBSSL1_1=true
|
|
DIST_VER="20.04"
|
|
elif [[ $VER == "20.04" ]]; then
|
|
SUPPORTED=true
|
|
else
|
|
SUPPORTED=false
|
|
fi
|
|
;;
|
|
"Debian GNU/Linux" | "debian gnu/linux" | Raspbian)
|
|
if [[ $VER == "12" ]]; then
|
|
SUPPORTED=true
|
|
elif [[ $VER == "11" ]]; then
|
|
SUPPORTED=true
|
|
elif [[ $VER == "10" ]]; then
|
|
SUPPORTED=true
|
|
else
|
|
SUPPORTED=false
|
|
fi
|
|
DIST_OS=debian
|
|
;;
|
|
*)
|
|
echo "### Distribution not supported"
|
|
SUPPORTED=false
|
|
;;
|
|
esac
|
|
|
|
if [[ $SUPPORTED != "true" ]]; then
|
|
echo "This OS is currently not supported."
|
|
echo "Please install manually using https://docs.inventree.org/en/stable/start/install/"
|
|
echo "or check https://github.com/inventree/InvenTree/issues/3836 for packaging for your OS."
|
|
echo "If you think this is a bug please file an issue at"
|
|
echo "https://github.com/inventree/InvenTree/issues/new?template=install.yaml"
|
|
|
|
exit 1
|
|
fi
|
|
|
|
echo "### Installing required packages for download"
|
|
for pkg in $REQS; do
|
|
if dpkg-query -W -f'${Status}' "$pkg" 2>/dev/null | grep -q "ok installed"; then
|
|
true
|
|
else
|
|
do_call "sudo apt-get -yqq install $pkg"
|
|
fi
|
|
done
|
|
|
|
if [[ $NEEDS_LIBSSL1_1 == "true" ]]; then
|
|
echo "### Pathching for libssl1.1"
|
|
|
|
echo "deb http://security.ubuntu.com/ubuntu focal-security main" | sudo tee /etc/apt/sources.list.d/focal-security.list
|
|
do_call "sudo apt-get update"
|
|
do_call "sudo apt-get install libssl1.1"
|
|
sudo rm /etc/apt/sources.list.d/focal-security.list
|
|
fi
|
|
|
|
echo "### Getting and adding key"
|
|
wget -qO- https://dl.packager.io/srv/$publisher/InvenTree/key | sudo apt-key add -
|
|
echo "### Adding package source"
|
|
do_call "sudo wget -O /etc/apt/sources.list.d/inventree.list https://dl.packager.io/srv/$publisher/InvenTree/$source_url/installer/$DIST_OS/$DIST_VER.repo"
|
|
|
|
echo "### Updating package lists"
|
|
do_call "sudo apt-get update"
|
|
|
|
# Set up environment for install
|
|
echo "### Setting installer args"
|
|
if [[ $no_call ]]; then
|
|
do_call "export NO_CALL=true"
|
|
fi
|
|
|
|
echo "### Installing InvenTree"
|
|
do_call "sudo apt-get install inventree -y"
|
|
|
|
echo "### Install done!"
|