3605599394
Such functionality causes 'permission denied' errors in Termux as we don't require root permissions for installing packages.
47 lines
1.6 KiB
Diff
47 lines
1.6 KiB
Diff
diff -uNr apk-tools-2.10.3/src/database.c apk-tools-2.10.3.mod/src/database.c
|
|
--- apk-tools-2.10.3/src/database.c 2018-11-15 15:09:07.000000000 +0200
|
|
+++ apk-tools-2.10.3.mod/src/database.c 2018-11-18 19:16:02.755222559 +0200
|
|
@@ -1332,10 +1332,11 @@
|
|
static int apk_db_create(struct apk_database *db)
|
|
{
|
|
int fd;
|
|
-
|
|
mkdirat(db->root_fd, "tmp", 01777);
|
|
mkdirat(db->root_fd, "dev", 0755);
|
|
+#ifndef __ANDROID__
|
|
mknodat(db->root_fd, "dev/null", S_IFCHR | 0666, makedev(1, 3));
|
|
+#endif
|
|
mkdirat(db->root_fd, "etc", 0755);
|
|
mkdirat(db->root_fd, "etc/apk", 0755);
|
|
mkdirat(db->root_fd, "lib", 0755);
|
|
@@ -1538,7 +1539,7 @@
|
|
apk_db_setup_repositories(db, dbopts->cache_dir);
|
|
|
|
db->cache_max_age = dbopts->cache_max_age ?: 4*60*60; /* 4 hours default */
|
|
- db->root = strdup(dbopts->root ?: "/");
|
|
+ db->root = strdup(dbopts->root ?: "/data/data/com.termux/files/usr");
|
|
db->root_fd = openat(AT_FDCWD, db->root, O_RDONLY | O_CLOEXEC);
|
|
if (db->root_fd < 0 && (dbopts->open_flags & APK_OPENF_CREATE)) {
|
|
mkdirat(AT_FDCWD, db->root, 0755);
|
|
@@ -1931,7 +1932,7 @@
|
|
int status;
|
|
pid_t pid;
|
|
static char * const environment[] = {
|
|
- "PATH=/usr/sbin:/usr/bin:/sbin:/bin",
|
|
+ "PATH=@TERMUX_PREFIX@/bin:@TERMUX_PREFIX@/bin/applets",
|
|
NULL
|
|
};
|
|
|
|
@@ -1968,9 +1969,10 @@
|
|
r = fstatat(db->root_fd, dir->name, &st, AT_SYMLINK_NOFOLLOW);
|
|
if (r < 0 || (st.st_mode & 07777) != (dir->mode & 07777))
|
|
fchmodat(db->root_fd, dir->name, dir->mode, 0);
|
|
+#ifndef __ANDROID__
|
|
if (r < 0 || st.st_uid != dir->uid || st.st_gid != dir->gid)
|
|
fchownat(db->root_fd, dir->name, dir->uid, dir->gid, 0);
|
|
-
|
|
+#endif
|
|
return 0;
|
|
}
|
|
|