Apt-move is a nifty little tool that moves (or copies) existing packages out of your cache and into a debian archive format. Apt-move creates all three elements of the archive: The various directories full of packages, the Release file, and the Packages file.
This is only a useful technique if your package cache is complete. If you have cleaned it out since your last major upgrade, then this technique may fail. It's easy to regenerate the cache, though the large download is probably what you were trying to avoid!
1) Prepare the local mirror. For this example, let's use 6.0 (squeeze):
Create a place to host the mirror # mkdir /var/local/mirrors Install the apt-move package. # apt-get install apt-move Edit the configuration file: # nano /etc/apt-move.conf LOCALDIR=/var/local/mirrors DIST=squeeze COPYONLY=yes Create the mirror # apt-move updateYou can see the mirror in
2) Use the new mirror to debootstrap a new chroot environment
Create the new environment # mkdir /var/new-env Debootstrap from the local mirror # debootstrap squeeze /var/new-env file:///var/local/mirrorsEnvironment complete, ready to chroot into.
3) If debootstrap fails, it's probably due to a file missing from the cache. There are two ways to regenerate.
The hard way is to work error by error:
1) Run debootstrap, and identifying the missing file from the error message.
dpkg -S filenameto identify the package name.
apt-get --reinstall install packagenameto add it to the package cache.
apt-move updateto move the package to the mirror.
5) Run debootstrap again.
The easy way is to use debootstrap to recreate all the missing files, and copy them into the cache:
# mkdir /tmp/cache # debootstrap --arch=i386 --download-only squeeze /tmp/cache # mv /tmp/cache/var/cache/apt/archives/* /var/cache/apt/ # rm -rf /tmp/cache # apt-move update