- download-all-dependencies.sh: Downloads Qt6 6.10.2, source tarballs, and Ubuntu .deb packages - download-deb-packages.sh: Downloads Ubuntu .deb packages in Docker container - verify-offline-cache.sh: Verifies offline cache completeness - offline-cache/README.md: Documentation for offline cache structure and usage - .gitignore: Exclude external-dependencies/offline-cache/ from version control (2.3GB) The offline cache must be transferred to air-gapped environment via secure media. Excluded from git due to size and security best practices. Co-authored-by: Copilot <2235566219+Copilot@users.noreply.github.com> Entire-Checkpoint: 01M6PFZM0GHMBF46BKYPKZC192
137 lines
2.9 KiB
Bash
Executable File
137 lines
2.9 KiB
Bash
Executable File
#!/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'
|
|
" |