Cleanup installPackage()
This commit is contained in:
103
installJRMC
103
installJRMC
@@ -22,7 +22,7 @@ _exec_user="$(whoami)"
|
||||
|
||||
# Version control
|
||||
_boardurl="https://yabb.jriver.com/interact/index.php/board,71.0.html" # Media Center 28, only required if buildah is unavailable
|
||||
# _mcversion="28.0.84" # set manually
|
||||
# _mcversion="28.0.84" # to set manually
|
||||
|
||||
printHelp() {
|
||||
debug "Running: ${FUNCNAME[0]}"
|
||||
@@ -114,7 +114,6 @@ init() {
|
||||
if [[ "$ID" =~ ^(fedora|centos)$ ]]; then
|
||||
pkg_install(){ ifSudo dnf install -y "$@"; }
|
||||
pkg_reinstall(){ ifSudo dnf reinstall -y "$@"; }
|
||||
pkg_install_nogpg(){ ifSudo dnf install --nogpgcheck -y "$@"; }
|
||||
pkg_remove(){ ifSudo dnf remove -y "$@"; }
|
||||
pkg_update(){ ifSudo dnf makecache; }
|
||||
pkg_query(){ ifSudo rpm -q "$@"; }
|
||||
@@ -122,7 +121,6 @@ init() {
|
||||
elif [[ "$ID" =~ ^(debian|ubuntu|linuxmint)$ ]]; then
|
||||
pkg_install(){ ifSudo apt-get install -y -q0 "$@"; }
|
||||
pkg_reinstall(){ ifSudo apt-get reinstall -y -q0 "$@"; }
|
||||
pkg_install_nogpg(){ ifSudo apt-get install -y -q0 "$@"; }
|
||||
pkg_remove(){ ifSudo apt-get remove --auto-remove -y -q0 "$@"; }
|
||||
pkg_update(){ ifSudo apt-get update -y -q0; }
|
||||
pkg_query(){ ifSudo dpkg -s "$@"; }
|
||||
@@ -306,6 +304,7 @@ getLatestVersion() {
|
||||
declare -g _mcversion
|
||||
|
||||
# Use a containerized package manager
|
||||
# TODO but how to determine build distro ('buster')?
|
||||
[[ ! -x $(command -v buildah) ]] && installPackage --silent buildah
|
||||
if [[ -x $(command -v buildah) ]] && CNT=$(buildah from ubuntu:18.04); then
|
||||
buildah run "$CNT" -- bash -c \
|
||||
@@ -333,18 +332,28 @@ getLatestVersion() {
|
||||
# Arguments:
|
||||
# One or more package names
|
||||
# Options:
|
||||
# --noquery, -n: Do not query the package state (useful if installing a local RPM)
|
||||
# --silent, -s: Do not report errors (useful if package is not strictly required)
|
||||
# --no-check: Do not check if package is already installed
|
||||
# --no-gpg: Disable GPG checks for RPM based distros
|
||||
# --silent, -s: Do not report errors (useful if package is not strictly required and errors are noisy)
|
||||
#######################################
|
||||
installPackage() {
|
||||
debug "Running: ${FUNCNAME[0]}" "$@"
|
||||
|
||||
if _input=$(getopt -o +ns -l noquery,silent -- "$@"); then
|
||||
local -a _pkg_array
|
||||
local -a _pkg
|
||||
local _gpg=""
|
||||
|
||||
if _input=$(getopt -o +s -l no-check,no-gpg,silent -- "$@"); then
|
||||
eval set -- "$_input"
|
||||
while true; do
|
||||
case "$1" in
|
||||
--noquery|-n)
|
||||
local _noquery="true"
|
||||
--no-check)
|
||||
local _no_check=true
|
||||
;;
|
||||
--no-gpg)
|
||||
if [[ "$ID" =~ ^(fedora|centos)$ ]]; then
|
||||
_gpg="--nogpgcheck"
|
||||
fi
|
||||
;;
|
||||
--silent|-s)
|
||||
local _silent=true
|
||||
@@ -361,54 +370,33 @@ installPackage() {
|
||||
exit 1
|
||||
fi
|
||||
|
||||
local -a _pkg_array _url_pkg_array
|
||||
local -a _pkg
|
||||
|
||||
# Parse packages
|
||||
for _pkg in "$@"; do
|
||||
# Check for alias
|
||||
[[ -v PKG_ALIASES && -v PKG_ALIASES["$_pkg"] ]] && _pkg=PKG_ALIASES["$_pkg"]
|
||||
# Insert the package name to test if already installed
|
||||
if [[ -v _noquery ]] || ! pkg_query "$_pkg" > /dev/null 2>&1; then
|
||||
if [[ -v _url_pkg ]]; then
|
||||
_url_pkg_array+=("$_url_pkg")
|
||||
else
|
||||
# Check if already installed
|
||||
if [[ -v _no_check ]] || ! pkg_query "$_pkg" > /dev/null 2>&1; then
|
||||
_pkg_array+=("$_pkg")
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# Install from package name (with gpg check)
|
||||
# Install from package name
|
||||
if [[ ${#_pkg_array[@]} -ge 1 ]]; then
|
||||
[[ ! -v _silent ]] && echo "Installing:" "${_pkg_array[@]}"
|
||||
debug "Installing: ${_pkg_array[*]}"
|
||||
if debug; then
|
||||
if ! pkg_install "${_pkg_array[@]}"; then
|
||||
[[ ! -v _silent ]] && err "Failed to install package. Attempting to continue..."
|
||||
return 1
|
||||
fi
|
||||
elif ! pkg_install "${_pkg_array[@]}" > /dev/null 2>&1; then
|
||||
[[ ! -v _silent ]] && err "Failed to install ${_pkg_array[*]}. Attempting to continue..."
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Install from package url (without gpg check)
|
||||
if [[ ${#_url_pkg_array[@]} -ge 1 ]]; then
|
||||
[[ ! -v _silent ]] && echo "Installing: " "${_url_pkg_array[@]}"
|
||||
if debug; then
|
||||
if ! pkg_install_nogpg "${_url_pkg_array[@]}"; then
|
||||
[[ ! -v _silent ]] && err "Failed to install package. Attempting to continue..."
|
||||
return 1
|
||||
fi
|
||||
elif ! pkg_install_nogpg "${_url_pkg_array[@]}" > /dev/null 2>&1; then
|
||||
[[ ! -v _silent ]] && err "Failed to install package. Attempting to continue..."
|
||||
return 1
|
||||
debug "pkg_install $_gpg ${_pkg_array[*]}"
|
||||
pkg_install "$_gpg" "${_pkg_array[@]}"
|
||||
else
|
||||
pkg_install "$_gpg" "${_pkg_array[@]}" > /dev/null 2>&1
|
||||
fi
|
||||
local _return=$?
|
||||
[[ $_return -ne 0 && ! -v _silent ]] && err "Failed to install ${_pkg_array[*]}. Attempting to continue..."
|
||||
return $_return
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
#######################################
|
||||
# Adds the JRiver repos
|
||||
# Add the JRiver repository files
|
||||
#######################################
|
||||
addRepo() {
|
||||
debug "Running: ${FUNCNAME[0]}"
|
||||
@@ -441,7 +429,7 @@ installMCFromRepo() {
|
||||
|
||||
if ! debug; then
|
||||
echo "This may take a few minutes to complete."
|
||||
echo "Use --debug for more verbose output."
|
||||
echo "Use --debug for verbose output."
|
||||
fi
|
||||
|
||||
addRepo
|
||||
@@ -461,25 +449,18 @@ installMCFromRepo() {
|
||||
|
||||
if [[ -v _specific_version ]]; then
|
||||
if [[ "$ID" =~ ^(fedora|centos)$ ]]; then
|
||||
if debug; then
|
||||
installPackage "$_mcpkg-$_mcversion"
|
||||
else
|
||||
installPackage "$_mcpkg-$_mcversion" > /dev/null 2>&1
|
||||
fi
|
||||
_mcpkg="$_mcpkg-$_mcversion"
|
||||
elif [[ "$ID" =~ ^(debian|ubuntu|linuxmint)$ ]]; then
|
||||
if debug; then
|
||||
installPackage "$_mcpkg=$_mcversion"
|
||||
else
|
||||
installPackage "$_mcpkg=$_mcversion" > /dev/null 2>&1
|
||||
_mcpkg="$_mcpkg=$_mcversion"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
|
||||
if debug; then
|
||||
debug "installPackage $_mcpkg"
|
||||
installPackage "$_mcpkg"
|
||||
else
|
||||
installPackage "$_mcpkg" > /dev/null 2>&1
|
||||
fi
|
||||
fi
|
||||
|
||||
return $?
|
||||
}
|
||||
@@ -514,12 +495,12 @@ acquireDeb() {
|
||||
"https://files.jriver.com/mediacenter/channels/v$_mversion/latest/MediaCenter-$_mcversion-amd64.deb"; then
|
||||
echo "Found!"
|
||||
else
|
||||
err "Cannot find DEB file. Exiting..."
|
||||
err "Cannot find DEB file."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -f "$DEBFILENAME" ]]; then
|
||||
err "Downloaded DEB file missing or corrupted, exiting..."
|
||||
err "Downloaded DEB file missing or corrupted."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
@@ -1183,9 +1164,9 @@ uninstall() {
|
||||
|
||||
echo "Uninstalling Media Center packages"
|
||||
if [[ "$ID" =~ ^(fedora|centos)$ ]]; then
|
||||
pkg_remove "MediaCenter"
|
||||
pkg_remove "-q" "MediaCenter"
|
||||
elif [[ "$ID" =~ ^(debian|ubuntu|linuxmint)$ ]]; then
|
||||
pkg_remove "mediacenter$_mversion"
|
||||
pkg_remove "-q" "mediacenter$_mversion"
|
||||
fi
|
||||
|
||||
echo "JRiver Media Center has been completely uninstalled"
|
||||
@@ -1195,7 +1176,7 @@ uninstall() {
|
||||
|
||||
|
||||
tests() {
|
||||
# To test on Mint: sudo apt-get install -y spice-vdagent ca-certificates git
|
||||
# To test on Mint: sudo apt-get install -y spice-vdagent ca-certificates git; export GIT_SSL_NO_VERIFY=1
|
||||
exit $?
|
||||
}
|
||||
|
||||
@@ -1228,7 +1209,7 @@ main() {
|
||||
if [[ -v _build ]]; then
|
||||
acquireDeb
|
||||
if ! buildRPM || [[ ! -f "$_mcrpm" ]] ; then
|
||||
err "Build failed. Exiting..."
|
||||
err "Build failed."
|
||||
[[ -f "$DEBFILENAME" ]] && echo "Removing source DEB" && rm -f "$DEBFILENAME"
|
||||
exit 1
|
||||
else
|
||||
@@ -1243,7 +1224,7 @@ main() {
|
||||
|
||||
# Install RPM
|
||||
if [[ -v _install && "$_install" == "rpm" ]]; then
|
||||
installPackage --noquery "$_mcrpm"
|
||||
installPackage --no-check "$_mcrpm"
|
||||
symlinkCerts
|
||||
restoreLicense
|
||||
openFirewall "jriver"
|
||||
|
||||
Reference in New Issue
Block a user