126 lines
3.0 KiB
Bash
Executable File
126 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Download DEB Packages Script for Offline Installation
|
|
# This script downloads all system .deb packages required for offline installation
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
SYSTEM_DIR="$SCRIPT_DIR/repo/system-packages"
|
|
DEB_DIR="$SYSTEM_DIR/debs"
|
|
|
|
echo "=========================================="
|
|
echo "Downloading DEB Packages for Offline Install"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
# Create debs directory
|
|
mkdir -p "$DEB_DIR"
|
|
|
|
# Check if running on Debian/Ubuntu/Raspberry Pi OS
|
|
if ! command -v apt-get &> /dev/null; then
|
|
echo "Error: This script requires apt-get (Debian/Ubuntu/Raspberry Pi OS)"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Reading package list from: $SYSTEM_DIR/apt-packages.txt"
|
|
echo ""
|
|
|
|
# Update package cache
|
|
echo "Updating package cache..."
|
|
sudo apt update
|
|
|
|
# Read packages from file
|
|
PACKAGES=$(grep -v '^#' "$SYSTEM_DIR/apt-packages.txt" | grep -v '^$' | tr '\n' ' ')
|
|
|
|
echo "Packages to download:"
|
|
echo "$PACKAGES"
|
|
echo ""
|
|
|
|
# Download packages and dependencies
|
|
echo "Downloading packages with dependencies..."
|
|
cd "$DEB_DIR"
|
|
|
|
# Use apt-get download to get .deb files
|
|
for pkg in $PACKAGES; do
|
|
echo "Downloading: $pkg"
|
|
apt-get download "$pkg" 2>/dev/null || echo " Warning: Could not download $pkg"
|
|
done
|
|
|
|
# Download dependencies
|
|
echo ""
|
|
echo "Downloading dependencies..."
|
|
sudo apt-get install --download-only --reinstall -y $PACKAGES
|
|
|
|
# Copy downloaded debs from apt cache
|
|
echo ""
|
|
echo "Copying packages from apt cache..."
|
|
sudo cp /var/cache/apt/archives/*.deb "$DEB_DIR/" 2>/dev/null || true
|
|
|
|
# Remove duplicate packages
|
|
echo ""
|
|
echo "Removing duplicates..."
|
|
cd "$DEB_DIR"
|
|
for file in *.deb; do
|
|
[ -f "$file" ] || continue
|
|
basename="${file%%_*}"
|
|
count=$(ls -1 "${basename}"_*.deb 2>/dev/null | wc -l)
|
|
if [ "$count" -gt 1 ]; then
|
|
# Keep only the latest version
|
|
ls -t "${basename}"_*.deb | tail -n +2 | xargs rm -f
|
|
fi
|
|
done
|
|
|
|
# Create installation order file
|
|
echo ""
|
|
echo "Creating installation order..."
|
|
cat > "$DEB_DIR/install-order.txt" << 'EOF'
|
|
# Install packages in this order to resolve dependencies
|
|
|
|
# 1. Base tools and libraries
|
|
python3-pip_*.deb
|
|
python3-setuptools_*.deb
|
|
python3-dev_*.deb
|
|
zlib1g-dev_*.deb
|
|
|
|
# 2. SDL2 libraries
|
|
libsdl2-dev_*.deb
|
|
libsdl2-image-dev_*.deb
|
|
libsdl2-mixer-dev_*.deb
|
|
libsdl2-ttf-dev_*.deb
|
|
|
|
# 3. Multimedia libraries
|
|
libportmidi-dev_*.deb
|
|
libswscale-dev_*.deb
|
|
libavformat-dev_*.deb
|
|
libavcodec-dev_*.deb
|
|
libavcodec-extra_*.deb
|
|
|
|
# 4. FFmpeg and codecs
|
|
ffmpeg_*.deb
|
|
libx264-dev_*.deb
|
|
|
|
# 5. GStreamer
|
|
gstreamer1.0-plugins-base_*.deb
|
|
gstreamer1.0-plugins-good_*.deb
|
|
gstreamer1.0-plugins-bad_*.deb
|
|
gstreamer1.0-alsa_*.deb
|
|
|
|
# 6. Network tools
|
|
wget_*.deb
|
|
curl_*.deb
|
|
EOF
|
|
|
|
# Summary
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "DEB Download Complete!"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "Downloaded .deb files: $(ls -1 *.deb 2>/dev/null | wc -l)"
|
|
echo "Location: $DEB_DIR"
|
|
echo ""
|
|
echo "To install offline, copy the repo folder and run:"
|
|
echo " bash install.sh --offline"
|
|
echo ""
|