diff options
-rw-r--r-- | doc/apk.8.scd | 5 | ||||
-rw-r--r-- | src/app_cache.c | 10 | ||||
-rw-r--r-- | src/app_upgrade.c | 4 |
3 files changed, 17 insertions, 2 deletions
diff --git a/doc/apk.8.scd b/doc/apk.8.scd index 3b5797e..1b9b6f3 100644 --- a/doc/apk.8.scd +++ b/doc/apk.8.scd @@ -179,7 +179,10 @@ The following options are available for all commands. The following options are available for all commands which commit the database. *-s, --simulate* - Simulate the requested operation without making any changes. + Simulate the requested operation without making any changes. The database + is opened in read only mode, and auto-updating of indexes is disabled. + You may want to run "apk update" before running a simulation to make sure + it is done with up-to-date repository indexes. *--clean-protected* Do not create .apk-new files in configuration directories. diff --git a/src/app_cache.c b/src/app_cache.c index 3a68938..09d9adf 100644 --- a/src/app_cache.c +++ b/src/app_cache.c @@ -198,11 +198,19 @@ static int cache_main(void *ctx, struct apk_database *db, struct apk_string_arra return -EINVAL; if (!apk_db_cache_active(db)) { - apk_error("Package cache is not enabled.\n"); + apk_error("Package cache is not enabled."); r = 2; goto err; } + if ((actions & CACHE_DOWNLOAD) && (cctx->solver_flags || cctx->add_dependencies)) { + if (db->repositories.stale || db->repositories.unavailable) { + apk_error("Not continuing due to stale/unavailable repositories."); + r = 3; + goto err; + } + } + if (r == 0 && (actions & CACHE_CLEAN)) r = cache_clean(db); if (r == 0 && (actions & CACHE_DOWNLOAD)) diff --git a/src/app_upgrade.c b/src/app_upgrade.c index 8645d21..bc6ccb1 100644 --- a/src/app_upgrade.c +++ b/src/app_upgrade.c @@ -163,6 +163,10 @@ static int upgrade_main(void *ctx, struct apk_database *db, struct apk_string_ar "Use --force-broken-world to override."); return -1; } + if (db->repositories.stale || db->repositories.unavailable) { + apk_error("Not continuing due to stale/unavailable repositories."); + return -1; + } solver_flags = APK_SOLVERF_UPGRADE | uctx->solver_flags; if (!uctx->no_self_upgrade && !args->num) { |