diff --git a/installJRMC b/installJRMC index d88fa34..5f1926c 100755 --- a/installJRMC +++ b/installJRMC @@ -18,6 +18,11 @@ shopt -s extglob declare -g SCRIPTVERSION="1.0-rc1" declare -g OUTPUTDIR="$PWD/output" + +declare -g BOARDURL="https://yabb.jriver.com/interact/index.php/board,76.0.html" # MC30 (Buster) +declare -g DEBIANBASE="buster" +# declare -g DEBIANBASE_NEXT="bullseye" + declare -g CREATEREPO_WEBROOT="/var/www/jriver" declare -g USER="${SUDO_USER:-$USER}" declare -g HOME; HOME=$(getent passwd "$USER" | cut -d: -f6) @@ -241,7 +246,7 @@ init() { err "/etc/os-release not found" err "Your OS is unsupported" printHelp - exit 1 + exit 1 fi debug "Detected host platform: $ID $VERSION_ID" @@ -250,8 +255,8 @@ init() { case "$ID" in arch|debian) ;; - centos|fedora) - if hash dnf &>/dev/null; then + centos|fedora) + if hash dnf &>/dev/null; then RPM_MGR="dnf" elif hash yum &>/dev/null; then RPM_MGR="yum" @@ -327,22 +332,21 @@ init() { ####################################### # Uses several methods to determine the latest JRiver MC version -# TODO but how to determine build distro `$BASE=buster`? +# TODO but how to determine build distro `$DEBIANBASE=buster`? ####################################### getVersion() { debug "Running: ${FUNCNAME[0]}" - declare -g MCVERSION VERSION_SOURCE MVERSION MCPKG MCRPM BASE="buster" #BASE_NEXT="bullseye" - declare boardurl="https://yabb.jriver.com/interact/index.php/board,76.0.html" # MC30 (Buster) + declare -g MCVERSION VERSION_SOURCE MVERSION MCPKG MCRPM # User input if [[ -v MCVERSION && "$MCVERSION" =~ ([0-9]+.[0-9]+.[0-9]+) ]]; then VERSION_SOURCE="user input" # Containerized package manager elif installPackage --silent buildah && - cnt=$(buildah from --quiet debian:$BASE) &>/dev/null && + cnt=$(buildah from --quiet debian:$DEBIANBASE) &>/dev/null && buildah run "$cnt" -- bash -c \ - "echo 'deb [trusted=no arch=amd64,i386,armhf,arm64] http://dist.jriver.com/latest/mediacenter/ $BASE main' > /etc/apt/sources.list 2>&1" &>/dev/null && + "echo 'deb [trusted=no arch=amd64,i386,armhf,arm64] http://dist.jriver.com/latest/mediacenter/ $DEBIANBASE main' > /etc/apt/sources.list 2>&1" &>/dev/null && buildah run "$cnt" -- bash -c \ "apt update --allow-insecure-repositories &>/dev/null" &>/dev/null && MCVERSION=$(buildah run "$cnt" -- apt-cache policy mediacenter?? | grep Candidate | awk '{print $2}' | sort -V | tail -n1) &>/dev/null && @@ -350,7 +354,7 @@ getVersion() { VERSION_SOURCE="containerized package manager"; then buildah rm "$cnt" &>/dev/null # Webscrape - elif installPackage wget && MCVERSION=$(wget -qO- "$boardurl" | grep -o "[0-9][0-9]\.[0-9]\.[0-9]\+" | head -n 1) && + elif installPackage wget && MCVERSION=$(wget -qO- "$BOARDURL" | grep -o "[0-9][0-9]\.[0-9]\.[0-9]\+" | head -n 1) && [[ "$MCVERSION" =~ ([0-9]+.[0-9]+.[0-9]+) ]]; then VERSION_SOURCE="webscrape" # Hardcoded @@ -383,7 +387,7 @@ getVersion() { # Options: # --skip-check-installed: Do not check if package is already installed # --nogpgcheck: Disable GPG checks for RPM based distros -# --allow-downgrades: Useful for installing compatability versions on DEB based distros +# --allow-downgrades: Useful for installing specific MC versions # --silent, -s: Do not report errors (useful if package is not strictly required and errors are noisy) ####################################### installPackage() { @@ -392,7 +396,7 @@ installPackage() { declare -a pkg_array install_flags declare pkg skip_check_installed silent _return pkg_install_cmd - if _input=$(getopt -o +s -l skip-check-installed,allow-erasing,allow-downgrades,nogpgcheck,silent -- "$@"); then + if _input=$(getopt -o +s -l skip-check-installed,allow-downgrades,nogpgcheck,silent -- "$@"); then eval set -- "$_input" while true; do case "$1" in @@ -400,11 +404,9 @@ installPackage() { skip_check_installed=1 ;; --allow-downgrades) - [[ "$ID" =~ ^(debian|ubuntu)$ ]] && + if [[ "$ID" =~ ^(debian|ubuntu)$ ]]; then install_flags+=(--allow-downgrades) - ;; - --allow-erasing) - if [[ "$ID" =~ ^(fedora|centos)$ ]]; then + elif [[ "$ID" =~ ^(fedora|centos)$ ]]; then install_flags+=(--allowerasing) fi ;; @@ -486,7 +488,7 @@ installMCFromRepo() { sudo rm -rf "$repo_dir"/mediacenter*.list installPackage wget sudo bash -c "cat <<-EOF > $repo_dir/jriver.list - deb [trusted=yes arch=amd64,i386,armhf,arm64] http://dist.jriver.com/latest/mediacenter/ $BASE main + deb [trusted=yes arch=amd64,i386,armhf,arm64] http://dist.jriver.com/latest/mediacenter/ $DEBIANBASE main EOF" wget -qO- "http://dist.jriver.com/mediacenter@jriver.com.gpg.key" | sudo tee /etc/apt/trusted.gpg.d/jriver.asc ;; @@ -504,7 +506,7 @@ installMCFromRepo() { return 1 fi - declare pkg_install_cmd="installPackage --skip-check-installed --allow-erasing --nogpgcheck $MCPKG" + declare pkg_install_cmd="installPackage --skip-check-installed --allow-downgrades --nogpgcheck $MCPKG" debug "$pkg_install_cmd" || pkg_install_cmd+=" &>/dev/null" if ! eval "$pkg_install_cmd"; then err "Package install failed!" @@ -761,7 +763,7 @@ installMCDEB() { ####################################### installMCRPM() { debug "Running: ${FUNCNAME[0]}" - installPackage --skip-check-installed --nogpgcheck --allow-erasing "$MCRPM" + installPackage --skip-check-installed --nogpgcheck --allow-downgrades "$MCRPM" } @@ -1275,7 +1277,7 @@ service_jriver-createrepo() { # installPackage buildah podman # # Eventually try to switch to Debian -# # if ! CNT=$(buildah from debian:$BASE); then +# # if ! CNT=$(buildah from debian:$DEBIANBASE); then # # echo "Bad base image for container $CNAME, skipping" # # continue # # fi @@ -1424,7 +1426,7 @@ disableCoW() { declare mc_system_path="/usr/lib/jriver" declare mc_user_path="$HOME/.jriver" - [[ -d "$mc_user_path" ]] || mkdir -p "$mc_user_path" + [[ -d "$mc_user_path" ]] || mkdir -p "$mc_user_path" for dir in "$mc_system_path" "$mc_user_path"; do [[ -d "$dir" ]] || return