summaryrefslogtreecommitdiff
path: root/examples/make-local-mirror
blob: 8c359731b4d6cbd93e0266fb9e14607a1d31173e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#! /bin/sh -e

# This is an example of how to build a local mirror containing only the
# index files, not the packages themselves. If you put something similar to
# this in a cron job, then you can run madison-lite locally. Be sure to
# change the various hostnames to appropriate mirrors, set MIRROR to a
# suitable directory, and fill the mirror directory into your madison-lite
# configuration file.
#
# If you are reading this after the release of sarge, then you may need to
# change the lists of distributions and architectures.

HOST_MAIN=${HOST_MAIN:-'ftp://ftp.debian.org/debian'}
HOST_NONUS=${HOST_NONUS:-'ftp://non-us.debian.org/debian-non-US'}
HOST_SECURITY=${HOST_SECURITY:-'ftp://security.debian.org/debian-security'}
MIRROR=${MIRROR:-/tmp/mirror}

WGET_OPTS=${WGET_OPTS-'-q -N --passive-ftp'}

umask 002

mkdir -p "$MIRROR"
cd "$MIRROR"

mkdir -p dists
cd dists

archives='main non-US security'
components='main contrib non-free'

for archive in $archives; do
    case $archive in
	main)
	    host="$HOST_MAIN"
	    suitesuffix=''
	    suites='stable proposed-updates testing testing-proposed-updates unstable experimental'
	    ;;
	non-US)
	    host="$HOST_NONUS"
	    suitesuffix='/non-US'
	    suites='stable proposed-updates testing testing-proposed-updates unstable'
	    ;;
	security)
	    host="$HOST_SECURITY"
	    suitesuffix='/updates'
	    suites='stable testing'
	    ;;
	*)
	    echo "Internal error: archive '$archive'?" >&2
	    exit 1
    esac

    for suite in $suites; do
	if [ "$archive" = main ]; then
	    suitehere="$suite"
	else
	    suitehere="$suite-$archive"
	fi

	mkdir -p "$suitehere"
	root=dists
	case $suite in
	    oldstable)
		arches='alpha arm i386 m68k powerpc sparc'
		;;
	    stable)
		arches='alpha arm hppa i386 ia64 m68k mips mipsel powerpc s390 sparc'
		;;
	    testing|unstable|experimental)
		arches='alpha amd64 arm hppa i386 ia64 m68k mips mipsel powerpc s390 sparc'
		;;
	esac
	for component in $components; do
	    mkdir -p "$suitehere/$component"
	    for arch in $arches; do
		mkdir -p "$suitehere/$component/binary-$arch"
		wget $WGET_OPTS -O "$suitehere/$component/binary-$arch/Packages.gz" "$host/$root/$suite$suitesuffix/$component/binary-$arch/Packages.gz"
	    done
	    mkdir -p "$suite/$component/source"
	    wget $WGET_OPTS -O "$suite/$component/source/Sources.gz" "$host/$root/$suite$suitesuffix/$component/source/Sources.gz"
	done
    done
done

exit 0