diff -u -r ../apt-1.4.8/apt-pkg/deb/dpkgpm.cc ./apt-pkg/deb/dpkgpm.cc
--- ../apt-1.4.8/apt-pkg/deb/dpkgpm.cc	2017-09-13 18:47:33.000000000 +0200
+++ ./apt-pkg/deb/dpkgpm.cc	2017-12-29 01:29:53.178628587 +0100
@@ -1281,8 +1281,13 @@
 	    sigemptyset(&d->sigmask);
 	    sigaddset(&d->sigmask, SIGTTOU);
 	    sigprocmask(SIG_BLOCK,&d->sigmask, &d->original_sigmask);
+#ifndef __ANDROID__
+	    // This fails on Android 8.0 - see
+	    // https://github.com/termux/termux-packages/issues/1359
+	    // We silence the warning here to avoid it being shown for every apt operation.
 	    if (tcsetattr(STDIN_FILENO, TCSAFLUSH, &raw_tt) == -1)
 	       _error->Errno("tcsetattr", "Setting in Start via TCSAFLUSH for stdin failed!");
+#endif
 	    sigprocmask(SIG_SETMASK, &d->original_sigmask, NULL);
 
 	 }
@@ -1361,8 +1366,13 @@
    }
    if(d->master >= 0)
    {
+#ifndef __ANDROID__
+      // This fails on Android 8.0 - see
+      // https://github.com/termux/termux-packages/issues/1359
+      // We silence the warning here to avoid it being shown for every apt operation.
       if (d->tt_is_valid == true && tcsetattr(STDIN_FILENO, TCSAFLUSH, &d->tt) == -1)
 	 _error->FatalE("tcsetattr", "Setting in Stop via TCSAFLUSH for stdin failed!");
+#endif
       close(d->master);
       d->master = -1;
    }
diff -uNr apt-1.4.8/apt-pkg/deb/dpkgpm.cc apt-1.4.8.mod/apt-pkg/deb/dpkgpm.cc
--- apt-1.4.8/apt-pkg/deb/dpkgpm.cc	2018-06-19 13:55:47.330437710 +0300
+++ apt-1.4.8.mod/apt-pkg/deb/dpkgpm.cc	2018-06-19 13:54:21.810433307 +0300
@@ -179,7 +179,7 @@
    so we use the binary from util-linux */
 static bool ionice(int PID)
 {
-   if (!FileExists("/usr/bin/ionice"))
+   if (!FileExists("@TERMUX_PREFIX@/bin/ionice"))
       return false;
    pid_t Process = ExecFork();
    if (Process == 0)
@@ -187,7 +187,7 @@
       char buf[32];
       snprintf(buf, sizeof(buf), "-p%d", PID);
       const char *Args[4];
-      Args[0] = "/usr/bin/ionice";
+      Args[0] = "@TERMUX_PREFIX@/bin/ionice";
       Args[1] = "-c3";
       Args[2] = buf;
       Args[3] = 0;
@@ -483,7 +483,7 @@
 
 	 debSystem::DpkgChrootDirectory();
 	 const char *Args[4];
-	 Args[0] = "/bin/sh";
+	 Args[0] = "@TERMUX_PREFIX@/bin/sh";
 	 Args[1] = "-c";
 	 Args[2] = Opts->Value.c_str();
 	 Args[3] = 0;
@@ -2413,11 +2413,14 @@
       fprintf(report, " %s: %s\n", pkgname.c_str(), opstr);
    }
 
+// In latest versions of Android, we can't use 'dmesg'
+// without root.
+#ifndef __ANDROID__
    // attach dmesg log (to learn about segfaults)
-   if (FileExists("/bin/dmesg"))
+   if (FileExists("@TERMUX_PREFIX@/bin/dmesg"))
    {
       fprintf(report, "Dmesg:\n");
-      FILE *log = popen("/bin/dmesg","r");
+      FILE *log = popen("@TERMUX_PREFIX@/bin/dmesg","r");
       if(log != NULL)
       {
 	 char buf[1024];
@@ -2426,13 +2429,18 @@
 	 pclose(log);
       }
    }
+#endif
 
+// Current Termux implementation of 'df' is just a wrapper
+// for /system/bin/df which may don't understand additional
+// parameters such as '-l'.
+#ifndef __ANDROID__
    // attach df -l log (to learn about filesystem status)
-   if (FileExists("/bin/df"))
+   if (FileExists("@TERMUX_PREFIX@/bin/df"))
    {
 
       fprintf(report, "Df:\n");
-      FILE *log = popen("/bin/df -l","r");
+      FILE *log = popen("@TERMUX_PREFIX@/bin/df -l","r");
       if(log != NULL)
       {
 	 char buf[1024];
@@ -2441,6 +2449,7 @@
 	 pclose(log);
       }
    }
+#endif
 
    fclose(report);