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 \
    --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?

> > (Also, I'd prefer to use hardlinks, to avoid making unnecessary copies.)
> 
> 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.

Reply via email to