diff options
author | Paul Spooren <mail@aparcar.org> | 2020-10-03 12:31:56 -1000 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2021-04-11 14:03:31 +0300 |
commit | e959755dffcf23fcdc6d6ba8d50c08e83dab7fb6 (patch) | |
tree | 9525bc2eb08ccc7d630a812a56c6661d234ff7ec /src | |
parent | 3a89a7b381707879507f9bc5e3d6e8d8222d1e54 (diff) | |
download | apk-tools-e959755dffcf23fcdc6d6ba8d50c08e83dab7fb6.tar.gz apk-tools-e959755dffcf23fcdc6d6ba8d50c08e83dab7fb6.tar.bz2 apk-tools-e959755dffcf23fcdc6d6ba8d50c08e83dab7fb6.tar.xz apk-tools-e959755dffcf23fcdc6d6ba8d50c08e83dab7fb6.zip |
database: automatically create missing cache dir
On some systems the `/var/` dir is mounted in a tmpfs which is reseted
after each reboot. For that reason no post-install script can handle the
creation of the cache dir at `/var/cache/apk`.
Check on database opnening if the folder is available, if not create it.
Fixes #10715
Signed-off-by: Paul Spooren <mail@aparcar.org>
(cherry picked from commit dac30d50497214c8722a57ee1ae8d3c369babe38)
Diffstat (limited to 'src')
-rw-r--r-- | src/database.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/database.c b/src/database.c index d9aadc6..fa48fa3 100644 --- a/src/database.c +++ b/src/database.c @@ -1659,6 +1659,12 @@ int apk_db_open(struct apk_database *db, struct apk_db_options *dbopts) if (fd >= 0) close(fd); db->cache_dir = apk_static_cache_dir; db->cache_fd = openat(db->root_fd, db->cache_dir, O_RDONLY | O_CLOEXEC); + if (db->cache_fd < 0) { + mkdirat(db->root_fd, "var/cache", 0755); + mkdirat(db->root_fd, "var/cache/apk", 0755); + db->cache_fd = openat(db->root_fd, db->cache_dir, O_RDONLY | O_CLOEXEC); + if (db->cache_fd < 0) goto ret_errno; + } } db->keys_fd = openat(db->root_fd, |