|
@@ -10,7 +10,6 @@
|
|
# TODO (v2)
|
|
# TODO (v2)
|
|
# 1. Interactive mode
|
|
# 1. Interactive mode
|
|
# 2. Additional containerization (createrepo and rpmbuild)
|
|
# 2. Additional containerization (createrepo and rpmbuild)
|
|
-# 3. Tests
|
|
|
|
#
|
|
#
|
|
# BUGS
|
|
# BUGS
|
|
# 1. No createrepo on Mint
|
|
# 1. No createrepo on Mint
|
|
@@ -18,10 +17,10 @@
|
|
shopt -s extglob
|
|
shopt -s extglob
|
|
|
|
|
|
declare -g SCRIPT_VERSION="1.3.5-dev"
|
|
declare -g SCRIPT_VERSION="1.3.5-dev"
|
|
-declare -g MC_DEFAULT_REPO="bullseye" # should match the MC_VERSION
|
|
|
|
|
|
+declare -g MC_REPO="bullseye" # should match the MC_VERSION
|
|
declare -g MC_VERSION="33.0.30" # Do find all replace
|
|
declare -g MC_VERSION="33.0.30" # Do find all replace
|
|
declare -g BOARD_URL="https://yabb.jriver.com/interact/index.php/board,86.0.html" # MC33
|
|
declare -g BOARD_URL="https://yabb.jriver.com/interact/index.php/board,86.0.html" # MC33
|
|
-declare -ig SELF_UPDATE=1 # set to 0 to disable automatic self-update
|
|
|
|
|
|
+declare -ig UPDATE_SWITCH=1 # set to 0 to disable automatic self-update
|
|
|
|
|
|
# @description Print help text
|
|
# @description Print help text
|
|
print_help() {
|
|
print_help() {
|
|
@@ -50,7 +49,7 @@ print_help() {
|
|
Specify the MC repository, ex. "bullseye", "bookworm", "noble", etc (default: latest official)
|
|
Specify the MC repository, ex. "bullseye", "bookworm", "noble", etc (default: latest official)
|
|
--outputdir PATH
|
|
--outputdir PATH
|
|
Generate rpmbuild output in this directory (default: ./output)
|
|
Generate rpmbuild output in this directory (default: ./output)
|
|
- --restorefile MJR_RESTORE_FILE
|
|
|
|
|
|
+ --restorefile MJR_FILE
|
|
Restore file location for automatic license registration
|
|
Restore file location for automatic license registration
|
|
--betapass PASSWORD
|
|
--betapass PASSWORD
|
|
Enter beta team password for access to beta builds
|
|
Enter beta team password for access to beta builds
|
|
@@ -68,8 +67,8 @@ print_help() {
|
|
Specify the webroot directory to install the repo (default: /var/www/jriver)
|
|
Specify the webroot directory to install the repo (default: /var/www/jriver)
|
|
--createrepo-user USER
|
|
--createrepo-user USER
|
|
Specify the web server user if it differs from \$USER
|
|
Specify the web server user if it differs from \$USER
|
|
- --no-self-update
|
|
|
|
- Disable automatic self-update
|
|
|
|
|
|
+ --no-update
|
|
|
|
+ Disable automatic installJRMCself-update
|
|
--uninstall, -u
|
|
--uninstall, -u
|
|
Uninstall JRiver MC, remove services, containers, and firewall rules (does not remove library files)
|
|
Uninstall JRiver MC, remove services, containers, and firewall rules (does not remove library files)
|
|
--yes, -y, --auto
|
|
--yes, -y, --auto
|
|
@@ -108,54 +107,20 @@ print_help() {
|
|
}
|
|
}
|
|
|
|
|
|
# @description Parses user input and sets sensible defaults
|
|
# @description Parses user input and sets sensible defaults
|
|
|
|
+# @arg $@ User input
|
|
parse_input() {
|
|
parse_input() {
|
|
debug "Running: ${FUNCNAME[0]} $*"
|
|
debug "Running: ${FUNCNAME[0]} $*"
|
|
|
|
|
|
- declare -g BUILD_SWITCH REPO_INSTALL_SWITCH LOCAL_INSTALL_SWITCH \
|
|
|
|
- COMPAT_SWITCH TEST_SWITCH CREATEREPO_SWITCH UNINSTALL_SWITCH \
|
|
|
|
- YES_SWITCH USER_MC_VERSION MJR_RESTORE_FILE BETAPASS SERVICE_TYPE \
|
|
|
|
- VNCPASS USER_DISPLAY MC_REPO BUILD_TARGET REPO_TARGET
|
|
|
|
- declare -ga SERVICES CONTAINERS
|
|
|
|
local long_opts short_opts input
|
|
local long_opts short_opts input
|
|
- declare -g SCRIPT_PATH; SCRIPT_PATH=$(readlink -f "${BASH_SOURCE[0]}")
|
|
|
|
- declare -g SCRIPT_DIR=; SCRIPT_DIR=$(readlink -f "$(dirname "${BASH_SOURCE[0]}")")
|
|
|
|
- declare -g CREATEREPO_USER="$USER"
|
|
|
|
- declare -g OUTPUT_DIR="$SCRIPT_DIR/output"
|
|
|
|
- declare -g CREATEREPO_WEBROOT="/var/www/jriver"
|
|
|
|
- declare -g USER="${SUDO_USER:-$USER}"
|
|
|
|
- declare -g HOME; HOME=$(getent passwd "$USER" | cut -d: -f6)
|
|
|
|
-
|
|
|
|
- # Set some defaults if zero or one arguments are passed
|
|
|
|
- if [[ $# -eq 0 && $ID != "unknown" ]]; then
|
|
|
|
- debug "Automatically setting --install repo"
|
|
|
|
- REPO_INSTALL_SWITCH=1
|
|
|
|
- elif [[ $# -eq 1 || $# -eq 2 ]]; then
|
|
|
|
- case "$1" in
|
|
|
|
- --debug | -d | -y | --yes | --auto | --mcrepo | --mcversion | \
|
|
|
|
- --arch | --betapass | --restorefile | --outputdir | --no-self-update)
|
|
|
|
- if [[ $ID != "unknown" ]]; then
|
|
|
|
- debug "Automatically setting --install repo"
|
|
|
|
- REPO_INSTALL_SWITCH=1
|
|
|
|
- fi
|
|
|
|
- ;;
|
|
|
|
- --compat)
|
|
|
|
- if [[ $# -eq 1 ]]; then
|
|
|
|
- BUILD_SWITCH=1
|
|
|
|
- LOCAL_INSTALL_SWITCH=1
|
|
|
|
- fi
|
|
|
|
- ;;
|
|
|
|
- esac
|
|
|
|
- fi
|
|
|
|
-
|
|
|
|
long_opts="install:,build::,outputdir:,mcversion:,arch:,mcrepo:,compat,"
|
|
long_opts="install:,build::,outputdir:,mcversion:,arch:,mcrepo:,compat,"
|
|
long_opts+="restorefile:,betapass:,"
|
|
long_opts+="restorefile:,betapass:,"
|
|
long_opts+="service-type:,service:,services:,"
|
|
long_opts+="service-type:,service:,services:,"
|
|
- long_opts+="version,debug,verbose,help,uninstall,tests,yes,auto,no-self-update,"
|
|
|
|
|
|
+ long_opts+="version,debug,verbose,help,uninstall,yes,auto,no-update,"
|
|
long_opts+="createrepo::,createrepo-webroot:,createrepo-user:,"
|
|
long_opts+="createrepo::,createrepo-webroot:,createrepo-user:,"
|
|
long_opts+="vncpass:,display:,container:"
|
|
long_opts+="vncpass:,display:,container:"
|
|
short_opts="+i:b::s:c:uyvdh"
|
|
short_opts="+i:b::s:c:uyvdh"
|
|
|
|
|
|
- # Reset DEBUG and catch with getopt
|
|
|
|
|
|
+ # Reset DEBUG and recatch properly with getopt
|
|
declare -g DEBUG=0
|
|
declare -g DEBUG=0
|
|
|
|
|
|
if input=$(getopt -o $short_opts -l $long_opts -- "$@"); then
|
|
if input=$(getopt -o $short_opts -l $long_opts -- "$@"); then
|
|
@@ -165,103 +130,43 @@ parse_input() {
|
|
--install|-i)
|
|
--install|-i)
|
|
shift
|
|
shift
|
|
case $1 in
|
|
case $1 in
|
|
- local|rpm)
|
|
|
|
- BUILD_SWITCH=1
|
|
|
|
- LOCAL_INSTALL_SWITCH=1
|
|
|
|
- ;;
|
|
|
|
- repo|remote)
|
|
|
|
- REPO_INSTALL_SWITCH=1
|
|
|
|
- ;;
|
|
|
|
|
|
+ local|rpm|deb) BUILD_SWITCH=1; LOCAL_INSTALL_SWITCH=1 ;;
|
|
|
|
+ repo|remote) REPO_INSTALL_SWITCH=1 ;;
|
|
esac
|
|
esac
|
|
;;
|
|
;;
|
|
- --build|-b)
|
|
|
|
- BUILD_SWITCH=1
|
|
|
|
- shift && BUILD_TARGET="$1"
|
|
|
|
- ;;
|
|
|
|
- --outputdir)
|
|
|
|
- shift && OUTPUT_DIR="$1"
|
|
|
|
- ;;
|
|
|
|
|
|
+ --build|-b) BUILD_SWITCH=1; shift; BUILD_TARGET="$1" ;;
|
|
|
|
+ --outputdir) shift && OUTPUT_DIR="$1" ;;
|
|
--mcversion)
|
|
--mcversion)
|
|
shift
|
|
shift
|
|
if [[ $1 =~ ([0-9]+.[0-9]+.[0-9]+) ]]; then
|
|
if [[ $1 =~ ([0-9]+.[0-9]+.[0-9]+) ]]; then
|
|
USER_MC_VERSION="$1"
|
|
USER_MC_VERSION="$1"
|
|
else
|
|
else
|
|
- err "Bad --mcversion"
|
|
|
|
- print_help
|
|
|
|
- exit 1
|
|
|
|
|
|
+ err "Bad --mcversion"; print_help; exit 1
|
|
fi
|
|
fi
|
|
;;
|
|
;;
|
|
- --arch)
|
|
|
|
- shift
|
|
|
|
- echo "Switching from $ARCH to $1 architecture"
|
|
|
|
- ARCH="$1"
|
|
|
|
- ;;
|
|
|
|
- --mcrepo)
|
|
|
|
- shift && MC_REPO="$1"
|
|
|
|
- ;;
|
|
|
|
- --restorefile)
|
|
|
|
- shift && MJR_RESTORE_FILE="$1"
|
|
|
|
- ;;
|
|
|
|
- --betapass)
|
|
|
|
- shift && BETAPASS="$1"
|
|
|
|
- ;;
|
|
|
|
- --service-type)
|
|
|
|
- shift && SERVICE_TYPE="$1"
|
|
|
|
- ;;
|
|
|
|
- --service|-s|--services)
|
|
|
|
- shift && SERVICES+=("$1")
|
|
|
|
- ;;
|
|
|
|
- --createrepo)
|
|
|
|
- BUILD_SWITCH=1
|
|
|
|
- CREATEREPO_SWITCH=1
|
|
|
|
- shift && REPO_TARGET="$1" && BUILD_TARGET="$1"
|
|
|
|
- ;;
|
|
|
|
- --createrepo-webroot)
|
|
|
|
- shift && CREATEREPO_WEBROOT="$1"
|
|
|
|
- ;;
|
|
|
|
- --createrepo-user)
|
|
|
|
- shift && CREATEREPO_USER="$1"
|
|
|
|
- ;;
|
|
|
|
- --vncpass)
|
|
|
|
- shift && VNCPASS="$1"
|
|
|
|
- ;;
|
|
|
|
- --display)
|
|
|
|
- shift && USER_DISPLAY="$1"
|
|
|
|
- ;;
|
|
|
|
- --compat)
|
|
|
|
- COMPAT_SWITCH=1
|
|
|
|
- BUILD_SWITCH=1
|
|
|
|
- ;;
|
|
|
|
- --no-self-update)
|
|
|
|
- SELF_UPDATE=0
|
|
|
|
- ;;
|
|
|
|
- --container|-c)
|
|
|
|
- shift && CONTAINERS+=("$1")
|
|
|
|
- ;;
|
|
|
|
- --yes|-y|--auto)
|
|
|
|
- YES_SWITCH=1
|
|
|
|
- ;;
|
|
|
|
- --version|-v)
|
|
|
|
- echo "Version: $SCRIPT_VERSION"
|
|
|
|
- exit 0
|
|
|
|
- ;;
|
|
|
|
- --debug|-d|--verbose)
|
|
|
|
- DEBUG=1
|
|
|
|
- ;;
|
|
|
|
- --help|-h)
|
|
|
|
- print_help
|
|
|
|
- exit
|
|
|
|
- ;;
|
|
|
|
- --uninstall|-u)
|
|
|
|
- UNINSTALL_SWITCH=1
|
|
|
|
- ;;
|
|
|
|
- --tests)
|
|
|
|
- TEST_SWITCH=1
|
|
|
|
- ;;
|
|
|
|
- --)
|
|
|
|
- shift
|
|
|
|
- break
|
|
|
|
|
|
+ --arch) shift; echo "Switching arch from $ARCH to $1"; ARCH="$1" ;;
|
|
|
|
+ --mcrepo) shift && MC_REPO="$1" ;;
|
|
|
|
+ --restorefile) shift && MJR_FILE="$1" ;;
|
|
|
|
+ --betapass) shift && BETAPASS="$1" ;;
|
|
|
|
+ --service-type) shift && SERVICE_TYPE="$1" ;;
|
|
|
|
+ --service|-s|--services) shift && SERVICES+=("$1") ;;
|
|
|
|
+ --createrepo)
|
|
|
|
+ BUILD_SWITCH=1; CREATEREPO_SWITCH=1
|
|
|
|
+ shift; CREATEREPO_TARGET="$1"; BUILD_TARGET="$1"
|
|
;;
|
|
;;
|
|
|
|
+ --createrepo-webroot) shift && CREATEREPO_WEBROOT="$1" ;;
|
|
|
|
+ --createrepo-user) shift && CREATEREPO_USER="$1" ;;
|
|
|
|
+ --vncpass) shift && VNCPASS="$1" ;;
|
|
|
|
+ --display) shift && USER_DISPLAY="$1" ;;
|
|
|
|
+ --compat) COMPAT_SWITCH=1; BUILD_SWITCH=1 ;;
|
|
|
|
+ --no-update) UPDATE_SWITCH=0 ;;
|
|
|
|
+ --container|-c) shift && CONTAINERS+=("$1") ;;
|
|
|
|
+ --yes|-y|--auto) YES_SWITCH=1 ;;
|
|
|
|
+ --version|-v) echo "Version: $SCRIPT_VERSION"; exit 0 ;;
|
|
|
|
+ --debug|-d|--verbose) DEBUG=1 ;;
|
|
|
|
+ --help|-h) print_help; exit 0 ;;
|
|
|
|
+ --uninstall|-u) UNINSTALL_SWITCH=1 ;;
|
|
|
|
+ --) shift; break ;;
|
|
esac
|
|
esac
|
|
shift
|
|
shift
|
|
done
|
|
done
|
|
@@ -271,37 +176,78 @@ parse_input() {
|
|
fi
|
|
fi
|
|
}
|
|
}
|
|
|
|
|
|
-# @description Perform OS detection and fallback
|
|
|
|
-# Generate OS-specific functions
|
|
|
|
|
|
+# @description Perform OS detection and generate OS-specific functions
|
|
|
|
+# @see parse_input
|
|
init() {
|
|
init() {
|
|
debug "Running: ${FUNCNAME[0]}"
|
|
debug "Running: ${FUNCNAME[0]}"
|
|
|
|
|
|
- declare -g ID RPM_MGR ARCH NAME
|
|
|
|
|
|
+ declare -g USER
|
|
|
|
+ declare -g SCRIPT_PATH; SCRIPT_PATH=$(readlink -f "${BASH_SOURCE[0]}")
|
|
|
|
+ declare -g SCRIPT_DIR; SCRIPT_DIR=$(readlink -f "$(dirname "${BASH_SOURCE[0]}")")
|
|
|
|
+ declare -g OUTPUT_DIR="$SCRIPT_DIR/output"
|
|
|
|
+ declare -g CREATEREPO_WEBROOT="/var/www/jriver"
|
|
|
|
+ declare -g CREATEREPO_USER="$USER" # can be root
|
|
|
|
+ declare -g ID RPM_MGR ARCH NAME \
|
|
|
|
+ BUILD_SWITCH REPO_INSTALL_SWITCH LOCAL_INSTALL_SWITCH \
|
|
|
|
+ COMPAT_SWITCH CREATEREPO_SWITCH UNINSTALL_SWITCH \
|
|
|
|
+ YES_SWITCH USER_MC_VERSION MJR_FILE BETAPASS SERVICE_TYPE \
|
|
|
|
+ VNCPASS USER_DISPLAY BUILD_TARGET CREATEREPO_TARGET
|
|
declare -ga PKG_INSTALL PKG_REMOVE PKG_UPDATE PKG_QUERY
|
|
declare -ga PKG_INSTALL PKG_REMOVE PKG_UPDATE PKG_QUERY
|
|
|
|
+ declare -ga SERVICES CONTAINERS
|
|
|
|
|
|
- echo "Starting installJRMC"
|
|
|
|
- (( DEBUG )) || echo "To enable debugging output, use --debug or -d"
|
|
|
|
- (( EUID == 0 )) && err "Running as root user"
|
|
|
|
|
|
+ # Try to save users from themselves
|
|
|
|
+ (( EUID == 0 )) && err "Running as root user but continuing"
|
|
|
|
|
|
- if [[ -f /etc/os-release ]]; then
|
|
|
|
- source /etc/os-release
|
|
|
|
|
|
+ # Set default user
|
|
|
|
+ if [[ -n $SUDO_USER ]]; then
|
|
|
|
+ err "Sudo detected, attempting to continue as $SUDO_USER but this is not recommended"
|
|
|
|
+ USER="${SUDO_USER:-$USER}"
|
|
|
|
+ fi
|
|
|
|
+
|
|
|
|
+ # Set default command arguments and/or parse user input
|
|
|
|
+ if [[ $# -eq 0 ]]; then
|
|
|
|
+ debug "Automatically setting --install repo"
|
|
|
|
+ REPO_INSTALL_SWITCH=1
|
|
else
|
|
else
|
|
- err "/etc/os-release not found"
|
|
|
|
- err "Your OS is unsupported"
|
|
|
|
- print_help
|
|
|
|
- exit 1
|
|
|
|
|
|
+ # Use --install=repo by default for simple arguments
|
|
|
|
+ if [[ $# -le 2 ]]; then
|
|
|
|
+ case "$1" in
|
|
|
|
+ --debug| -d| --verbose| -y| --yes| --auto| --mcrepo| --mcversion| \
|
|
|
|
+ --arch| --betapass| --restorefile| --outputdir| --no-update)
|
|
|
|
+ REPO_INSTALL_SWITCH=1
|
|
|
|
+ ;;
|
|
|
|
+ --compat)
|
|
|
|
+ if [[ $# -eq 1 ]]; then
|
|
|
|
+ BUILD_SWITCH=1
|
|
|
|
+ LOCAL_INSTALL_SWITCH=1
|
|
|
|
+ fi
|
|
|
|
+ ;;
|
|
|
|
+ esac
|
|
|
|
+ fi
|
|
|
|
+ # Parse input commands with getopt
|
|
|
|
+ parse_input "$@"
|
|
fi
|
|
fi
|
|
|
|
|
|
|
|
+ # Run the self-updater if enabled
|
|
|
|
+ ((UPDATE_SWITCH)) && update "$@"
|
|
|
|
+
|
|
|
|
+ # Get host information
|
|
|
|
+ [[ -f /etc/os-release ]] && source /etc/os-release
|
|
|
|
+
|
|
# Detect architecture and translate to MC convention
|
|
# Detect architecture and translate to MC convention
|
|
- ARCH=$(uname -m)
|
|
|
|
- case $ARCH in
|
|
|
|
- x86_64) ARCH="amd64" ;;
|
|
|
|
- aarch64) ARCH="arm64" ;;
|
|
|
|
- esac
|
|
|
|
|
|
+ if ARCH=$(uname -m); then
|
|
|
|
+ case $ARCH in
|
|
|
|
+ x86_64) ARCH="amd64" ;;
|
|
|
|
+ aarch64) ARCH="arm64" ;;
|
|
|
|
+ esac
|
|
|
|
+ else
|
|
|
|
+ ARCH="amd64"
|
|
|
|
+ err "Failed to detect host arch, using default: $ARCH"
|
|
|
|
+ fi
|
|
|
|
|
|
debug "Detected host platform: $ID $VERSION_ID $ARCH"
|
|
debug "Detected host platform: $ID $VERSION_ID $ARCH"
|
|
|
|
|
|
- # Normalize ID and set distro-specific vars
|
|
|
|
|
|
+ # Normalize ID and set host-specific vars
|
|
case $ID in
|
|
case $ID in
|
|
debian|arch) ;;
|
|
debian|arch) ;;
|
|
centos|fedora)
|
|
centos|fedora)
|
|
@@ -309,7 +255,22 @@ init() {
|
|
;;
|
|
;;
|
|
rhel|almalinux) ID="centos" ;;
|
|
rhel|almalinux) ID="centos" ;;
|
|
linuxmint|neon|zorin|*ubuntu*) ID="ubuntu" ;;
|
|
linuxmint|neon|zorin|*ubuntu*) ID="ubuntu" ;;
|
|
- *suse*) ID="suse" ;;
|
|
|
|
|
|
+ *suse*)
|
|
|
|
+ ID="suse"
|
|
|
|
+ # Currently there is no remote repository for SUSE
|
|
|
|
+ # installJRMC can easily build one but I'd rather a SUSEian provide it
|
|
|
|
+ # So use local rpmbuild method by default for SUSE
|
|
|
|
+ if [[ $# -le 2 ]]; then
|
|
|
|
+ case "$1" in
|
|
|
|
+ --debug| -d| --verbose| -y| --yes| --auto| --mcrepo| --mcversion| \
|
|
|
|
+ --arch| --betapass| --restorefile| --outputdir| --no-update)
|
|
|
|
+ REPO_INSTALL_SWITCH=0
|
|
|
|
+ BUILD_SWITCH=1
|
|
|
|
+ LOCAL_INSTALL_SWITCH=1
|
|
|
|
+ ;;
|
|
|
|
+ esac
|
|
|
|
+ fi
|
|
|
|
+ ;;
|
|
raspbian) ID="debian" ;;
|
|
raspbian) ID="debian" ;;
|
|
*)
|
|
*)
|
|
err "Auto-detecting distro, this is unreliable and --compat may be required"
|
|
err "Auto-detecting distro, this is unreliable and --compat may be required"
|
|
@@ -334,29 +295,27 @@ init() {
|
|
fi
|
|
fi
|
|
esac
|
|
esac
|
|
|
|
|
|
- # Set defaults
|
|
|
|
|
|
+ # Set default targets
|
|
BUILD_TARGET="${BUILD_TARGET:-$ID}"
|
|
BUILD_TARGET="${BUILD_TARGET:-$ID}"
|
|
- REPO_TARGET="${REPO_TARGET:-$ID}"
|
|
|
|
|
|
+ CREATEREPO_TARGET="${CREATEREPO_TARGET:-$ID}"
|
|
|
|
|
|
- # Match the MC repo to the system
|
|
|
|
|
|
+ # Match the MC repo to the system codename
|
|
if [[ $ID == debian || $ID == ubuntu ]]; then
|
|
if [[ $ID == debian || $ID == ubuntu ]]; then
|
|
- MC_DEFAULT_REPO=${UBUNTU_CODENAME:-${VERSION_CODENAME:-$MC_DEFAULT_REPO}}
|
|
|
|
|
|
+ MC_REPO=${UBUNTU_CODENAME:-${VERSION_CODENAME:-$MC_REPO}}
|
|
fi
|
|
fi
|
|
|
|
|
|
# Change the repo for user-specified legacy versions
|
|
# Change the repo for user-specified legacy versions
|
|
- if [[ -n $USER_MC_VERSION ]]; then
|
|
|
|
- case $MC_MVERSION in
|
|
|
|
- 2[0-6]) MC_DEFAULT_REPO="jessie" ;;
|
|
|
|
- 2[7-9]|30) MC_DEFAULT_REPO="buster" ;;
|
|
|
|
- 31) MC_DEFAULT_REPO="bullseye" ;;
|
|
|
|
- # After this point, things get messy with multiple repos for the same version
|
|
|
|
- esac
|
|
|
|
- fi
|
|
|
|
|
|
+ case $MC_MVERSION in
|
|
|
|
+ 2[0-6]) MC_REPO="jessie" ;;
|
|
|
|
+ 2[7-9]|30) MC_REPO="buster" ;;
|
|
|
|
+ 31) MC_REPO="bullseye" ;;
|
|
|
|
+ # After this point, things get messy with multiple repos for the same MC version
|
|
|
|
+ esac
|
|
|
|
|
|
debug "Using host platform: $ID $VERSION_ID"
|
|
debug "Using host platform: $ID $VERSION_ID"
|
|
- debug "Using MC repository: ${MC_REPO:-$MC_DEFAULT_REPO}"
|
|
|
|
|
|
+ debug "Using MC repository: $MC_REPO"
|
|
|
|
|
|
- # Set distro-specific package manager commands
|
|
|
|
|
|
+ # Set distro-specific package manager commands for normalized IDs
|
|
case $ID in
|
|
case $ID in
|
|
fedora|centos)
|
|
fedora|centos)
|
|
PKG_INSTALL=(execute sudo "$RPM_MGR" install -y)
|
|
PKG_INSTALL=(execute sudo "$RPM_MGR" install -y)
|
|
@@ -414,7 +373,7 @@ set_mc_version() {
|
|
&& buildah run "$cnt" -- sh -c \
|
|
&& buildah run "$cnt" -- sh -c \
|
|
"apk add apt" &>/dev/null \
|
|
"apk add apt" &>/dev/null \
|
|
&& buildah run "$cnt" -- sh -c \
|
|
&& buildah run "$cnt" -- sh -c \
|
|
- "echo 'deb [trusted=no arch=amd64,i386,armhf,arm64] http://dist.jriver.com/latest/mediacenter/ ${MC_REPO:-$MC_DEFAULT_REPO} main' > /etc/apt/sources.list 2>&1" &>/dev/null \
|
|
|
|
|
|
+ "echo 'deb [trusted=no arch=amd64,i386,armhf,arm64] http://dist.jriver.com/latest/mediacenter/ $MC_REPO main' > /etc/apt/sources.list 2>&1" &>/dev/null \
|
|
&& buildah run "$cnt" -- sh -c \
|
|
&& buildah run "$cnt" -- sh -c \
|
|
"apt update --allow-insecure-repositories &>/dev/null" &>/dev/null \
|
|
"apt update --allow-insecure-repositories &>/dev/null" &>/dev/null \
|
|
&& MC_VERSION=$(buildah run "$cnt" -- apt-cache policy mediacenter?? | grep Candidate | awk '{print $2}' | sort -V | tail -n1) &>/dev/null \
|
|
&& MC_VERSION=$(buildah run "$cnt" -- apt-cache policy mediacenter?? | grep Candidate | awk '{print $2}' | sort -V | tail -n1) &>/dev/null \
|
|
@@ -450,7 +409,7 @@ set_mc_version() {
|
|
esac
|
|
esac
|
|
fi
|
|
fi
|
|
|
|
|
|
- echo "Using MC version $MC_VERSION from the ${MC_REPO:-$MC_DEFAULT_REPO} repo (determined by $MC_VERSION_SOURCE)"
|
|
|
|
|
|
+ echo "Using MC version $MC_VERSION from the $MC_REPO repo (determined by $MC_VERSION_SOURCE)"
|
|
return 0
|
|
return 0
|
|
}
|
|
}
|
|
|
|
|
|
@@ -581,7 +540,7 @@ install_mc_repo() {
|
|
install_package wget
|
|
install_package wget
|
|
debug "Adding MC repository to $deb_repo_file"
|
|
debug "Adding MC repository to $deb_repo_file"
|
|
sudo bash -c "cat <<-EOF > $deb_repo_file
|
|
sudo bash -c "cat <<-EOF > $deb_repo_file
|
|
- deb [trusted=yes arch=amd64,i386,armhf,arm64] http://dist.jriver.com/latest/mediacenter/ ${MC_REPO:-$MC_DEFAULT_REPO} main
|
|
|
|
|
|
+ deb [trusted=yes arch=amd64,i386,armhf,arm64] http://dist.jriver.com/latest/mediacenter/ $MC_REPO main
|
|
EOF"
|
|
EOF"
|
|
debug "Installing JRiver Media Center RPM key"
|
|
debug "Installing JRiver Media Center RPM key"
|
|
wget -qO- "http://dist.jriver.com/mediacenter@jriver.com.gpg.key" |
|
|
wget -qO- "http://dist.jriver.com/mediacenter@jriver.com.gpg.key" |
|
|
@@ -1024,7 +983,7 @@ link_ssl_certs() {
|
|
done
|
|
done
|
|
}
|
|
}
|
|
|
|
|
|
-# @description Restore the mjr license file from MJR_RESTORE_FILE or other common locations
|
|
|
|
|
|
+# @description Restore the mjr license file from MJR_FILE or other common locations
|
|
restore_license() {
|
|
restore_license() {
|
|
debug "Running: ${FUNCNAME[0]}"
|
|
debug "Running: ${FUNCNAME[0]}"
|
|
|
|
|
|
@@ -1054,7 +1013,7 @@ restore_license() {
|
|
|
|
|
|
debug "Latest mjrfile: $newest"
|
|
debug "Latest mjrfile: $newest"
|
|
|
|
|
|
- for f in "$MJR_RESTORE_FILE" "$newest"; do
|
|
|
|
|
|
+ for f in "$MJR_FILE" "$newest"; do
|
|
if [[ -f $f ]]; then
|
|
if [[ -f $f ]]; then
|
|
execute "mediacenter$MC_MVERSION" "/RestoreFromFile" "$f"
|
|
execute "mediacenter$MC_MVERSION" "/RestoreFromFile" "$f"
|
|
fi
|
|
fi
|
|
@@ -1393,7 +1352,7 @@ service_jriver-createrepo() {
|
|
|
|
|
|
[Service]
|
|
[Service]
|
|
$USER_STRING
|
|
$USER_STRING
|
|
- ExecStart=$SCRIPT_DIR/installJRMC --outputdir=$OUTPUT_DIR --createrepo=$REPO_TARGET --createrepo-webroot=$CREATEREPO_WEBROOT --createrepo-user=$CREATEREPO_USER
|
|
|
|
|
|
+ ExecStart=$SCRIPT_DIR/installJRMC --outputdir=$OUTPUT_DIR --createrepo=$CREATEREPO_TARGET --createrepo-webroot=$CREATEREPO_WEBROOT --createrepo-user=$CREATEREPO_USER
|
|
|
|
|
|
[Install]
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
WantedBy=multi-user.target
|
|
@@ -1503,7 +1462,7 @@ uninstall() {
|
|
}
|
|
}
|
|
|
|
|
|
# @description Checks for installJRMC update and re-executes, if necessary
|
|
# @description Checks for installJRMC update and re-executes, if necessary
|
|
-update_self() {
|
|
|
|
|
|
+update() {
|
|
debug "Running: ${FUNCNAME[0]} $*"
|
|
debug "Running: ${FUNCNAME[0]} $*"
|
|
|
|
|
|
local script_url="https://git.bryanroessler.com/bryan/installJRMC/raw/master/installJRMC"
|
|
local script_url="https://git.bryanroessler.com/bryan/installJRMC/raw/master/installJRMC"
|
|
@@ -1539,7 +1498,7 @@ update_self() {
|
|
after_pull_hash=$(git -C "$SCRIPT_DIR" rev-parse HEAD)
|
|
after_pull_hash=$(git -C "$SCRIPT_DIR" rev-parse HEAD)
|
|
if [[ "$before_pull_hash" != "$after_pull_hash" ]]; then
|
|
if [[ "$before_pull_hash" != "$after_pull_hash" ]]; then
|
|
echo "installJRMC repository updated. Restarting script..."
|
|
echo "installJRMC repository updated. Restarting script..."
|
|
- exec "$SCRIPT_PATH" "$@" "--no-self-update"
|
|
|
|
|
|
+ exec "$SCRIPT_PATH" "$@" "--no-update"
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
|
|
@@ -1563,7 +1522,7 @@ update_self() {
|
|
echo "Updating installJRMC $SCRIPT_VERSION to $remote_version"
|
|
echo "Updating installJRMC $SCRIPT_VERSION to $remote_version"
|
|
execute mv "$tmp" "$SCRIPT_PATH"
|
|
execute mv "$tmp" "$SCRIPT_PATH"
|
|
execute chmod +x "$SCRIPT_PATH"
|
|
execute chmod +x "$SCRIPT_PATH"
|
|
- exec "$SCRIPT_PATH" "$@" "--no-self-update"
|
|
|
|
|
|
+ exec "$SCRIPT_PATH" "$@" "--no-update"
|
|
fi
|
|
fi
|
|
|
|
|
|
rm -f "$tmp"
|
|
rm -f "$tmp"
|
|
@@ -1573,20 +1532,16 @@ update_self() {
|
|
main() {
|
|
main() {
|
|
debug "Running: ${FUNCNAME[0]} $*"
|
|
debug "Running: ${FUNCNAME[0]} $*"
|
|
|
|
|
|
- parse_input "$@"
|
|
|
|
- init
|
|
|
|
-
|
|
|
|
- debug "Debugging on"
|
|
|
|
- debug "installJRMC version: $SCRIPT_VERSION"
|
|
|
|
-
|
|
|
|
- ((SELF_UPDATE)) && update_self "$@"
|
|
|
|
-
|
|
|
|
- if ((TEST_SWITCH)); then
|
|
|
|
- echo "Running tests, all other options are skipped"
|
|
|
|
- tests
|
|
|
|
- exit
|
|
|
|
|
|
+ echo "Starting installJRMC"
|
|
|
|
+ if (( DEBUG )); then
|
|
|
|
+ echo "Debugging on"
|
|
|
|
+ echo "installJRMC version: $SCRIPT_VERSION"
|
|
|
|
+ else
|
|
|
|
+ echo "To enable debugging output, use --debug or -d"
|
|
fi
|
|
fi
|
|
|
|
|
|
|
|
+ init "$@"
|
|
|
|
+
|
|
set_mc_version
|
|
set_mc_version
|
|
|
|
|
|
if (( UNINSTALL_SWITCH )); then
|
|
if (( UNINSTALL_SWITCH )); then
|
|
@@ -1655,7 +1610,7 @@ main() {
|
|
[[ -d $OUTPUT_DIR/SOURCES ]] || execute mkdir -p "$OUTPUT_DIR/SOURCES"
|
|
[[ -d $OUTPUT_DIR/SOURCES ]] || execute mkdir -p "$OUTPUT_DIR/SOURCES"
|
|
acquire_deb || { err "Could not download Media Center DEB package"; return 1; }
|
|
acquire_deb || { err "Could not download Media Center DEB package"; return 1; }
|
|
|
|
|
|
- if [[ $BUILD_TARGET =~ (centos|fedora|suse) || $REPO_TARGET =~ (centos|fedora|suse) ]]; then
|
|
|
|
|
|
+ if [[ $BUILD_TARGET =~ (centos|fedora|suse) || $CREATEREPO_TARGET =~ (centos|fedora|suse) ]]; then
|
|
install_package "dpkg" "rpm-build"
|
|
install_package "dpkg" "rpm-build"
|
|
[[ -d $OUTPUT_DIR/SPECS ]] || execute mkdir -p "$OUTPUT_DIR/SPECS"
|
|
[[ -d $OUTPUT_DIR/SPECS ]] || execute mkdir -p "$OUTPUT_DIR/SPECS"
|
|
build_rpm
|
|
build_rpm
|