|
#!/bin/sh
|
|
# File: /mnt/public/Support/Platforms/devuan/set-my-repos.sh
|
|
# Location:
|
|
# Author: bgstack15
|
|
# Startdate: 2019-08-10 16:02
|
|
# Title: Script that Establishes the repos needed for Devuan
|
|
# Purpose: Set up the 3 repos I always need on devuan clients
|
|
# History:
|
|
# 2020-02-01 customize clients for devuan-archive
|
|
# 2020-10-23 add apt-file compatibility
|
|
# 2021-01-27 disable devuan-archive
|
|
# 2024-01-03-4 14:53 add pref for zenity with gtk3
|
|
# Usage:
|
|
# sudo set-my-repos.sh
|
|
# Reference:
|
|
# /mnt/public/Support/Platforms/devuan/devuan.txt
|
|
# Improve:
|
|
# need to control the sources.list file itself to have the main, contrib, etc., for ceres.
|
|
# Documentation:
|
|
|
|
test -z "${ALLREPOSGLOB}" && ALLREPOSGLOB="/etc/apt/sources.list /etc/apt/sources.list.d/*"
|
|
test -z "${REPOSBASE}" && REPOSBASE="/etc/apt/sources.list.d"
|
|
test -z "${PREFSBASE}" && PREFSBASE="/etc/apt/preferences.d"
|
|
test -z "${ADDLCONFBASE}" && ADDLCONFBASE="/etc/apt/apt.conf.d"
|
|
|
|
# confirm key
|
|
confirm_key() {
|
|
# call: confirm_key "${PRETTYNAME}" "${SEARCHPHRASE}" "${URL_OF_KEY}"
|
|
___ck_repo="${1}"
|
|
___ck_sp="${2}"
|
|
___ck_url="${3}"
|
|
if apt-key list 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 apt-key add -
|
|
___ck_keyfile="/etc/apt/trusted.gpg.d/$( echo "${___ck_repo}" | tr '[: ]' '_' ).gpg"
|
|
wget -O- --quiet "${___ck_url}" | gpg --dearmor | sudo tee "${___ck_keyfile}" 1>/dev/null
|
|
fi
|
|
}
|
|
|
|
# confirm repo
|
|
confirm_repo() {
|
|
# call: confirm_repo "${PRETTYNAME}" "${SEARCHPHRASE}" "${SEARCHGLOB}" "${FULLSTRING}" "${PREFERRED_FILENAME}" "${OVERWRITE}"
|
|
___cr_repo="${1}"
|
|
___cr_sp="${2}"
|
|
___cr_sf="${3}"
|
|
___cr_full="${4}"
|
|
___cr_pref="${5}"
|
|
___cr_overwrite="${6}"
|
|
if ! grep -E -qe "${___cr_sp}" ${___cr_sf} ;
|
|
then
|
|
# not found so please add it to preferred file
|
|
echo "Adding repo ${___cr_repo}" 1>&2
|
|
if test "${___cr_overwrite}" = "true" ;
|
|
then
|
|
# overwrite, instead of append
|
|
echo "${___cr_full}" > "${REPOSBASE}/${___cr_pref:-99_misc.list}"
|
|
else
|
|
echo "${___cr_full}" >> "${REPOSBASE}/${___cr_pref:-99_misc.list}"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
confirm_preferences() {
|
|
# call: confirm_preferences "${PRETTYNAME}" "${FILENAME}" "{PACKAGE}" "${PIN_EXPRESSION}" "{PRIORITY}"
|
|
___cp_prettyname="${1}"
|
|
___cp_pref="${2}"
|
|
___cp_package="${3}"
|
|
___cp_pin_expression="${4}"
|
|
___cp_priority="${5}"
|
|
___cp_version="${6}"
|
|
|
|
___cp_tempfile="$( mktemp )"
|
|
{
|
|
echo "Package: ${___cp_package}"
|
|
test -n "${___cp_version}" && echo "Version: ${___cp_version}"
|
|
echo "Pin: ${___cp_pin_expression}"
|
|
echo "Pin-Priority: ${___cp_priority}"
|
|
} > "${___cp_tempfile}"
|
|
|
|
diff "${PREFSBASE}/${___cp_pref}" "${___cp_tempfile}" 1>/dev/null 2>&1 || {
|
|
echo "Setting preferences for ${___cp_prettyname}"
|
|
touch "${PREFSBASE}/${___cp_pref}" ; chmod 0644 "${PREFSBASE}/${___cp_pref}"
|
|
cat "${___cp_tempfile}" > "${PREFSBASE}/${___cp_pref}"
|
|
}
|
|
|
|
rm -f "${___cp_tempfile:-NOTHINGTODEL}" 1>/dev/null 2>&1
|
|
}
|
|
|
|
# REPO 1: local internaldeb
|
|
confirm_key "internaldeb" "bgstack15.*www\.example\.com" "http://www.example.com/internal/repo/deb/internaldeb.gpg"
|
|
confirm_repo "internaldeb" "target.*internal\/repo\/deb" "${ALLREPOSGLOB}" "deb [target-=Contents-deb target+=Contents-stackrpms] http://www.example.com/internal/repo/deb/ /" "internaldeb.list" "true"
|
|
|
|
# REPO 2: local devuan-deb
|
|
confirm_key "devuan-deb" "bgstack15.*www\.example\.com" "http://www.example.com/internal/repo/deb/internaldeb.gpg"
|
|
confirm_repo "devuan-deb" "target.*internal\/repo\/devuan-deb" "${ALLREPOSGLOB}" "deb [target-=Contents-deb target+=Contents-stackrpms] http://www.example.com/internal/repo/devuan-deb/ /" "devuan-deb.list" "true"
|
|
|
|
# REPO 3: local obs
|
|
# Thankfully I re-sign this with my own key.
|
|
#confirm_key "OBS bgstack15" "bgstack15@build\.opensuse\.org" "https://download.opensuse.org/repositories/home:bgstack15/Debian_Unstable/Release.key"
|
|
#confirm_repo "OBS bgstack15" "repositories\/home:\/bgstack15\/Debian_Unstable" "${ALLREPOSGLOB}" "deb http://download.opensuse.org/repositories/home:/bgstack15/Debian_Unstable/ /" "home:bgstack15.list"
|
|
confirm_key "OBS bgstack15" "bgstack15@build\.opensuse\.org" "http://www.example.com/mirror/obs/Release.key"
|
|
confirm_repo "OBS bgstack15" "mirror\/obs" "${ALLREPOSGLOB}" "deb http://www.example.com/mirror/obs/ /" "home:bgstack15.list"
|
|
|
|
# REPO 4: local devuan-archive
|
|
# deprecated circa 2021-05
|
|
# enabled again 2023-08-22 for discord/gconf
|
|
confirm_key "devuan-archive" "bgstack15.*www\.example\.com" "http://www.example.com/internal/repo/deb/internaldeb.gpg"
|
|
confirm_repo "devuan-archive" "target.*server3((\.ipa)?\.internal\.com).*internal\/repo\/devuan-archive" "${ALLREPOSGLOB}" "deb [target-=Contents-deb target+=Contents-stackrpms] http://server3.ipa.internal.com/internal/repo/devuan-archive/ /" "devuan-archive.list" "true"
|
|
confirm_preferences "devuan-archive" "puddletag" "*" "origin server3.ipa.internal.com" "700"
|
|
|
|
# REPO 5: local obs-aftermozilla key for non-local aftermozilla repo
|
|
# just the key
|
|
#confirm_key "OBS bgstack15 aftermozilla" "bgstack15@build\.opensuse\.org" "https://download.opensuse.org/repositories/home:bgstack15:aftermozilla/Debian_Unstable/Release.key"
|
|
|
|
# REPO 5: local obs-AfterMozilla
|
|
confirm_key "OBS bgstack15" "bgstack15@build\.opensuse\.org" "http://www.example.com/mirror/obs/Release.key"
|
|
confirm_repo "OBS bgstack15 AfterMozilla" "mirror\/obs-AfterMozilla" "${ALLREPOSGLOB}" "deb http://www.example.com/mirror/obs-AfterMozilla/ /" "home:bgstack15:AfterMozilla.list"
|
|
|
|
# REPO 6: local obs-gtk3-classic
|
|
confirm_key "OBS bgstack15" "bgstack15@build\.opensuse\.org" "http://www.example.com/mirror/obs/Release.key"
|
|
confirm_repo "OBS bgstack15 gtk3-classic" "mirror\/obs-gtk3-classic" "${ALLREPOSGLOB}" "deb http://www.example.com/mirror/obs-gtk3-classic/ /" "home:bgstack15:gtk3-classic.list"
|
|
|
|
# ADDITIONAL APT PREFS
|
|
# important for the [target] stuff to work on repos so apt-file can work
|
|
cp -p "$( dirname "$( readlink -f "${0}" )")/input/52apt-file-stackrpms.conf" "${ADDLCONFBASE}/"
|
|
# 2023-10-27-6 08:47 use apt-preferences to hold this exact app version because newer versions remove the system tray icon.
|
|
confirm_preferences "all" "krb5-auth-dialog" "krb5-auth-dialog" "release" "1000" "3.26.1-4"
|
|
# zenity with gtk3 is stored in devuan-deb
|
|
confirm_preferences "all" "zenity" "zenity" "release" "600" "3.44.2-1"
|
|
confirm_preferences "all" "zenity-common" "zenity-common" "release" "600" "3.44.2-1"
|