Installation using a pile of floppies, at least one of which (usually
the first) contains the Packages file, and the rest of which contain
the binary *.deb files.

If you are installing software from the `non-free' or `contrib'
directories as well as the main Debian distribution you must have the
Packages files for those areas on separate floppies.  The usual way to
do this is to put each Packages file on the first floppy which contains
packages from the relevant area.
