|
@@ -20,11 +20,11 @@
|
|
|
shopt -s extglob
|
|
|
|
|
|
declare -g SCRIPT_VERSION="1.6.0-dev"
|
|
|
+declare -g MC_VERSION="33.0.72" # do find all replace
|
|
|
declare -g MC_REPO="bullseye" # should match the MC_VERSION
|
|
|
# declare -g MC_REPO="bookworm" # should match the MC_VERSION
|
|
|
-declare -g MC_VERSION="33.0.72" # 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,89.0.html" # MC34
|
|
|
+declare -g BOARD_ID="86.0" # MC33
|
|
|
+# declare -g BOARD_ID="89.0" # MC34
|
|
|
declare -gi UPDATE_SWITCH=1 # set to 0 to disable automatic self-update
|
|
|
declare -g SCRIPT_URL="https://git.bryanroessler.com/bryan/installJRMC/raw/master/installJRMC"
|
|
|
# declare -g SCRIPT_URL="https://raw.githubusercontent.com/cryobry/installJRMC/refs/heads/master/installJRMC"
|
|
@@ -139,7 +139,7 @@ parse_input() {
|
|
|
--install|-i)
|
|
|
shift
|
|
|
case $1 in
|
|
|
- local|rpm|deb) BUILD_SWITCH=1; LOCAL_INSTALL_SWITCH=1 ;;
|
|
|
+ local|rpm|deb) BUILD_SWITCH=1 LOCAL_INSTALL_SWITCH=1 ;;
|
|
|
repo|remote) REPO_INSTALL_SWITCH=1 ;;
|
|
|
container) CONTAINER_INSTALL_SWITCH=1 ;;
|
|
|
snap) SNAP_INSTALL_SWITCH=1 ;;
|
|
@@ -150,27 +150,28 @@ parse_input() {
|
|
|
--build|-b) BUILD_SWITCH=1; shift; BUILD_TARGET="$1" ;;
|
|
|
--outputdir) shift; OUTPUT_DIR="$1" ;;
|
|
|
--mcversion) shift;
|
|
|
- if [[ $1 =~ ^[0-9]+\.[0-9]+\.[0-9]+-[0-9]+$ ]]; then
|
|
|
- USER_MC_VERSION="${1%-*}"
|
|
|
- USER_MC_RELEASE="${1#*-}"
|
|
|
- elif [[ $1 =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
|
- USER_MC_VERSION="$1"
|
|
|
- elif [[ $1 =~ ^[0-9][0-9]$ ]]; then
|
|
|
- case $1 in
|
|
|
- 33) ;; # use update check to determine latest version
|
|
|
- 32) USER_MC_VERSION="32.0.58" ;;
|
|
|
- 31) USER_MC_VERSION="31.0.83" ;;
|
|
|
- 30) USER_MC_VERSION="30.0.96" ;;
|
|
|
- 29) USER_MC_VERSION="29.0.91" ;;
|
|
|
- 28) USER_MC_VERSION="28.0.110" ;;
|
|
|
- 27) USER_MC_VERSION="27.0.88" ;;
|
|
|
- 26) USER_MC_VERSION="26.0.107" ;;
|
|
|
- 25) USER_MC_VERSION="25.0.114" ;;
|
|
|
- 24) USER_MC_VERSION="24.0.78" ;;
|
|
|
- 23) USER_MC_VERSION="23.0.104" ;;
|
|
|
- 22) USER_MC_VERSION="22.0.102" ;;
|
|
|
- 21) USER_MC_VERSION="21.0.90" ;;
|
|
|
- 20) USER_MC_VERSION="20.0.131" ;;
|
|
|
+ if [[ $1 =~ ^([0-9]+)(\.[0-9]+\.[0-9]+)?(-([0-9]+))?$ ]]; then
|
|
|
+ # If we get the full version, use it
|
|
|
+ [[ -n ${BASH_REMATCH[2]} ]] && USER_MC_VERSION="${BASH_REMATCH[1]}${BASH_REMATCH[2]}"
|
|
|
+ USER_MC_RELEASE="${BASH_REMATCH[4]:-1}"
|
|
|
+
|
|
|
+ # Set major version defaults
|
|
|
+ case "${BASH_REMATCH[1]}" in
|
|
|
+ 34) MC_VERSION="${USER_MC_VERSION:-$MC_VERSION}" MC_REPO="bookworm" BOARD_ID="89.0" ;;
|
|
|
+ 33) MC_VERSION="${USER_MC_VERSION:-33.0.72}" MC_REPO="bullseye" BOARD_ID="86.0" ;;
|
|
|
+ 32) MC_VERSION="${USER_MC_VERSION:-32.0.58}" MC_REPO="bullseye" BOARD_ID="83.0" ;;
|
|
|
+ 31) MC_VERSION="${USER_MC_VERSION:-31.0.83}" MC_REPO="bullseye" BOARD_ID="80.0" ;;
|
|
|
+ 30) MC_VERSION="${USER_MC_VERSION:-30.0.96}" MC_REPO="buster" BOARD_ID="76.0" ;;
|
|
|
+ 29) MC_VERSION="${USER_MC_VERSION:-29.0.91}" MC_REPO="buster" BOARD_ID="74.0" ;;
|
|
|
+ 28) MC_VERSION="${USER_MC_VERSION:-28.0.110}" MC_REPO="buster" BOARD_ID="71.0" ;;
|
|
|
+ 27) MC_VERSION="${USER_MC_VERSION:-27.0.88}" MC_REPO="buster" BOARD_ID="67.0" ;;
|
|
|
+ 26) MC_VERSION="${USER_MC_VERSION:-26.0.107}" MC_REPO="jessie" BOARD_ID="64.0" ;;
|
|
|
+ 25) MC_VERSION="${USER_MC_VERSION:-25.0.114}" MC_REPO="jessie" BOARD_ID="62.0" ;;
|
|
|
+ 24) MC_VERSION="${USER_MC_VERSION:-24.0.78}" MC_REPO="jessie" BOARD_ID="58.0" ;;
|
|
|
+ 23) MC_VERSION="${USER_MC_VERSION:-23.0.104}" MC_REPO="jessie" BOARD_ID="54.0" ;;
|
|
|
+ 22) MC_VERSION="${USER_MC_VERSION:-22.0.102}" MC_REPO="jessie" BOARD_ID="51.0" ;;
|
|
|
+ 21) MC_VERSION="${USER_MC_VERSION:-21.0.90}" MC_REPO="jessie" BOARD_ID="44.0" ;;
|
|
|
+ 20) MC_VERSION="${USER_MC_VERSION:-20.0.131}" MC_REPO="jessie" BOARD_ID="35.0";;
|
|
|
*) err "Bad --mcversion"; print_help; exit 1 ;;
|
|
|
esac
|
|
|
else
|
|
@@ -214,11 +215,6 @@ parse_input() {
|
|
|
REPO_INSTALL_SWITCH=1
|
|
|
fi
|
|
|
|
|
|
- # Print some warnings for unsupported argument combinations
|
|
|
- if [[ -n $USER_MC_REPO ]] && ((LOCAL_INSTALL_SWITCH)); then
|
|
|
- err "--install=local is incompatible with --mcrepo as only the default ($MC_REPO) DEB is available"
|
|
|
- fi
|
|
|
-
|
|
|
if [[ -n $BETA_PASS ]] && ((REPO_INSTALL_SWITCH)); then
|
|
|
echo "Warning: not all repositories have beta channels"
|
|
|
echo "If the MC package is unavailable, try using --mcrepo to select another repository"
|
|
@@ -341,22 +337,11 @@ init() {
|
|
|
BUILD_TARGET="${BUILD_TARGET:-$ID}"
|
|
|
CREATEREPO_TARGET="${CREATEREPO_TARGET:-$ID}"
|
|
|
|
|
|
- # Match the MC repo to the system codename
|
|
|
- if [[ -z $USER_MC_REPO && ($ID == debian || $ID == ubuntu) ]]; then
|
|
|
+ # Match the MC repo to the host unless specified by user
|
|
|
+ if [[ $ID =~ debian|ubuntu && -z $USER_MC_REPO && -z $USER_MC_VERSION ]]; then
|
|
|
MC_REPO=${UBUNTU_CODENAME:-${VERSION_CODENAME:-$MC_REPO}}
|
|
|
fi
|
|
|
|
|
|
- # Use the correct repo for legacy MC versions
|
|
|
- if [[ -n $USER_MC_VERSION ]]; then
|
|
|
- case ${USER_MC_VERSION%%.*} in # get MVERSION from user input
|
|
|
- 2[0-6]) USER_MC_REPO="jessie" ;;
|
|
|
- 2[7-9]|30) USER_MC_REPO="buster" ;;
|
|
|
- 31) USER_MC_REPO="bullseye" ;;
|
|
|
- # After this point, things get messy with multiple repos for the same MC version
|
|
|
- # Just use the default repo
|
|
|
- esac
|
|
|
- fi
|
|
|
-
|
|
|
# Set distro-specific package manager commands for normalized IDs
|
|
|
case $ID in
|
|
|
fedora|centos)
|
|
@@ -401,12 +386,11 @@ init() {
|
|
|
# Don't check for latest MC version if set by user or using --install=repo only
|
|
|
if [[ -z $USER_MC_VERSION ]] \
|
|
|
&& ((BUILD_SWITCH || LOCAL_INSTALL_SWITCH || CREATEREPO_SWITCH)); then
|
|
|
- # Retrieves the latest MC version number from the specified MC_REPO
|
|
|
- get_latest_mc_version "${USER_MC_REPO:-$MC_REPO}"
|
|
|
+ # Retrieves the latest MC version number
|
|
|
+ get_latest_mc_version
|
|
|
fi
|
|
|
|
|
|
# Set MC version variables
|
|
|
- MC_REPO="${USER_MC_REPO:-$MC_REPO}"
|
|
|
MC_VERSION="${USER_MC_VERSION:-$MC_VERSION}"
|
|
|
MC_RELEASE="${USER_MC_RELEASE:-1}"
|
|
|
MC_MVERSION="${MC_VERSION%%.*}"
|
|
@@ -421,14 +405,11 @@ init() {
|
|
|
debian|ubuntu) MC_PKG+="=$MC_VERSION" ;;
|
|
|
esac
|
|
|
fi
|
|
|
-
|
|
|
- debug "MC repository: $MC_REPO"
|
|
|
}
|
|
|
|
|
|
# @description Determines the latest JRiver MC version using several methods
|
|
|
-# @arg $1 string MC repository name
|
|
|
get_latest_mc_version() {
|
|
|
- debug "Running: ${FUNCNAME[0]}" "$*"
|
|
|
+ debug "Running: ${FUNCNAME[0]}"
|
|
|
local cnt mc_version_source
|
|
|
|
|
|
# Use generalized containerized package manager to determine latest MC version
|
|
@@ -439,7 +420,7 @@ get_latest_mc_version() {
|
|
|
cat <<-EOF > /etc/apt/sources.list.d/jriver.sources
|
|
|
Types: deb
|
|
|
URIs: https://dist.jriver.com/latest/mediacenter/
|
|
|
- Suites: '"$1"'
|
|
|
+ Suites: '"${USER_MC_REPO:-$MC_REPO}"'
|
|
|
Components: main
|
|
|
Architectures: amd64,armhf,arm64
|
|
|
EOF
|
|
@@ -449,7 +430,7 @@ get_latest_mc_version() {
|
|
|
mc_version_source="containerized package manager"
|
|
|
execute buildah rm "$cnt"
|
|
|
# Fallback to webscrape
|
|
|
- elif MC_VERSION=$(download "$BOARD_URL" "-" | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+' | head -n 1) &&
|
|
|
+ elif MC_VERSION=$(download "https://yabb.jriver.com/interact/index.php/board,$BOARD_ID.html" "-" | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+' | head -n 1) &&
|
|
|
[[ $MC_VERSION =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
|
mc_version_source="webscrape"
|
|
|
# Fallback to hardcoded value
|
|
@@ -458,7 +439,7 @@ get_latest_mc_version() {
|
|
|
err "Warning! Using hardcoded version number"
|
|
|
fi
|
|
|
|
|
|
- echo "Using latest MC version $MC_VERSION from the $MC_REPO repo (determined by $mc_version_source)"
|
|
|
+ echo "Using latest MC version $MC_VERSION from the ${USER_MC_REPO:-$MC_REPO} repo (determined by $mc_version_source)"
|
|
|
}
|
|
|
|
|
|
# @description Installs a package using the system package manager
|
|
@@ -664,7 +645,7 @@ install_mc_repo() {
|
|
|
Types: deb
|
|
|
URIs: https://dist.jriver.com/$channel/mediacenter/
|
|
|
Signed-By: $keyfile
|
|
|
- Suites: $MC_REPO
|
|
|
+ Suites: ${USER_MC_REPO:-$MC_REPO}
|
|
|
Components: main
|
|
|
Architectures: amd64,i386,armhf,arm64
|
|
|
EOF
|
|
@@ -675,7 +656,7 @@ install_mc_repo() {
|
|
|
else
|
|
|
repo_file="/etc/apt/sources.list.d/jriver.list"
|
|
|
fi
|
|
|
- repo_text="deb [signed-by=$keyfile arch=amd64,i386,armhf,arm64] https://dist.jriver.com/$channel/mediacenter/ $MC_REPO main"
|
|
|
+ repo_text="deb [signed-by=$keyfile arch=amd64,i386,armhf,arm64] https://dist.jriver.com/$channel/mediacenter/ ${USER_MC_REPO:-$MC_REPO} main"
|
|
|
fi
|
|
|
echo "Installing JRiver Media Center GPG key"
|
|
|
download "https://dist.jriver.com/mediacenter@jriver.com.gpg.key" "-" |
|
|
@@ -1350,8 +1331,8 @@ service_jriver-mediacenter() {
|
|
|
|
|
|
open_firewall "jriver-mediacenter" "52100-52200/tcp" "1900/udp"
|
|
|
|
|
|
- "${RELOAD[@]}" \
|
|
|
- && "${ENABLE[@]}" "$SERVICE_NAME"
|
|
|
+ "${RELOAD[@]}" &&
|
|
|
+ "${ENABLE[@]}" "$SERVICE_NAME"
|
|
|
}
|
|
|
|
|
|
# @description Starts and enables (at startup) a JRiver Media Server service
|
|
@@ -1482,9 +1463,9 @@ service_jriver-x11vnc() {
|
|
|
|
|
|
open_firewall "jriver-x11vnc" "$PORT/tcp"
|
|
|
|
|
|
- "${RELOAD[@]}" \
|
|
|
- && "${ENABLE[@]}" "$SERVICE_NAME" \
|
|
|
- && echo "x11vnc running on localhost:$PORT"
|
|
|
+ "${RELOAD[@]}" &&
|
|
|
+ "${ENABLE[@]}" "$SERVICE_NAME" &&
|
|
|
+ echo "x11vnc running on localhost:$PORT"
|
|
|
}
|
|
|
|
|
|
# @description Starts and enables (at startup) an hourly service to build the latest version of
|
|
@@ -1523,8 +1504,8 @@ service_jriver-createrepo() {
|
|
|
WantedBy=timers.target
|
|
|
EOF"
|
|
|
|
|
|
- "${RELOAD[@]}" \
|
|
|
- && "${ENABLE[@]}" "$TIMER_NAME"
|
|
|
+ "${RELOAD[@]}" &&
|
|
|
+ "${ENABLE[@]}" "$TIMER_NAME"
|
|
|
}
|
|
|
|
|
|
# @description Detects if MC is installed on btrfs and disables CoW
|