Quellcode durchsuchen

Simplify external repo installation

bryan vor 5 Jahren
Ursprung
Commit
0114e6af2c
1 geänderte Dateien mit 36 neuen und 28 gelöschten Zeilen
  1. 36 28
      installJRMC

+ 36 - 28
installJRMC

@@ -212,7 +212,7 @@ EOF
         # build some basic command arrays based on OS and user input
         if [[ "$ID" =~ ^(fedora|centos)$ ]]; then
             _install_cmd=("dnf" "install" "-y")
-            _update_cmd=("dnf" "update" "-y")
+            _update_cmd=("dnf" "makecache" "-y")
             _pkg_query_cmd=("rpm" "-q")
         elif [[ "$ID" =~ ^(ubuntu|debian)$ ]]; then
             _install_cmd=("apt-get" "install" "-y")
@@ -245,34 +245,56 @@ EOF
 
         # We will add packages to this array if their command is not available
         local -a _pkg_array
+        local -a _url_pkg_array
 
         # parse commands
         for _pkg in "$@"; do
+            # Clean up package name and handle OS-specific tweaks
             _pkg=$(_packageOverrides "$_pkg")
-            # Insert the package name to test if already installed one element from the end
-            # and silence output
-            if ! "${_pkg_query_cmd[@]}" "$_pkg" > /dev/null 2>&1; then
-                _pkg_array+=("$_pkg")
+            # Insert the package name to test if already installed
+            if [[ "$_pkg" != "" ]] && ! "${_pkg_query_cmd[@]}" "$_pkg" > /dev/null 2>&1; then
+                if [[ -n $_url_pkg ]]; then
+                    _url_pkg_array+=("$_url_pkg")
+                else
+                    _pkg_array+=("$_pkg")
+                fi
             fi
         done
 
         if [[ ${#_pkg_array[@]} -ge 1 ]]; then
-            echo "Installing ${_pkg_array[*]}"
+            [[ -n $_debug ]] && echo "Installing: " "${_pkg_array[@]}"
             "${_install_cmd[@]}" "${_pkg_array[@]}" > /dev/null 2>&1
         fi
+
+        if [[ ${#_url_pkg_array[@]} -ge 1 ]]; then
+            [[ -n $_debug ]] && echo "Installing: " "${_url_pkg_array[@]}"
+            "${_install_cmd_nogpg[@]}" "${_url_pkg_array[@]}" > /dev/null 2>&1
+        fi
+
+
     }
 
 
     _packageOverrides () {
 
-        if [[ "$ID" == "ubuntu" || "$ID" == "debian" ]]; then
-            if [[ "$1" == "rpm-build" ]]; then
-                echo "rpm"
-            elif [[ "$1" == "createrepo_c" ]]; then
-                echo "createrepo"
-            else
+        unset _url_pkg
+
+        if [[ "$1" == "rpm-build" && "$ID" =~ ^(ubuntu|debian)$ ]]; then
+            echo "rpm"
+        elif [[ "$1" == "createrepo_c" && "$ID" =~ ^(ubuntu|debian)$ ]]; then
+            echo "createrepo"
+        elif [[ "$1" == "rpmfusion-free-release" ]]; then
+            if [[ "$ID" == "fedora" ]]; then
+                _url_pkg="https://download1.rpmfusion.org/free/$ID/rpmfusion-free-release-$VERSION_ID.noarch.rpm"
+                echo "$1"
+            elif [[ "$ID" == "centos" ]]; then
+                _url_pkg="https://download1.rpmfusion.org/free/el/rpmfusion-free-release-$VERSION_ID.noarch.rpm"
                 echo "$1"
+            else
+                echo ""
             fi
+        elif [[ "$1" == "epel-release" && "$ID" != "centos" ]]; then
+            echo ""
         else
             echo "$1"
         fi
@@ -321,21 +343,7 @@ EOF
 
     _installExternalRepos () {
 
-        if [[ "$ID" == "fedora" ]]; then
-            if ! rpm --quiet --query rpmfusion-free-release; then
-                echo "Installing rpmfusion-free-release repo..."
-                "${_install_cmd_nogpg[@]}" "https://download1.rpmfusion.org/free/$ID/rpmfusion-free-release-$VERSION_ID.noarch.rpm"  > /dev/null 2>&1
-            fi
-        elif [[ "$ID" == "centos" ]]; then
-            if ! rpm --quiet --query epel-release; then
-                echo "Installing epel-release repo..."
-                "${_install_cmd_nogpg[@]}" epel-release > /dev/null 2>&1
-            fi
-            if ! rpm --quiet --query rpmfusion-free-release; then
-                echo "Installing rpmfusion-free-release repo..."
-                "${_install_cmd_nogpg[@]}" "https://download1.rpmfusion.org/free/el/rpmfusion-free-release-$VERSION_ID.noarch.rpm" > /dev/null 2>&1
-            fi
-        fi
+        _installPackage rpmfusion-free-release epel-release
     }
 
 
@@ -352,7 +360,7 @@ gpgcheck=0
 EOF'
             [[ -n $_debug ]] && cat /etc/yum.repos.d/jriver.repo
             echo "Installing latest JRiver Media Center from repo..."
-            if "${_update_cmd[@]}" && "${_install_cmd[@]}" MediaCenter; then
+            if "${_update_cmd[@]}" && "${_install_cmd[@]}" MediaCenter > /dev/null 2>&1; then
                 echo "JRiver Media Center installed successfully!"
                 echo "You can check for future MC updates by running \"sudo dnf update\""
             else