diff -uNr pacman-6.0.0/lib/libalpm/util.c pacman-termux/lib/libalpm/util.c --- pacman-6.0.0/lib/libalpm/util.c 2021-05-20 06:38:45.948119900 +0300 +++ pacman-termux/lib/libalpm/util.c 2021-10-04 16:00:39.000000000 +0300 @@ -650,10 +650,6 @@ } /* use fprintf instead of _alpm_log to send output through the parent */ - if(chroot(handle->root) != 0) { - fprintf(stderr, _("could not change the root directory (%s)\n"), strerror(errno)); - exit(1); - } if(chdir("/") != 0) { fprintf(stderr, _("could not change directory to %s (%s)\n"), "/", strerror(errno)); @@ -669,7 +665,7 @@ /* this code runs for the parent only (wait on the child) */ int status; char obuf[PIPE_BUF]; /* writes <= PIPE_BUF are guaranteed atomic */ - char ibuf[LINE_MAX]; + char ibuf[PATH_MAX]; ssize_t olen = 0, ilen = 0; nfds_t nfds = 2; struct pollfd fds[2], *child2parent = &(fds[0]), *parent2child = &(fds[1]); @@ -897,7 +893,7 @@ if((tmpdir = getenv("TMPDIR")) && stat(tmpdir, &buf) && S_ISDIR(buf.st_mode)) { /* TMPDIR was good, we can use it */ } else { - tmpdir = "/tmp"; + tmpdir = "@TERMUX_PREFIX@/tmp"; } alpm_option_add_cachedir(handle, tmpdir); cachedir = handle->cachedirs->prev->data;