Contents
The problems of mixed suites
There can be problems mixing rapidly changing suites with stable suites in a single Multistrap configuration, especially if you want reproducible results. Unstable is constantly changing, frequently includes packages which are not installable and the dependency chain of unchanged packages can still be affected by transitions in other packages. Multistrap depends on apt for dependency resolution and if apt is not able to resolve the entire dependency chain, it will fail the entire chain, leaving multistrap with no option but to fail the bootstrap process. One method to avoid such problems is to insulate yourself from the changes in unstable, either by choosing to use testing instead of unstable or by taking a partial copy of the bits of unstable which you need as a partial mirror. ?reprepro is recommended.
reprepro setup
Choose your directory which will act as the top level of the repository. Whilst some of the directories created below this point may be publicly visible, not all of the directories should be exported. It is usually best to create another directory for the public information and symlink the dists, pool and, if used, logs directories to that public location. The http:// address of that public location can then be passed to ?apt and ?multistrap. If you want to use file:///, use copy:/// instead.
reprepro configuration
# conf/distributions Origin: Debian Label: mypartialMirror Suite: unstable Codename: sid Version: 1.1 Architectures: i386 amd64 armel powerpc mips mipsel sh4 source Components: main dev doc debug java UDebComponents: main Description: Selected packages from unstable Log: sid-log
Configuration Changes
Select the architectures you want to host, remove those which you don't need. If you are bringing packages in from Emdebian, retain the relevant components; change the components to match Debian (main, contrib, non-free) if you want to pull in packages from Debian.
Generating the repository
$ reprepro export $ reprepro createsymlinks
Until you put any packages into the repository, pool will not exist.
Adding packages
$ reprepro includedsc sid /path/to/source_version.dsc $ reprepro includedeb sid /path/to/binary_version.deb
Only include the binaries that you need - there is no need to include every binary package built by the source package. To make life easier for future updates, always include the relevant source package too - reprepro uses the source package to track changes in the binary packages.
Updating packages
Having a partial mirror puts the updating of the packages under your explicit control but there will still be times when you do want the packages updated. By only including the selected packages which you need, these specific binary and source packages can be updated automatically.
# conf/updates Name: updaterule Method: http://ftp.uk.debian.org/debian Suite: unstable Architectures: i386 amd64 arm armel powerpc mips mipsel source Components: main FilterList: deinstall pkglist VerifyRelease: AED4B06F473041FA
Add the name of this rule to the distribution stanza in conf/distributions.
Update: updaterule
See the reprepro manpage for more information.
See also http://lostwebsite.wordpress.com/2008/10/21/partial-debian-mirrors/