Document Home | Document Index

 Package Installation Observer

See and


pio is meant to be run immediately before and immediately after the installation of a package (after all steps). It uses before and after file lists (made with find), and therefore depends on installations being done on a quiet system. Its record of an installation is kept as a de-installation script in which the removal of any pre-existing file is commented out.

A test using cp -p has shown that files created with old timestamps are properly recorded.

pio Locations

Experience with using pio in the LFS/BLFS process suggests that the pio script should be in $LFS/usr/local/bin with a symlink from /usr/bin. The directory for the generated scripts should be $LFS/usr/local/pio. Once in the chroot shell or in the new system, pio will be in /usr/local/bin which will need to be added to the PATH from the start.


The pio script contains (at least) 3 configurations which may be selected by number and are intended for the stages of the LFS process. Changes for each are in the relevant sub-sections below.

LFS Chapter 5

   #PGR During LFS-Ch5 stage1 build when $LFS is defined externally
   VIEWPROG="less -c"
   SHOWRESULT=yes         # default answer to 'Show it?'
+  IGNOREDIRS="$LFS/lost+found $LFS/sources"

LFS Chapter 6

   #PGR During LFS-Ch6 stage2 build
+  #VIEWPROG=cat
+  VIEWPROG="less -c"  # once it has been built
   SHOWRESULT=yes         # default answer to 'Show it?'
   WATCHDIRS="/bin /boot /dev /etc /lib /opt /sbin /srv /usr /var"
-  IGNOREDIRS="/usr/local/src /usr/local/$SNAME /var/log"
+  IGNOREDIRS="/usr/local/src /usr/local/$SNAME /var/log /usr/src"
   SCRIPTPATH=/usr/local/$SNAME ;;

BLFS and Beyond

   #PGR After LFS-Ch6 stage 2 complete, general ops
   VIEWPROG="less -c"
   SHOWRESULT=yes         # default answer to 'Show it?'
-  WATCHDIRS="/bin /boot /dev /etc /lib /opt /sbin /srv /usr /var"
+  WATCHDIRS="/bin /boot /etc /lib /opt /sbin /srv /usr /var"
 #PGR if cups is installed, ignore cups changes
   [ -d /etc/cups ] && cups="/etc/cups" || cups=""
   [ -d /var/spool/fcron ] && fcron="/var/spool/fcron" || fcron=""
-  IGNOREDIRS="/usr/local/src /usr/local/$SNAME /var/log $cups $fcron"
+  IGNOREDIRS="/opt /srv /srv2 /usr/src /usr/local/src /usr/local/$SNAME /var/log $cups $fcron"
   SCRIPTPATH=/usr/local/$SNAME ;;

Using pio

Document Home | Document Index