#!/usr/bin/env bash # avoid duplicates set -x set -euo pipefail rm /etc/apt/sources.list rm /etc/apt/sources.list.d/devuan.list # If you leave the update too long the keyring expires and your apt breaks. install_devuan_keyring() { local BASE_URL="https://pkgmaster.devuan.org/devuan/pool/main/d/devuan-keyring/" local DEB_DIR="/tmp" # Check for wget dependency if ! command -v wget &>/dev/null; then echo "Error: wget is not installed." >&2 return 1 fi echo "Searching for the latest devuan-keyring..." # Fetch directory listing, extract .deb links, filter, sort by version, take latest local LATEST_DEB LATEST_DEB=$(wget -q -O - "$BASE_URL" | grep -oP 'devuan-keyring_\d{4}\.\d{2}\.\d{2}_all\.deb' | sort -rV | head -n 1) if [ -z "$LATEST_DEB" ]; then echo "Error: Could not find any devuan-keyring_*.deb in listing" >&2 return 1 fi echo "Latest found: $LATEST_DEB" local FULL_URL="${BASE_URL}${LATEST_DEB}" local DEB_PATH="${DEB_DIR}/${LATEST_DEB}" echo "Downloading to $DEB_PATH..." wget -q --show-progress -O "$DEB_PATH" "$FULL_URL" echo "Installing package..." sudo dpkg -i "$DEB_PATH" # Clean up the downloaded file rm "$DEB_PATH" echo "Installation complete and cleanup finished." } install_devuan_keyring sudo apt install -y usrmerge sudo apt install -y apt-transport-tor apt-transport-https TRANSPORT="https" #MIRROR=deb #MIRROR=pkgmaster MIRROR=deb MERGED_URI="${TRANSPORT}://${MIRROR}.devuan.org/merged/" DEVUAN_URI="${TRANSPORT}://${MIRROR}.devuan.org/devuan" ACTIVE=/etc/apt/sources.list.d AVAILABLE=/etc/apt/sources.list-available mkdir -p "${AVAILABLE}" SECTION=(main contrib non-free non-free-firmware) # For standard merged suites (main contrib non-free non-free-firmware) SECTION_MERGED="main contrib non-free non-free-firmware" # # For experimental / proposed (usually just main) SECTION_SPECIAL="main" # ACTIVE_LIST=('freia') # ACTIVE_LIST=('freia' 'freia-security' 'freia-updates' 'freia-backports') # ACTIVE_LIST=('excalibur') # ACTIVE_LIST=('excalibur' 'excalibur-security' 'excalibur-updates' 'excalibur-backports') # ACTIVE_LIST=('daedalus') # ACTIVE_LIST=('daedalus' 'daedalus-security' 'daedalus-updates' 'daedalus-backports') # ACTIVE_LIST=('chimaera' 'chimaera-security' 'chimaera-updates' 'chimaera-backports') # ACTIVE_LIST=('beowulf' 'beowulf-security' 'beowulf-updates' 'beowulf-backports') # ACTIVE_LIST=('ascii' 'ascii-security' 'ascii-updates' 'ascii-backports') # INACTIVE_LIST=('jessie' 'jessie-security' 'jessie-updates' 'jessie-backports' 'beowulf' 'beowulf-security' 'beowulf-updates' 'beowulf-backports' 'ceres') INACTIVE_LIST=('jessie' 'jessie-security' 'jessie-updates' 'jessie-backports' 'ascii' 'ascii-security' 'ascii-updates' 'ascii-backports' 'beowulf' 'beowulf-security' 'beowulf-updates' 'beowulf-backports' 'chimaera' 'chimaera-security' 'chimaera-updates' 'chimaera-backports' 'ceres') OTHER_LIST=('experimental') SECTION=(main contrib non-free non-free-firmware) ACTIVE_LIST=('excalibur' 'excalibur-security' 'excalibur-updates' 'excalibur-backports') # New: proposed-updates suites (disabled by default - production risk) PROPOSED_LIST=('excalibur-proposed-updates') # Active (enabled) loop – all merged in your current choice for RELEASE in "${ACTIVE_LIST[@]}"; do echo "${RELEASE}" bash -c "cat > ${AVAILABLE}/devuan_${RELEASE}.sources" < ${AVAILABLE}/devuan_${RELEASE}.sources" < ${AVAILABLE}/devuan_${RELEASE}.sources" < ${AVAILABLE}/devuan_${RELEASE}.sources" < ${AVAILABLE}/devuan_${RELEASE}-onion.sources" < /etc/apt/sources.list.d/x2go.list" <<'EOF' ## X2Go Repository (release builds) #deb http://packages.x2go.org/debian jessie main # ## X2Go Repository (sources of release builds) #deb-src http://packages.x2go.org/debian jessie main # ## X2Go Repository (nightly builds) ##deb http://packages.x2go.org/debian jessie heuler # ## X2Go Repository (sources of nightly builds) ##deb-src http://packages.x2go.org/debian jessie heuler # ## apt install -y x2goserver x2goserver-xsession #EOF