From 616aad8ecb790519e51ea987a934c527edf91395 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Tue, 22 Aug 2017 23:30:51 +0100 Subject: fix : package cache is always saved and eats up all available disc space during large upgrades --- conf/intel/portage/bashrc | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 conf/intel/portage/bashrc diff --git a/conf/intel/portage/bashrc b/conf/intel/portage/bashrc new file mode 100644 index 0000000..e11ca1c --- /dev/null +++ b/conf/intel/portage/bashrc @@ -0,0 +1,24 @@ +pkg_postinst() { + # By default, binary mode portage downloads binary packages from repository and saves + # them in /usr/portage/packages. This saves bandwidth in case of reinstalls/downgrades, + # but will eat up lots of HDD space, possibly preventing further installs/upgrades. + + # To address this issue, we check if /usr/portage/packages directory is on its own partition + # case in which we do nothing assuming that user gave it plenty space anyway. But if its + # not the case, and /usr/portage/packages is just a directory in the system / root hierarchy, + # then we make sure we remove downloaded binary packages after every installation. + + # This function hooks into the pkg_postinst() phase, after the package files are written + # into the filesystem and registered into the database, and just removes the content of + # /usr/portage/packages directory (which is the binary package cache). + + # In orther for this to work PORTDIR (/usr/portage) and PKGDIR(/usr/portage/packages) + # must be on the same filesystem, which is 99% the case. If they are on different + # filesystems, package cache is always saved, as mentioned above. + + export local PORTDIRDEV=$(find /usr/portage -maxdepth 0 -printf "%D") + export local PKGDIRDEV=$(find /usr/portage/packages -maxdepth 0 -printf "%D") + if [ $PORTDIRDEV = $PKGDIRDEV ]; then + rm -rf /usr/portage/packages/* + fi +} -- cgit v1.2.3