Browse Source

Finally remove agnostic commands

bryan 3 years ago
parent
commit
eda53412fa
2 changed files with 42 additions and 48 deletions
  1. 4 0
      README.md
  2. 38 48
      installJRMC

+ 4 - 0
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.

+ 38 - 48
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