#!/bin/bash # # Download Ubuntu .deb packages for offline use # Run this script inside Ubuntu 26.04 container # # Usage: ./download-deb-packages.sh [output-directory] # set -euo pipefail OUTPUT_DIR="${1:-./offline-cache/deb}" echo "=========================================" echo "Downloading Ubuntu .deb Packages" echo "=========================================" echo "Output directory: ${OUTPUT_DIR}" echo "=========================================" # Run download in Docker container with proper environment echo "" echo "Running download in Ubuntu 26.04 Docker container..." echo "" docker run --rm \ -v "$(pwd)/${OUTPUT_DIR}:/cache/deb" \ ubuntu:26.04 \ bash -c " set -euo pipefail OUTPUT_DIR='/cache/deb' # List of all required packages PACKAGES=( # Build tools build-essential cmake ninja-build clang gnupg curl jq openssh-client pkg-config unzip # Qt6 libraries libqt6svg6-dev libkf6texttemplate-dev libqt6core6 libqt6gui6 libqt6widgets6 libqt6sql6 libqt6sql6-psql libqt6test6 qt6-base-dev qt6-l10n-tools qt6-serialport-dev qt6-svg-dev qt6-tools-dev-tools qt6-tools-dev qt6-websockets-dev # Other libraries libgl1-mesa-dev libxkbcommon-x11-0 libfontconfig1 libdbus-1-3 libpulse0 libxcb-glx0 libxcb-cursor0 libbz2-dev libpoppler-dev libpoppler-qt6-dev libboost-dev libgeographiclib-dev libbotan-3-dev libssl-dev libxml2-dev libicu-dev # Testing libgtest-dev libgmock-dev # Database libpq-dev postgresql-server-dev-all # Multimedia libvlc-dev vlc-plugin-base # Python python3 python3-venv python3-pip # Packaging rpm ) mkdir -p \"\${OUTPUT_DIR}\" echo 'Updating package lists...' apt-get update -qq echo \"Downloading \${#PACKAGES[@]} packages...\" # Download all packages with dependencies for pkg in \"\${PACKAGES[@]}\"; do echo \" Downloading \${pkg}...\" apt-get download \"\${pkg}\" || echo \"Warning: Could not download \${pkg}\" done # Move all .deb files to output directory echo 'Collecting .deb packages...' find / -name \"*.deb\" -type f 2>/dev/null | head -1000 | xargs -I {} cp {} \"\${OUTPUT_DIR}/\" || true DEB_COUNT=\$(ls -1 \"\${OUTPUT_DIR}\"/*.deb 2>/dev/null | wc -l || echo 0) echo '' echo '=========================================' echo 'Download Complete!' echo '=========================================' echo \"Downloaded \${DEB_COUNT} .deb packages to \${OUTPUT_DIR}\" echo '=========================================' # Create package list for reference cat > /cache/package-list.txt << EOF # Ubuntu 26.04 Package List # Generated: \$(date -u +\"%Y-%m-%dT%H:%M:%SZ\") # Total packages: \${DEB_COUNT} \$(ls -1 \"\${OUTPUT_DIR}\"/*.deb 2>/dev/null | xargs -n1 basename 2>/dev/null | sort || echo 'No packages downloaded') EOF echo 'Package list created: /cache/package-list.txt' "