|
#!/bin/sh
|
|
# File: /mnt/public/www/internal/repo/rpm/set-my-repos.sh
|
|
# Location:
|
|
# Author: bgstack15
|
|
# Startdate: 2019-08-10 16:02
|
|
# Title: Script that Establishes the repos needed for GNU/Linux
|
|
# Purpose: Set up the 3 repos I always need on devuan clients
|
|
# History:
|
|
# 2019-09-24 forked from devuan set-my-repos.
|
|
# 2022-03-18 changed from C8 to A8, changed if-then line #44 to not use ! and instead use : else
|
|
# 2022-03-28 adapted to work with Fedora, C7, or A8
|
|
# 2025-01-13-2 13:22 adapted for Fedora 41/dnf5
|
|
# Usage:
|
|
# sudo set-my-repos.sh
|
|
# Reference:
|
|
# /mnt/public/Support/Platforms/devuan/devuan.txt
|
|
# Improve:
|
|
# Documentation:
|
|
|
|
ALLREPOSGLOB="/etc/yum.repos.d/*.repo"
|
|
REPOSBASE="/etc/yum.repos.d"
|
|
|
|
# confirm key
|
|
confirm_key() {
|
|
# call: confirm_key "${SEARCHPHRASE}" "${URL_OF_KEY}"
|
|
___ck_repo="${1}"
|
|
___ck_sp="${2}"
|
|
___ck_url="${3}"
|
|
if rpm -q gpg-pubkey --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{SUMMARY}\n' 2>/dev/null | grep -qe "${___ck_sp}" ;
|
|
then
|
|
:
|
|
else
|
|
# not found so please add it
|
|
echo "Adding key for ${___ck_repo}" 1>&2
|
|
wget -O- "${___ck_url}" | sudo rpm --import -
|
|
fi
|
|
}
|
|
|
|
# confirm repo
|
|
confirm_repo_byurl() {
|
|
# call: confirm_repo "${REPO_FILENAME}" "${REPO_FILE_URL}" "${SEARCHGLOB}"
|
|
___cr_repo="${1}"
|
|
___cr_url="${2}"
|
|
___cr_sf="${3}"
|
|
# if we cannot find a file matching the requested name in the glob
|
|
if ! grep -q -F -e "${___cr_repo}" ${ALLREPOSGLOB} 2>/dev/null ;
|
|
then
|
|
# :
|
|
#else
|
|
# not found so please download it
|
|
echo "Adding repo ${___cr_repo}" 1>&2
|
|
wget -O- "${___cr_url}" --quiet >> "${REPOSBASE}/${___cr_sf}"
|
|
fi
|
|
}
|
|
|
|
# MAIN
|
|
distro="$( . /etc/os-release ; echo "${ID}${VERSION_ID%%.*}" )"
|
|
# calculate copr repo filename
|
|
copr_d=fedora
|
|
grep -qiE 'ID=.*(almalinux|centos|redhat|rocky)' /etc/os-release && copr_d=epel
|
|
copr_v="$( . /etc/os-release ; echo "${VERSION_ID%%.*}" )"
|
|
|
|
# REPO 1: internal bundle
|
|
bundle_name="[baseos-internal]"
|
|
grep -qiE 'ID=.*(fedora)' /etc/os-release && bundle_name="[fedora-internal]"
|
|
confirm_repo_byurl "${bundle_name}" "https://www.example.com/internal/repo/mirror/internal-bundle-${distro}.repo" "internal-bundle-${distro}.repo"
|
|
# It is a good idea to run this too.
|
|
# This setopt stuff seems to work, according to `dnf repolist` but it does not actually set "enabled=0" in the files which is confusing.
|
|
grep -oP "(?<=^\[).*(?=-internal])" /etc/yum.repos.d/internal-bundle-${distro}.repo | while read thisrepo; do yum-config-manager --disable "${thisrepo}" 2>/dev/null ; dnf config-manager --disable "${thisrepo}" 2>/dev/null || dnf config-manager setopt "${thisrepo}.enabled"=0 ; done
|
|
|
|
# REPO 2: local internalrpm
|
|
# no key; I never bothered. The LT-bfi1 resources somewhere in the mirror-$( date "+%F" ).7z files have a gpg key yum repo assets.
|
|
confirm_repo_byurl "[internalrpm]" "https://www.example.com/internal/repo/rpm/internalrpm.repo" "internalrpm.repo"
|
|
wget --continue "https://www.example.com/internal/repo/rpm/internalrpm.mirrorlist" --output-document "${REPOSBASE}/internalrpm.mirrorlist" --quiet
|
|
|
|
# REPO 3: copr
|
|
# yum will download key and ask for confirmation during first use.
|
|
confirm_repo_byurl "[copr:copr.fedorainfracloud.org:bgstack15:stackrpms]" "https://www.example.com/internal/repo/mirror/bgstack15-stackrpms-${copr_d}-${copr_v}.repo" "bgstack15-stackrpms-${copr_d}-${copr_v}.repo"
|