- only download Release files once and not by apt as well as with curl
and thus avoid a mirror push happening between both downloads
- no heuristic needed to place the file in their correct mirror
location
- no manual checksum checking
- only throttle download speed when actually downloading and not when
retrieving files from the cache
- no translation of filenames between how the epoch colon is stored in
files in /var/cache/apt/archives versus how it is stored in files on
the mirrors
- no special handling of stable update and security mirrors
- implemented in Python instead of shell and thus an order of magnitude
faster
- multiple individual shell scripts instead of one 3.5k line monster
- tests driven by Python script allowing:
* declarative test description in coverage.txt
* collecting errors instead of aborting on first error
* skipping tests
* running specific tests
- factor out package downloading function
- replace -oApt::Get::Download-Only=true by -oDebug::pkgDpkgPm=1
- remove guessing of package names in /var/cache/apt/archives/
- drop edsp parsing with proxysolver/mmdebstrap-dump-solution to obtain
downloaded filenames in favour of -oDpkg::Pre-Install-Pkgs::=cat
- /var/cache/apt/archives/ is now allowed to contain packages
- drop --skip=download/empty
- file:// mirrors are now supported if their path is available inside
the chroot
* remove_tree() requires the CWD to be accessible or fails with
cannot chdir to $CWD from $DIR_TO_DELETE: Permission denied, aborting.
* CWD is not always accessible -- example: run mmdebstrap from a
directory only accessible by the current user (like a tempdir) in
unshare mode
* find from findutils *also* requires CWD to be accessible but it's
easier to temporarily change CWD in a subprocess because using
there is no utility in perl core that changes CWD temporarily and
cleans up after itself
* we need to use find from findutils instead of rm in unshare mode
because the root directory itself might not be removable by the
unshared user so we only want to remove its subdirectories
- instead of throwing an error, just print a warning
- can now run as root without cap_sys_admin
- can now run without mount installed
- --skip=check/canmount is not needed anymore
- assume all entries in @devfiles to be in /dev
- allow for /dev, /sys and /proc not to exist in the target and print warning
- allow for /dev entries as well as /sys and /proc not to exist on the outside
- simplify umount by storing special options in @umountopts
- remove superfluous checks for root and unshare mode
- make sure /dev entries are less than 100 chars in size for tar