From a92a5aee8dafe76cd0605d82521b0bd2b35c5204 Mon Sep 17 00:00:00 2001 From: parazyd Date: Sun, 21 May 2017 19:11:10 +0200 Subject: [PATCH] apt caching proof of concept --- apt-cache/Packages.gz | Bin 0 -> 29 bytes config | 7 +++-- zlibs/bootstrap | 2 -- zlibs/helpers | 60 ++++++++++++++++++++++++++++++++++++++++-- zlibs/iso | 1 - zlibs/sysconf | 2 ++ 6 files changed, 65 insertions(+), 7 deletions(-) create mode 100644 apt-cache/Packages.gz diff --git a/apt-cache/Packages.gz b/apt-cache/Packages.gz new file mode 100644 index 0000000000000000000000000000000000000000..743bcb193a99e17aeb746502e0185c07f8ebf534 GIT binary patch literal 29 dcmb2|=HR$}OfiyyIUq4PJ25@An1PuA1^{/'$script'.log@' + notice "chrooting to execute $script..." sudo chmod +x "$strapdir/$script" || zerr sudo -E chroot "$strapdir" "/$script" || zerr @@ -288,15 +290,18 @@ chroot-script() { ;; *) local script="$1" + [[ "$APT_CACHE" = 1 ]] && { aptcache on "$strapdir/mnt" || zerr } ## logging sudo sed -i "$strapdir/$script" \ -e 's@#!/bin/sh@#!/bin/sh\'$'\nset -x ; exec 2>/'$script'.log@' notice "chrooting to execute $script..." - sudo chmod +x "$strapdir/$script" || zerr + sudo chmod +x "$strapdir/$script" || zerr sudo -E chroot "$strapdir" "/$script" || zerr sudo mv -f "$strapdir/${script}.log" "$R/log/" + + [[ "$APT_CACHE" = 1 ]] && { aptcache off "$strapdir/mnt" || zerr } ;; esac @@ -352,6 +357,57 @@ blend_postinst() { return 0 } +aptcache() { + fn aptcache "$*" + req=(aptcachedir watdo werdo APT_CACHE) + local watdo="$1" + local werdo="$2" + ckreq || return 1 + + [[ $APT_CACHE = 1 ]] || return 0 + + case "$watdo" in + on) + act "mounting local apt cache" + sudo mount -o bind "$aptcachedir" "$werdo" || zerr + ;; + off) + act "umounting local apt cache" + sudo umount "$werdo" || zerr + ;; + esac +} + +fill_apt_cache() { + fn fill_apt_cache + req=(strapdir APT_CACHE) + ckreq || return 1 + + [[ $APT_CACHE = 1 ]] || return 0 + + notice "filling local apt cache" + + cat </dev/null +#!/bin/sh + +# NOTE: do we need apt update or does it read the remote(s)? +apt-get update +apt-get install dpkg-dev + +cp -afv /var/cache/apt/archives/*.deb /mnt +cd /mnt +dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz +cd - + +apt-get purge dpkg-dev + +sed -i -e "@deb file:/mnt@d" /etc/apt/sources.list +apt-get update + +EOF + chroot-script fill-apt-cache || zerr +} + silly() { fn silly "$@" local arg1="$1" diff --git a/zlibs/iso b/zlibs/iso index 15a24e2..3d68322 100644 --- a/zlibs/iso +++ b/zlibs/iso @@ -33,7 +33,6 @@ iso_prepare_strap() { apt-get update apt-get --yes --force-yes install dialog live-boot live-boot-initramfs-tools apt-get --yes --force-yes autoremove -apt-get clean EOF chroot-script -d isoprep || zerr diff --git a/zlibs/sysconf b/zlibs/sysconf index df8d551..aa2e32e 100644 --- a/zlibs/sysconf +++ b/zlibs/sysconf @@ -118,6 +118,8 @@ conf_print_sourceslist() { ckreq || return 1 cat <