If you supply massive amounts of text to cracklib-format you must have enough free space available for use by the sort(1) command. If you do not have 20Mb free in /var/tmp (or whatever temporary area your sort(1) command uses), have a look at the /usr/sbin/cracklib-format program which is a sh(1) program. You can usually tweak the sort(1) command to use any large area of disk you desire, by use of the -T option. cracklib-format has a hook for this.
cracklib-packer reads from standard input a list of sorted and cleaned words and creates a database in the directory and prefix given by the command line argument cracklib_dictpath. Three files are created with the suffixes of .hwm, .pwd, and .pwi. These three files are in the format that the FascistCheck(3) subroutine, cracklib-unpacker(8), and cracklib-check(8), utilities understand. The number of words read and written are printed on stdout(3).
cracklib-unpacker reads from the database in the directory and prefix given by the command line argument cracklib_dictpath and outputs on standard output the list of words that make up the database.
The database is in a binary format generated by the utilities cracklib-format(8) and cracklib-packer(8). On a Debian system the database is located in the directory /var/cache/cracklib/cracklib_dict and is generated daily with the program /etc/cron.daily/cracklib. The location is also defined in the header file crack.h using the constant CRACKLIB_DICTPATH though none of the subroutines in the cracklib libraries have this location hardcoded into their implementations.