"-o", "APT::Get::Allow-Change-Held-Packages=true",
"-o", "APT::Get::Allow-Remove-Essential=true",
"-o", "APT::Sandbox::User=root",
- "-o", f"Dir::Cache={state.cache_dir}",
+ "-o", f"Dir::Cache={state.cache_dir / 'apt'}",
"-o", f"Dir::State={state.pkgmngr / 'var/lib/apt'}",
"-o", f"Dir::State::status={state.root / 'var/lib/dpkg/status'}",
"-o", f"Dir::Etc::trusted={trustedkeys}",
f"--releasever={state.config.release}",
f"--installroot={state.root}",
"--setopt=keepcache=1",
- f"--setopt=cachedir={state.cache_dir}",
+ f"--setopt=cachedir={state.cache_dir / ('libdnf5' if dnf.endswith('dnf5') else 'dnf')}",
f"--setopt=reposdir={state.pkgmngr / 'etc/yum.repos.d'}",
f"--setopt=varsdir={state.pkgmngr / 'etc/dnf/vars'}",
f"--setopt=persistdir={state.pkgmngr / 'var/lib/dnf'}",
gpgdir = state.pkgmngr / "etc/pacman.d/gnupg/"
gpgdir = gpgdir if gpgdir.exists() else Path("/etc/pacman.d/gnupg/")
+ with umask(~0o755):
+ (state.cache_dir / "pacman/pkg").mkdir(parents=True, exist_ok=True)
+
cmdline: list[PathString] = [
"pacman",
"--config", state.pkgmngr / "etc/pacman.conf",
"--root", state.root,
"--logfile=/dev/null",
- "--cachedir", state.cache_dir,
+ "--cachedir", state.cache_dir / "pacman/pkg",
"--gpgdir", gpgdir,
"--hookdir", state.root / "etc/pacman.d/hooks",
"--arch", state.config.distribution.architecture(state.config.architecture),
f"ZYPP_CONF={state.pkgmngr / 'etc/zypp/zypp.conf'}",
"zypper",
f"--root={state.root}",
- f"--cache-dir={state.cache_dir}",
+ f"--cache-dir={state.cache_dir / 'zypp'}",
f"--reposd-dir={state.pkgmngr / 'etc/zypp/repos.d'}",
"--gpg-auto-import-keys" if state.config.repository_key_check else "--no-gpg-checks",
"--non-interactive",