diff --git a/README.md b/README.md index c87357b..e3ebfdd 100755 --- a/README.md +++ b/README.md @@ -128,6 +128,10 @@ It is possible to install multiple services at one time using multiple `--servic Installs an Xvnc server on display ':2' that starts Media Center. +* `installJRMC --install deb --compat` + + Installs a more widely-compatible version of MC on deb-based distros + * `installJRMC --uninstall` Uninstalls JRiver Media Center and its associated services and firewall rules. This will **not** remove your media, media library/database, or automated library backup folder. diff --git a/installJRMC b/installJRMC index a3e6e20..cfc23f1 100755 --- a/installJRMC +++ b/installJRMC @@ -659,58 +659,55 @@ runCreaterepo() { debug "Running: ${FUNCNAME[0]}" declare cr_cmd cr_cp_cmd cr_mkdir_cmd cr_chown_cmd + declare cr_user="${CREATEREPO_USER:-$USER}" installPackage createrepo_c # If the webroot does not exist, create it if [[ ! -d "$CREATEREPO_WEBROOT" ]]; then - #cr_mkdir_cmd="sudo -u $CREATEREPO_USER mkdir -p $CREATEREPO_WEBROOT" - #debug "$cr_mkdir_cmd" || cr_mkdir_cmd+=" &>/dev/null" - #if ! eval "$cr_mkdir_cmd"; then - cr_mkdir_cmd="mkdir_cmd $CREATEREPO_WEBROOT" + cr_mkdir_cmd="sudo -u $cr_user mkdir -p $CREATEREPO_WEBROOT" + debug "$cr_mkdir_cmd" || cr_mkdir_cmd+=" &>/dev/null" + if ! eval "$cr_mkdir_cmd"; then + cr_mkdir_cmd="sudo mkdir -p $CREATEREPO_WEBROOT" debug "$cr_mkdir_cmd" || cr_mkdir_cmd+=" &>/dev/null" - cr_chown_cmd="chown_cmd $CREATEREPO_USER $CREATEREPO_WEBROOT" + cr_chown_cmd="sudo chown -R $cr_user:$cr_user $CREATEREPO_WEBROOT" debug "$cr_chown_cmd" || cr_chown_cmd+=" &>/dev/null" if ! ( eval "$cr_mkdir_cmd" && eval "$cr_chown_cmd" ); then err "Could not create the createrepo-webroot path!" - err "Make sure that the createrepo-webroot is writeable by createrepo-user: $CREATEREPO_USER" + err "Make sure that the webroot $CREATEREPO_WEBROOT is writeable by user $cr_user" + err "Or change the repo ownership with --createrepo-user" return 1 fi - #fi + fi fi # Copy built rpms to webroot - #cr_cp_cmd="sudo -u $CREATEREPO_USER cp -n -f $MCRPM $CREATEREPO_WEBROOT" - #cr_chown_cmd="sudo -u $CREATEREPO_USER chown -R $CREATEREPO_USER:$CREATEREPO_USER $CREATEREPO_WEBROOT" - #debug "$cr_cp_cmd && $cr_chown_cmd" || cr_cp_cmd+=" &>/dev/null" cr_chown_cmd+=" &>/dev/null" - #if ! ( exec "$cr_cp_cmd" && exec "$cr_chown_cmd" ); then - cr_cp_cmd="cp_cmd $MCRPM $CREATEREPO_WEBROOT" - cr_chown_cmd="chown_cmd $CREATEREPO_USER $CREATEREPO_WEBROOT" - debug "$cr_cp_cmd" || cr_cp_cmd+=" &>/dev/null" - debug "$cr_chown_cmd" || cr_cp_cmd+=" &>/dev/null" - if ! (eval "$cr_cp_cmd" && eval "$cr_chown_cmd"); then - err "Could not copy $MCRPM to $CREATEREPO_WEBROOT" - #err "Is the createrepo-webroot $CREATEREPO_WEBROOT writeable by createrepo-user: $CREATEREPO_USER?" - return 1 - fi - #fi + cr_cp_cmd="sudo cp -nf $MCRPM $CREATEREPO_WEBROOT" + cr_chown_cmd="sudo chown -R $cr_user:$cr_user $CREATEREPO_WEBROOT" + debug "$cr_cp_cmd" || cr_cp_cmd+=" &>/dev/null" + debug "$cr_chown_cmd" || cr_cp_cmd+=" &>/dev/null" + if ! ( eval "$cr_cp_cmd" && eval "$cr_chown_cmd" ); then + err "Could not copy $MCRPM to $CREATEREPO_WEBROOT" + return 1 + fi # Run createrepo - cr_cmd="sudo -u $CREATEREPO_USER createrepo -q" + cr_cmd="sudo -u $cr_user createrepo -q $CREATEREPO_WEBROOT" [[ -d "$CREATEREPO_WEBROOT/repodata" ]] && cr_cmd+=" --update" - debug "$cr_cmd $CREATEREPO_WEBROOT" || cr_cmd+=" &>/dev/null" - if ! eval "$cr_cmd $CREATEREPO_WEBROOT"; then - cr_cmd="sudo createrepo -q" + debug "$cr_cmd" || cr_cmd+=" &>/dev/null" + if ! eval "$cr_cmd"; then + cr_cmd="sudo createrepo -q $CREATEREPO_WEBROOT" [[ -d "$CREATEREPO_WEBROOT/repodata" ]] && cr_cmd+=" --update" - debug "$cr_cmd $CREATEREPO_WEBROOT" || cr_cmd+=" &>/dev/null" - if ! eval "$cr_cmd $CREATEREPO_WEBROOT"; then - err "Update repo failed" + cr_chown_cmd="sudo chown -R $cr_user:$cr_user $CREATEREPO_WEBROOT" + debug "$cr_cmd" || cr_cmd+=" &>/dev/null" + debug "$cr_chown_cmd" || cr_cp_cmd+=" &>/dev/null" + if ! ( eval "$cr_cmd" && eval "$cr_chown_cmd"); then + err "Createrepo failed" return 1 fi fi echo "Successfully updated repo" - return 0 } @@ -722,7 +719,9 @@ symlinkCerts() { if [[ ! -f /etc/ssl/certs/ca-certificates.crt && -f /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ]]; then - if ! ln_cmd /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem /etc/ssl/certs/ca-certificates.crt; then + ln_cmd="sudo ln -s /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem /etc/ssl/certs/ca-certificates.crt" + debug "$ln_cmd" || ln_cmd+=" &>/dev/null" + if ! exec "$ln_cmd"; then err "Symlinking certificates failed" return 1 fi @@ -922,7 +921,7 @@ setServiceVars() { systemctl_disable_cmd(){ systemctl --user disable --now "$@"; } fi - [[ ! -d "$service_dir" ]] && mkdir_cmd "$service_dir" + [[ ! -d "$service_dir" ]] && sudo -u "$EXEC_USER" mkdir -p "$service_dir" if [[ "$USER" == "root" || "$SERVICE_TYPE" == "user" ]]; then SERVICE_NAME="${1}.service" @@ -1358,7 +1357,6 @@ main() { declare version_source declare -g MCVERSION MVERSION MCRPM - declare -g CREATEREPO_USER="${CREATEREPO_USER:-$USER}" getOS @@ -1372,15 +1370,8 @@ main() { echo "Adding EPEL repository" installPackage epel-release fi - - # Agnostic commands - bash_cmd(){ sudo bash -c "$@"; } - cp_cmd(){ sudo cp -nf "$@"; } - mkdir_cmd(){ sudo mkdir -p "$@"; } - chown_cmd(){ sudo chown "$1":"$1" -R "${@:2}"; } - ln_cmd(){ sudo ln -s "$@"; } - # OS-specific commands + # Distro-specific commands if [[ "$ID" =~ ^(fedora|centos)$ ]]; then pkg_install(){ sudo dnf install -y "$@"; } pkg_remove(){ sudo dnf remove -y "$@"; } @@ -1451,21 +1442,20 @@ main() { acquireDeb if (( COMPAT_SWITCH )); then declare extract_dir && extract_dir="$(mktemp -d)" - MCDEB="$MCDEB.compat" ar x --output "$extract_dir" "$MCDEB" tar -xJf "$extract_dir/control.tar.xz" -C "$extract_dir" # Remove minimum version specifiers from control file sed -i 's/ ([^)]*)//g' "$extract_dir/control" - tar -C "$extract_dir" \ - --ignore-failed-read \ - -cvJf "control.tar.xz" "control" "postinst" - ar rcs "$MCDEB" "$extract_dir/debian-binary" "$extract_dir/control.tar.xz" "$extract_dir/data.tar.xz" + sed -i 's/([^)]*)//g' "$extract_dir/control" # MC DEB package error + tar -cJf "$extract_dir/control.tar.xz" \ + -C "$extract_dir" "control" "postinst" + declare mcdeb="$MCDEB.compat" + ar rcs "$mcdeb" "$extract_dir/debian-binary" "$extract_dir/control.tar.xz" "$extract_dir/data.tar.xz" rm -rf "$extract_dir" fi - pkg_install_cmd="installPackage --nocheck --nogpgcheck $MCDEB" + pkg_install_cmd="installPackage --nocheck --nogpgcheck $mcdeb" debug "$pkg_install_cmd" || pkg_install_cmd+=" &>/dev/null" eval "$pkg_install_cmd" - fi if (( RPM_BUILD_SWITCH )); then