#!/bin/sh # lh_chroot_sources(1) - manage /etc/apt/sources.list # Copyright (C) 2006-2007 Daniel Baumann # # live-helper comes with ABSOLUTELY NO WARRANTY; for details see COPYING. # This is free software, and you are welcome to redistribute it # under certain conditions; see COPYING for details. set -e # Source common functions for FUNCTION in /usr/share/live-helper/functions/*.sh do . ${FUNCTION} done # Set static variables DESCRIPTION="manage /etc/apt/sources.list" HELP="" USAGE="${PROGRAM} {install|remove} [--force]" Arguments "${@}" Echo_debug "Init ${PROGRAM}" # Reading configuration files Read_conffile config/common Read_conffile config/bootstrap Read_conffile config/chroot Read_conffile config/binary Read_conffile config/source Set_defaults Breakpoint "chroot_sources: Init" # Requiring stage file Require_stagefile .stage/bootstrap case "${1}" in install) # Checking stage file Check_stagefile .stage/chroot_sources # Checking lock file Check_lockfile .lock # Creating lock file Create_lockfile .lock # Configure custom sources.list echo "deb ${LIVE_MIRROR_BOOTSTRAP} ${LIVE_DISTRIBUTION} ${LIVE_SECTIONS}" > chroot/etc/apt/sources.list if [ "${LIVE_SOURCE}" = "enabled" ] then echo "deb-src ${LIVE_MIRROR_BOOTSTRAP} ${LIVE_DISTRIBUTION} ${LIVE_SECTIONS}" >> chroot/etc/apt/sources.list fi if [ "${LIVE_SECURITY}" = "enabled" ] then case "${LH_MODE}" in debian) if [ "${LIVE_DISTRIBUTION}" != "sid" ] && [ "${LIVE_DISTRIBUTION}" != "unstable" ] then echo "deb ${LIVE_MIRROR_BOOTSTRAP_SECURITY} ${LIVE_DISTRIBUTION}/updates ${LIVE_SECTIONS}" >> chroot/etc/apt/sources.list if [ "${LIVE_SOURCE}" = "enabled" ] then echo "deb-src ${LIVE_MIRROR_BOOTSTRAP_SECURITY} ${LIVE_DISTRIBUTION}/updates ${LIVE_SECTIONS}" >> chroot/etc/apt/sources.list fi fi ;; ubuntu) echo "deb ${LIVE_MIRROR_BOOTSTRAP_SECURITY} ${LIVE_DISTRIBUTION}-security ${LIVE_SECTIONS}" >> chroot/etc/apt/sources.list if [ "${LIVE_SOURCE}" = "enabled" ] then echo "deb-src ${LIVE_MIRROR_BOOTSTRAP_SECURITY} ${LIVE_DISTRIBUTION}-security ${LIVE_SECTIONS}" >> chroot/etc/apt/sources.list fi ;; esac fi # Check local sources.list if ls config/chroot_sources/*.bootstrap &> /dev/null then echo "" >> chroot/etc/apt/sources.list echo "# Custom repositories" >> chroot/etc/apt/sources.list for FILE in config/chroot_sources/*.bootstrap do cat ${FILE} | grep -v "^##" >> chroot/etc/apt/sources.list done fi # Update indices from cache if [ "${LH_CACHE_INDICES}" = "enabled" ] && [ -d cache/indices_bootstrap ] then if ls cache/indices_bootstrap/secring.gpg* &> /dev/null then cp -f cache/indices_bootstrap/secring.gpg* chroot/etc/apt fi if ls cache/indices_bootstrap/trusted.gpg* &> /dev/null then cp -f cache/indices_bootstrap/trusted.gpg* chroot/etc/apt fi if [ -f cache/indices_bootstrap/pkgcache.bin ] then cp -f cache/indices_bootstrap/pkgcache.bin chroot/var/cache/apt fi if [ -f cache/indices_bootstrap/srcpkgcache.bin ] then cp -f cache/indices_bootstrap/srcpkgcache.bin chroot/var/cache/apt fi if ls cache/indices_bootstrap/*_Packages &> /dev/null then cp -f cache/indices_bootstrap/*_Packages chroot/var/lib/apt/lists fi if ls cache/indices_bootstrap/*_Sources &> /dev/null then cp -f cache/indices_bootstrap/*_Sources chroot/var/lib/apt/lists fi if ls cache/indices_bootstrap/*_Release* &> /dev/null then cp -f cache/indices_bootstrap/*_Release* chroot/var/lib/apt/lists fi if [ "${LH_APT}" = "aptitude" ] && [ ! -x /usr/bin/aptitude ] then Chroot "apt-get install --yes --force-yes aptitude" fi else # Get fresh indices # Check local gpg keys if ls config/chroot_sources/*.bootstrap.gpg &> /dev/null then for FILE in config/chroot_sources/*.bootstrap.gpg do cp ${FILE} chroot/root Chroot "apt-key add /root/`basename ${FILE}`" rm -f chroot/root/`basename ${FILE}` done fi # Check local keyring packages if ls config/chroot_sources/*.deb &> /dev/null then for PACKAGE in config/chroot_sources/*.deb do cp ${PACKAGE} chroot/root Chroot "dpkg -i `basename ${PACKAGE}`" rm -f chroot/root/`basename ${PACKAGE}` done fi # Installing aptitude if [ "${LH_APT}" = "apt" ] || [ "${LH_APT}" = "apt-get" ] then Chroot "apt-get update" elif [ "${LH_APT}" = "aptitude" ] then if [ ! -x /usr/bin/aptitude ] then Chroot "apt-get update" Chroot "apt-get install --yes --force-yes aptitude" fi Chroot "aptitude update" fi # Installing keyring packages if [ -n "${LIVE_KEYRING_PACKAGES}" ] then Chroot "apt-get install --yes --force-yes ${LIVE_KEYRING_PACKAGES}" Chroot "apt-get update" fi if [ "${LH_CACHE_INDICES}" = "enabled" ] then if [ ! -d cache/indices_bootstrap ] then mkdir -p cache/indices_bootstrap fi cp -f chroot/etc/apt/secring.gpg* cache/indices_bootstrap cp -f chroot/etc/apt/trusted.gpg* cache/indices_bootstrap cp -f chroot/var/cache/apt/pkgcache.bin cache/indices_bootstrap cp -f chroot/var/cache/apt/srcpkgcache.bin cache/indices_bootstrap cp -f chroot/var/lib/apt/lists/*_Packages cache/indices_bootstrap cp -f chroot/var/lib/apt/lists/*_Sources cache/indices_bootstrap cp -f chroot/var/lib/apt/*_Release* cache/indices_bootstrap fi fi # Creating stage file Create_stagefile .stage/chroot_sources ;; remove) # Checking lock file Check_lockfile .lock # Creating lock file Create_lockfile .lock # Configure generic indices if [ "${LIVE_BINARY_INDICES}" = "enabled" ] then # Don't do anything if it's not required if [ "${LIVE_MIRROR_BOOTSTRAP}" = "${LIVE_MIRROR_BINARY}" ] && \ [ "${LIVE_MIRROR_BOOTSTRAP_SECURITY}" = "${LIVE_MIRROR_BINARY_SECURITY}" ] then exit 0 fi # Cleaning apt list cache rm -rf chroot/var/lib/apt/lists mkdir -p chroot/var/lib/apt/lists/partial echo "deb ${LIVE_MIRROR_BINARY} ${LIVE_DISTRIBUTION} ${LIVE_SECTIONS}" > chroot/etc/apt/sources.list if [ "${LIVE_SOURCE}" = "enabled" ] then echo "deb-src ${LIVE_MIRROR_BINARY} ${LIVE_DISTRIBUTION} ${LIVE_SECTIONS}" >> chroot/etc/apt/sources.list fi if [ "${LIVE_SECURITY}" = "enabled" ] then case "${LH_MODE}" in debian) if [ "${LIVE_DISTRIBUTION}" != "sid" ] && [ "${LIVE_DISTRIBUTION}" != "unstable" ] then echo "deb ${LIVE_MIRROR_BINARY_SECURITY} ${LIVE_DISTRIBUTION}/updates ${LIVE_SECTIONS}" >> chroot/etc/apt/sources.list if [ "${LIVE_SOURCE}" = "enabled" ] then echo "deb-src ${LIVE_MIRROR_BINARY_SECURITY} ${LIVE_DISTRIBUTION}/updates ${LIVE_SECTIONS}" >> chroot/etc/apt/sources.list fi fi ;; ubuntu) echo "deb ${LIVE_MIRROR_BINARY_SECURITY} ${LIVE_DISTRIBUTION}-security ${LIVE_SECTIONS}" >> chroot/etc/apt/sources.list if [ "${LIVE_SOURCE}" = "enabled" ] then echo "deb-src ${LIVE_MIRROR_BINARY_SECURITY} ${LIVE_DISTRIBUTION}-security ${LIVE_SECTIONS}" >> chroot/etc/apt/sources.list fi ;; esac fi # Check local sources.list if ls config/chroot_sources/*.binary &> /dev/null then echo "" >> chroot/etc/apt/sources.list echo "# Custom repositories" >> chroot/etc/apt/sources.list for FILE in config/chroot_sources/*.binary do cat ${FILE} | grep -v "^##" >> chroot/etc/apt/sources.list done fi # Check local gpg keys if ls config/chroot_sources/*.binary.gpg &> /dev/null then for FILE in config/chroot_sources/*.binary.gpg do cp ${FILE} chroot/root Chroot "apt-key add /root/`basename ${FILE}`" rm -f chroot/root/`basename ${FILE}` done fi case "${LH_APT}" in apt|apt-get) Chroot "apt-get update" ;; aptitude) Chroot "aptitude update" ;; esac fi # Cleaning apt packages cache rm -rf chroot/var/cache/apt mkdir -p chroot/var/cache/apt/archives/partial # Removing old files rm -f chroot/var/lib/dpkg/available-old rm -f chroot/var/lib/dpkg/diversions-old rm -f chroot/var/lib/dpkg/statoverride-old rm -f chroot/var/lib/dpkg/status-old # Removing stage file rm -f .stage/chroot_sources ;; *) Usage ;; esac