diff options
Diffstat (limited to '')
-rw-r--r-- | doc/examples/action.py | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/doc/examples/action.py b/doc/examples/action.py new file mode 100644 index 0000000..59e050b --- /dev/null +++ b/doc/examples/action.py @@ -0,0 +1,116 @@ +#!/usr/bin/python3 +# +# LOW LEVEL example how to deal with the depcache +# +# you probably do not want to use this low level code and use +# the high level "apt" interface instead that can do all this +# but with a nicer API + +import apt_pkg +from progress import TextFetchProgress + +from apt.progress.text import OpProgress + +# init +apt_pkg.init() + +progress = OpProgress() +cache = apt_pkg.Cache(progress) +print("Available packages: %s " % cache.package_count) + +print("Fetching") +progress = TextFetchProgress() +source = apt_pkg.SourceList() +cache.update(progress, source) + +iter = cache["base-config"] +print("example package iter: %s" % iter) + +# get depcache +print("\n\n depcache") +depcache = apt_pkg.DepCache(cache) +depcache.read_pinfile() +print("got a depcache: %s " % depcache) +print("Marked for install: %s " % depcache.inst_count) + +print("\n\n Reinit") +depcache.init(progress) + +# sys.exit() + +# get a canidate version +ver = depcache.get_candidate_ver(iter) +print("Candidate version: %s " % ver) + +print("\n\nQuerry interface") +print(f"{iter.name}.is_upgradable(): {depcache.is_upgradable(iter)}") + +print("\nMarking interface") +print("Marking '%s' for install" % iter.name) +depcache.mark_install(iter) +print("Install count: %s " % depcache.inst_count) +print(f"{iter.name}.marked_install(): {depcache.marked_install(iter)}") +print(f"{iter.name}.marked_upgrade(): {depcache.marked_upgrade(iter)}") +print(f"{iter.name}.marked_delete(): {depcache.marked_delete(iter)}") + +print("Marking %s for delete" % iter.name) +depcache.mark_delete(iter) +print("del_count: %s " % depcache.del_count) +print(f"{iter.name}.marked_delete(): {depcache.marked_delete(iter)}") + +iter = cache["apt"] +print("\nMarking '%s' for install" % iter.name) +depcache.mark_install(iter) +print("Install count: %s " % depcache.inst_count) +print(f"{iter.name}.marked_install(): {depcache.marked_install(iter)}") +print(f"{iter.name}.marked_upgrade(): {depcache.marked_upgrade(iter)}") +print(f"{iter.name}.marked_delete(): {depcache.marked_delete(iter)}") + +print("Marking %s for keep" % iter.name) +depcache.mark_keep(iter) +print("Install: %s " % depcache.inst_count) + +iter = cache["python-apt"] +print("\nMarking '%s' for install" % iter.name) +depcache.mark_install(iter) +print("Install: %s " % depcache.inst_count) +print("Broken count: %s" % depcache.broken_count) +print("fix_broken() ") +depcache.fix_broken() +print("Broken count: %s" % depcache.broken_count) + +print("\nPerforming upgrade") +depcache.upgrade() +print("Keep: %s " % depcache.keep_count) +print("Install: %s " % depcache.inst_count) +print("Delete: %s " % depcache.del_count) +print("usr_size: %s " % apt_pkg.size_to_str(depcache.usr_size)) +print("deb_size: %s " % apt_pkg.size_to_str(depcache.deb_size)) + +for pkg in cache.packages: + if ( + pkg.current_ver is not None + and not depcache.marked_install(pkg) + and depcache.is_upgradable(pkg) + ): + print("upgrade didn't upgrade (kept): %s" % pkg.name) + +print("\nPerforming Distupgrade") +depcache.upgrade(True) +print("Keep: %s " % depcache.keep_count) +print("Install: %s " % depcache.inst_count) +print("Delete: %s " % depcache.del_count) +print("usr_size: %s " % apt_pkg.size_to_str(depcache.usr_size)) +print("deb_size: %s " % apt_pkg.size_to_str(depcache.deb_size)) + +# overview about what would happen +for pkg in cache.packages: + if depcache.marked_install(pkg): + if pkg.current_ver is not None: + print("Marked upgrade: %s " % pkg.name) + else: + print("Marked install: %s" % pkg.name) + elif depcache.marked_delete(pkg): + print("Marked delete: %s" % pkg.name) + elif depcache.marked_keep(pkg): + print("Marked keep: %s" % pkg.name) |