I was experimenting using dash as /bin/sh and noticed that a lot of packages were having errors in their install scriptlets. popen passes commands to /bin/sh so we need to explicitly invoke bash, which the scriptlets are written for. WOO! Signed-off-by: Loui Chang <louipc.ist@gmail.com> --- lib/libalpm/trans.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/libalpm/trans.c b/lib/libalpm/trans.c index d1c0e93..5e63326 100644 --- a/lib/libalpm/trans.c +++ b/lib/libalpm/trans.c @@ -435,6 +435,7 @@ int _alpm_runscriptlet(const char *root, const char *installfn, { char scriptfn[PATH_MAX]; char cmdline[PATH_MAX]; + char cmdargs[PATH_MAX]; char tmpdir[PATH_MAX]; char *scriptpath; int clean_tmpdir = 0; @@ -486,13 +487,16 @@ int _alpm_runscriptlet(const char *root, const char *installfn, } if(oldver) { - snprintf(cmdline, PATH_MAX, ". %s; %s %s %s", + snprintf(cmdargs, PATH_MAX, "%s; %s %s %s", scriptpath, script, ver, oldver); } else { - snprintf(cmdline, PATH_MAX, ". %s; %s %s", + snprintf(cmdargs, PATH_MAX, "%s; %s %s", scriptpath, script, ver); } + /* Explicitly run scriptlets in bash */ + snprintf(cmdline, PATH_MAX, "/bin/bash -c 'source %s'", cmdargs); + retval = _alpm_run_chroot(root, cmdline); cleanup: -- 1.6.3.3