apt caching proof of concept
This commit is contained in:
parent
48be0c4e91
commit
0517fd867d
Binary file not shown.
7
config
7
config
|
|
@ -20,15 +20,18 @@
|
||||||
## libdevuansdk configuration
|
## libdevuansdk configuration
|
||||||
|
|
||||||
vars+=(release version mirror section blend_name image_name vm_name)
|
vars+=(release version mirror section blend_name image_name vm_name)
|
||||||
vars+=(arch earch)
|
vars+=(arch earch aptcachedir APT_CACHE)
|
||||||
vars+=(usercredentials rootcredentials)
|
vars+=(usercredentials rootcredentials)
|
||||||
|
|
||||||
arrs+=(core_packages base_packages purge_packages blend_packages)
|
arrs+=(core_packages base_packages purge_packages blend_packages)
|
||||||
|
|
||||||
|
## enable local apt cache
|
||||||
|
APT_CACHE=1
|
||||||
|
aptcachedir="$LIBPATH/apt-cache"
|
||||||
|
|
||||||
os="devuan"
|
os="devuan"
|
||||||
release="jessie"
|
release="jessie"
|
||||||
version="1.0.0-RC2"
|
version="1.0.0"
|
||||||
mirror="http://auto.mirror.devuan.org/merged"
|
mirror="http://auto.mirror.devuan.org/merged"
|
||||||
section="main"
|
section="main"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,6 @@ apt-get --yes --force-yes install ${core_packages}
|
||||||
apt-get --yes --force-yes install ${base_packages}
|
apt-get --yes --force-yes install ${base_packages}
|
||||||
apt-get --yes --force-yes purge ${purge_packages}
|
apt-get --yes --force-yes purge ${purge_packages}
|
||||||
apt-get --yes --force-yes autoremove
|
apt-get --yes --force-yes autoremove
|
||||||
apt-get clean
|
|
||||||
|
|
||||||
rm -f /debconf.set
|
rm -f /debconf.set
|
||||||
rm -f /etc/ssh/ssh_host_*
|
rm -f /etc/ssh/ssh_host_*
|
||||||
|
|
@ -174,7 +173,6 @@ done
|
||||||
apt-get --yes --force-yes upgrade
|
apt-get --yes --force-yes upgrade
|
||||||
apt-get --yes --force-yes install ${extra_packages}
|
apt-get --yes --force-yes install ${extra_packages}
|
||||||
apt-get --yes --force-yes autoremove
|
apt-get --yes --force-yes autoremove
|
||||||
apt-get clean
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
chroot-script -d postunpack || zerr
|
chroot-script -d postunpack || zerr
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,7 @@ build_iso_dist() {
|
||||||
iso_write_isolinux_cfg || { zerr; wrapup }
|
iso_write_isolinux_cfg || { zerr; wrapup }
|
||||||
#[[ $INSTALLER = 1 ]] && iso_setup_installer || zerr
|
#[[ $INSTALLER = 1 ]] && iso_setup_installer || zerr
|
||||||
blend_postinst || { zerr; wrapup }
|
blend_postinst || { zerr; wrapup }
|
||||||
|
fill_apt_cache || { zerr; wrapup }
|
||||||
iso_squash_strap || { zerr; wrapup }
|
iso_squash_strap || { zerr; wrapup }
|
||||||
iso_xorriso_build || { zerr; wrapup }
|
iso_xorriso_build || { zerr; wrapup }
|
||||||
}
|
}
|
||||||
|
|
@ -257,7 +258,6 @@ for deb in ${custom_deb_packages}; do
|
||||||
done
|
done
|
||||||
cd /
|
cd /
|
||||||
apt-get autoremove
|
apt-get autoremove
|
||||||
apt-get clean
|
|
||||||
rm -rf /debs
|
rm -rf /debs
|
||||||
EOF
|
EOF
|
||||||
chroot-script install-debs
|
chroot-script install-debs
|
||||||
|
|
@ -269,6 +269,7 @@ chroot-script() {
|
||||||
ckreq || return 1
|
ckreq || return 1
|
||||||
|
|
||||||
mkdir -p "$R/log"
|
mkdir -p "$R/log"
|
||||||
|
|
||||||
case "x$1" in
|
case "x$1" in
|
||||||
x-d)
|
x-d)
|
||||||
local script="$2"
|
local script="$2"
|
||||||
|
|
@ -278,6 +279,7 @@ chroot-script() {
|
||||||
## logging
|
## logging
|
||||||
sudo sed -i "$strapdir/$script" \
|
sudo sed -i "$strapdir/$script" \
|
||||||
-e 's@#!/bin/sh@#!/bin/sh\'$'\nset -x ; exec 2>/'$script'.log@'
|
-e 's@#!/bin/sh@#!/bin/sh\'$'\nset -x ; exec 2>/'$script'.log@'
|
||||||
|
|
||||||
notice "chrooting to execute $script..."
|
notice "chrooting to execute $script..."
|
||||||
sudo chmod +x "$strapdir/$script" || zerr
|
sudo chmod +x "$strapdir/$script" || zerr
|
||||||
sudo -E chroot "$strapdir" "/$script" || zerr
|
sudo -E chroot "$strapdir" "/$script" || zerr
|
||||||
|
|
@ -288,15 +290,18 @@ chroot-script() {
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
local script="$1"
|
local script="$1"
|
||||||
|
[[ "$APT_CACHE" = 1 ]] && { aptcache on "$strapdir/mnt" || zerr }
|
||||||
|
|
||||||
## logging
|
## logging
|
||||||
sudo sed -i "$strapdir/$script" \
|
sudo sed -i "$strapdir/$script" \
|
||||||
-e 's@#!/bin/sh@#!/bin/sh\'$'\nset -x ; exec 2>/'$script'.log@'
|
-e 's@#!/bin/sh@#!/bin/sh\'$'\nset -x ; exec 2>/'$script'.log@'
|
||||||
|
|
||||||
notice "chrooting to execute $script..."
|
notice "chrooting to execute $script..."
|
||||||
sudo chmod +x "$strapdir/$script" || zerr
|
sudo chmod +x "$strapdir/$script" || zerr
|
||||||
sudo -E chroot "$strapdir" "/$script" || zerr
|
sudo -E chroot "$strapdir" "/$script" || zerr
|
||||||
sudo mv -f "$strapdir/${script}.log" "$R/log/"
|
sudo mv -f "$strapdir/${script}.log" "$R/log/"
|
||||||
|
|
||||||
|
[[ "$APT_CACHE" = 1 ]] && { aptcache off "$strapdir/mnt" || zerr }
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
|
@ -352,6 +357,57 @@ blend_postinst() {
|
||||||
return 0
|
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 <<EOF | sudo tee ${strapdir}/fill-apt-cache >/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() {
|
silly() {
|
||||||
fn silly "$@"
|
fn silly "$@"
|
||||||
local arg1="$1"
|
local arg1="$1"
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,6 @@ iso_prepare_strap() {
|
||||||
apt-get update
|
apt-get update
|
||||||
apt-get --yes --force-yes install dialog live-boot live-boot-initramfs-tools
|
apt-get --yes --force-yes install dialog live-boot live-boot-initramfs-tools
|
||||||
apt-get --yes --force-yes autoremove
|
apt-get --yes --force-yes autoremove
|
||||||
apt-get clean
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
chroot-script -d isoprep || zerr
|
chroot-script -d isoprep || zerr
|
||||||
|
|
|
||||||
|
|
@ -118,6 +118,8 @@ conf_print_sourceslist() {
|
||||||
ckreq || return 1
|
ckreq || return 1
|
||||||
|
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
|
deb file:/mnt ./
|
||||||
|
|
||||||
## package repositories
|
## package repositories
|
||||||
deb ${mirror} ${release} ${section}
|
deb ${mirror} ${release} ${section}
|
||||||
deb ${mirror} ${release}-updates ${section}
|
deb ${mirror} ${release}-updates ${section}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue