#!/bin/sh APP_NAME="rclone" BASE_URL="https://mirror.mwt.me/rclone" GPG_KEY="-----BEGIN PGP PUBLIC KEY BLOCK----- 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 6NgcvtS2QJSTKA== =GSyU -----END PGP PUBLIC KEY BLOCK----- " DEB_REPO="$BASE_URL/deb any main" RPM_REPO="[$APP_NAME] name=$APP_NAME baseurl=$BASE_URL/rpm/\$basearch enabled=1 gpgcheck=0 repo_gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/$APP_NAME.asc" # This script installs an repository for apt, dnf, yum, or zypper. It expects # the following eniroment variables. # GPG_KEY : the gpg key itself # APP_NAME : the name to use for the repo file and key # DEB_REPO : (optional) the string to appear in the .list file # RPM_REPO : (optional) the string to appear in the .repo file # Override repostiroy based on distribution identity test -e /etc/os-release && os_release='/etc/os-release' || os_release='/usr/lib/os-release' if [ -f "${os_release}" ]; then # Load OS release info . "${os_release}" # Check if apt exists and repo is set if [ -n "$DEB_REPO" ] && command -v apt >/dev/null; then # Set variable for existance of APT PACKAGE_MANAGER_EXISTS="$PACKAGE_MANAGER_EXISTS apt" case " ${ID:-linux} ${ID_LIKE:-unix}" in *" ubuntu"*) echo "Ubuntu based distribution detected. Installing APT repository." PACKAGE_MANAGER="apt" ;; *" debian"*) echo "Debian based distribution detected. Installing APT repository." PACKAGE_MANAGER="apt" ;; esac fi # Check if dnf/yum exists and repo is set if [ -n "$RPM_REPO" ] && (command -v dnf >/dev/null || command -v yum >/dev/null); then # Set variable for existance of yum/dnf PACKAGE_MANAGER_EXISTS="$PACKAGE_MANAGER_EXISTS yum" case " ${ID:-linux} ${ID_LIKE:-unix}" in *" fedora"*) echo "Fedora based distribution detected. Installing YUM/DNF repository." PACKAGE_MANAGER="yum" ;; *" rhel"*) echo "Red Hat based distribution detected. Installing YUM/DNF repository." PACKAGE_MANAGER="yum" ;; esac fi # Check if zypper exists and repo is set if [ -n "$RPM_REPO" ] && command -v zypper >/dev/null; then # Set variable for existance of zypper PACKAGE_MANAGER_EXISTS="$PACKAGE_MANAGER_EXISTS zyp" case " ${ID:-linux} ${ID_LIKE:-unix}" in *" sles"*) echo "SUSE based distribution detected. Installing Zypper repository." PACKAGE_MANAGER="zyp" ;; *" opensuse"*) echo "openSUSE based distribution detected. Installing Zypper repository." PACKAGE_MANAGER="zyp" ;; esac fi fi # Heuristic when OS release detection fails # 1. If APT and YUM/DNF are detected, use the one that installed the other # 2. Otherwise, proceed in order of APT, YUM/DNF, and Zypper if [ -z "$PACKAGE_MANAGER" ]; then echo "WARNING: OS release detection failed, using heuristics." case "$PACKAGE_MANAGER_EXISTS" in *" apt yum"*) echo "Both APT and YUM/DNF detected." if dpkg -s dsf >/dev/null 2>&1; then echo "RPM is installed through dpkg. Installing APT repository." PACKAGE_MANAGER="apt" elif rpm -q dpkg >/dev/null 2>&1; then echo "dpkg is installed through RPM. Installing YUM/DNF repository." PACKAGE_MANAGER="yum" else echo "ERROR: Both APT and YUM/DNF were found, but neither is installed through the other." echo "Please follow manual installation instructions." exit 1 fi ;; *" apt"*) echo "APT detected. Installing APT repository." PACKAGE_MANAGER="apt" ;; *" yum"*) echo "YUM/DNF detected. Installing YUM repository." PACKAGE_MANAGER="yum" ;; *" zyp"*) echo "Zypper detected. Installing zypper repository." PACKAGE_MANAGER="zyp" ;; *) echo "FAILED: No supported package manager found." exit 1 ;; esac fi if [ "$PACKAGE_MANAGER" = "apt" ]; then GPG_KEY_DIR="/etc/apt/keyrings" GPG_KEY_PATH="$GPG_KEY_DIR/$APP_NAME.asc" APTLIST_PATH="/etc/apt/sources.list.d/$APP_NAME.list" # Make sure the keyring directory exists mkdir -p "$GPG_KEY_DIR" # Export key to file echo "$GPG_KEY" >"$GPG_KEY_PATH" # get arch DEBIAN_ARCH=$(dpkg --print-architecture) echo "deb [arch=$DEBIAN_ARCH signed-by=$GPG_KEY_PATH by-hash=force] $DEB_REPO" >"$APTLIST_PATH" echo "DONE!" exit else GPG_KEY_DIR="/etc/pki/rpm-gpg" GPG_KEY_PATH="$GPG_KEY_DIR/$APP_NAME.asc" # set the path for the repo file depending on the package manager case "$PACKAGE_MANAGER" in "yum") RPMLIST_PATH="/etc/yum.repos.d/$APP_NAME.repo" ;; "zyp") RPMLIST_PATH="/etc/zypp/repos.d/$APP_NAME.repo" ;; esac # Make sure the keyring directory exists mkdir -p "$GPG_KEY_DIR" # Export key to file echo "$GPG_KEY" >"$GPG_KEY_PATH" rpm --import "$GPG_KEY_PATH" echo "$RPM_REPO" >"$RPMLIST_PATH" echo "DONE!" # Give a helpful note if we assumed yum despite zypper being installed if [ "$PACKAGE_MANAGER" = "yum" ] && [ "${PACKAGE_MANAGER_EXISTS#* zyp*}" != "${PACKAGE_MANAGER_EXISTS}" ]; then echo "NOTE: I assumed yum/dnf. However, zypper is installed. You may switch to zypper using the following command:" echo " sudo mv '/etc/yum.repos.d/$APP_NAME.repo' '/etc/zypp/repos.d/$APP_NAME.repo'" fi exit fi