diff options
author | Chris Lamb <chris@chris-lamb.co.uk> | 2008-04-16 06:53:34 +0100 |
---|---|---|
committer | Daniel Baumann <daniel@debian.org> | 2011-03-09 19:03:32 +0100 |
commit | ae785955db43a135455b50b98807a26b9fb8805a (patch) | |
tree | 3e88bd1a09833be3b438f486a5b0671d6595bdc6 /hooks | |
parent | 5ea22591ab3aee75c5aa6241aa94a5c5d36c4281 (diff) | |
download | live-build-ae785955db43a135455b50b98807a26b9fb8805a.zip live-build-ae785955db43a135455b50b98807a26b9fb8805a.tar.gz |
Install local packages using a local APT repo instead of using "dpkg -i"
This patch modifies chroot_sources to build a small APT repo of the
local-packages and use that for local package installation instead of
"dpkg -i". This has a few advantages:
* Removes the true ugliness that is "dpkg -i *.deb && apt-get install -f".
This not only is slow and brittle, it causes scary "dpkg dependency
error" messages to appear in build logs.
* We can (ie. not implemented here) move to installing all the packages
from:
- lh_chroot_packages (ie. ${LH_PACKAGES})
- lh_chroot_local-packages (ie. config/chroot_local-packages/*.deb)
- lh_chroot_local-packageslists
- lh_chroot_packages-lists
- lh_chroot_linux-image
.. in one shot. This would primarily improve speed as we would not keep
invoking ${LH_APT}, and package installations can share triggers and
suchlike -- installing a custom live-initramfs via local packages
currently costs an additional "update-initramfs -u" call.
It would also fix a number of obscure dependency cases, such as the one
documented in #475739, and--if the user is using aptitude--may even
result in better resolution choices.
* Removes some messy and somewhat brittle code in lh_chroot_linux-image
that edgecases a local live-initramfs.
The disadvantages are:
* If local packages are being used and we are building in a chroot, we
must refresh the sources list and rebuild the repo before building the
binary images. (However, before this patch, we had to do this anyway if
the binary mirrors were different from the chroot ones.)
* We must add a little hack to the minimal hook to detect whether we are
using local packages and not remove apt-utils (which creates the
repository in lh_chroot_sources) if that is the case -- we cannot simply
use "Install_package" inside lh_chroot_sources as we are not guaranteed
to have working APT data because the minimal hook deliberately removes
them!
Diffstat (limited to 'hooks')
-rwxr-xr-x | hooks/minimal | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/hooks/minimal b/hooks/minimal index ff02ddc..f081fcc 100755 --- a/hooks/minimal +++ b/hooks/minimal @@ -9,15 +9,27 @@ set -e -# Removing unused packages -for PACKAGE in apt-utils aptitude man-db manpages info wget -do +Purge() { + PACKAGE="${1}" + if ! apt-get remove --purge --yes "${PACKAGE}" then echo "WARNING: ${PACKAGE} isn't installed" fi +} + +# Removing unused packages +for PACKAGE in aptitude man-db manpages info wget +do + Purge ${PACKAGE} done +# Remove apt-utils if we do not require it for lh_chroot_sources +if [ ! -e chroot/root/local-packages/Packages.gz ] +then + Purge apt-utils +fi + apt-get autoremove --yes || true # Removing unused files |