I use the following options for using an alternate rootdir and testing stuff: RootDir = /home/xav/pacman/pacman/foo DBPath = /home/xav/pacman/pacman/foo/var/lib/pacman CacheDir = /home/xav/pacman/pacman/foo/var/cache/pacman/pkg with the following symlink : /home/xav/pacman -> /data/share/devel/pacman/ Running pacman -v with this config gives the following : Root : /data/share/devel/pacman/pacman/foo/ DB Path : /home/xav/pacman/pacman/foo/var/lib/pacman/ This makes the scriptlets handling in libalpm/trans.c break : 570 strncpy(scriptfn, installfn, PATH_MAX); 571 /* chop off the root so we can find the tmpdir in the chroot */ 572 scriptpath = scriptfn + strlen(root) - 1; Because for example: scriptfn = /home/xav/pacman/pacman/foo/var/lib/pacman/local/slocate-3.1-3/install root = /data/share/devel/pacman/pacman/foo/ so scriptpath result in /pacman/local/slocate-3.1-3/install, instead of /var/lib/pacman/local/slocate-3.1-3/install