Hi, Quoting Josh Triplett (2020-09-26 22:47:50) > On Sat, 26 Sep 2020 22:09:57 +0200 Johannes Schauer <jo...@debian.org> wrote: > > Quoting Josh Triplett (2020-09-26 21:47:56) > > > > so... you want something like this: > > > > > > > > $ mmdebstrap --customize-hook='sync-out /var/cache/apt/archives > > > > ./cache' unstable /dev/null > > > > $ mmdebstrap --variant=apt --setup-hook='mkdir -p > > > > "$1"/var/cache/apt/archives' --setup-hook='sync-in ./cache > > > > /var/cache/apt/archives' unstable output.tar > > > > > > > > The first command fills your local directory "./cache" with the > > > > contents of > > > > /var/cache/apt/archives from the first run while the second invocation > > > > gets the > > > > contents from that directory and thus is able to operate a bit faster. > > > > > > By the time customize-hook runs, mmdebstrap has already cleared > > > /var/cache/apt/archives, so there's nothing to copy out. > > > > then why is my ./cache directory filled with lots of *.deb files? I tried > > out > > the commands above before hitting the send button. > > Try this: > > sudo mmdebstrap \ > --mode=sudo \
the sudo mode is automatically chosen, when you run mmdebstrap as root > --variant=apt \ > --include='systemd-sysv udev' \ > --setup-hook='mkdir -p cache "$1"/var/cache/apt/archives' \ > --setup-hook='sync-in ./cache /var/cache/apt/archives' \ > --customize-hook='ls -l "$1"/var/cache/apt/archives' \ > --customize-hook='sync-out /var/cache/apt/archives ./cache' \ > --customize-hook='rm -rf "$1/var/log/journal"' \ > --dpkgopt='path-exclude=/lib/systemd/system/fstrim.*' \ > --dpkgopt='path-exclude=/lib/systemd/system/*.timer' \ > --dpkgopt='path-exclude=/usr/share/bash-completion/*' \ > --dpkgopt='path-exclude=/usr/share/bug/*' \ > --dpkgopt='path-exclude=/usr/share/doc/*' \ > --dpkgopt='path-exclude=/usr/share/info/*' \ > --dpkgopt='path-exclude=/usr/share/lintian/*' \ > --dpkgopt='path-exclude=/usr/share/locale/*' \ > --dpkgopt='path-exclude=/usr/share/man/*' \ > --dpkgopt='path-include=/usr/share/man/man[0-9]/' \ > --dpkgopt='path-exclude=/usr/share/zsh/*' \ > sid target > > Try running that twice. The first time, the ls at the end does show some > archives (though only for the subset of packages installed later by > --include and its dependencies, not the essential packages). The second > time, apt still does the download, and the ls shows nothing. > > Is there something wrong with the above? Yes, one bit is missing. For the initial Essential:yes package set, mmdebstrap deletes the *.deb files itself after installing them. So you have to copy them out of the chroot before the deletion happens, so between downloading and extracting. Like so: $ sudo mmdebstrap --variant=apt --include='systemd-sysv udev' \ > --setup-hook='mkdir -p cache "$1"/var/cache/apt/archives' \ > --setup-hook='sync-in ./cache /var/cache/apt/archives' \ > --extract-hook="sync-out /var/cache/apt/archives ./cache" \ > --customize-hook='sync-out /var/cache/apt/archives ./cache' \ > unstable debian-unstable > > This will not work with all modes. I guess you are using root or fakechroot > > mode? > > Yes, I'm using root mode, as I need a directory of files I can feed to > `mkfs.ext4 -d`. In theory I might be able to use fakechroot mode and > run mkfs.ext4 underneath mmdebstrap; I may try that once I've gotten the > existing setup to do everything I need it to. Maybe the ability of mmdebstrap to produce ext2 filesystems directly can be useful for you. You will then not need root privileges. Thanks! cheers, josch
signature.asc
Description: signature