refs #596 add a forgotten file
parent
feae768405
commit
0aa118a88b
|
@ -0,0 +1,87 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
import apt
|
||||
import apt.progress.base
|
||||
import apt_pkg
|
||||
import shutil
|
||||
import os
|
||||
|
||||
def clean():
|
||||
apt_cache = apt.Cache()
|
||||
|
||||
apt_pkg.init()
|
||||
cache_dir = apt_pkg.config.find_dir ('Dir::Cache::archives')
|
||||
|
||||
for fn in os.listdir (cache_dir):
|
||||
file_path = os.path.join (cache_dir, fn)
|
||||
try:
|
||||
if os.path.isfile (file_path):
|
||||
os.unlink (file_path)
|
||||
elif os.path.isdir (file_path):
|
||||
shutil.rmtree (file_path)
|
||||
except Exception as e:
|
||||
print (f'Failed to delete {file_path}. Reason: {e}')
|
||||
|
||||
def autoremove():
|
||||
apt_cache = apt.Cache()
|
||||
for pkg in apt_cache:
|
||||
if pkg.is_installed and pkg.is_auto_removable:
|
||||
pkg.mark_delete()
|
||||
try:
|
||||
apt_cache.commit()
|
||||
except Exception as e:
|
||||
print ('installation failed: {}'.format (str (e)))
|
||||
|
||||
def remove (pkgs):
|
||||
apt_cache = apt.Cache()
|
||||
for p in pkgs:
|
||||
if p in apt_cache:
|
||||
p.mark_delete()
|
||||
try:
|
||||
apt_cache.commit()
|
||||
except Exception as e:
|
||||
print ('removal failed: {}'.format (str (e)))
|
||||
|
||||
def update():
|
||||
apt_cache = apt.Cache()
|
||||
apt_cache.update()
|
||||
|
||||
def upgrade():
|
||||
apt_cache = apt.Cache()
|
||||
apt_cache.upgrade()
|
||||
|
||||
def cache_search (pkgs):
|
||||
apt_cache = apt.Cache()
|
||||
res = {}
|
||||
for p in pkgs:
|
||||
res[p] = True if p in apt_cache else False
|
||||
return res
|
||||
|
||||
def install (pkgs, opts={}):
|
||||
apt_pkg.init()
|
||||
|
||||
if opts:
|
||||
apt_pkg.init_config()
|
||||
for k in opts:
|
||||
apt_pkg.config.set (k, opts[k])
|
||||
|
||||
cache = apt_pkg.Cache()
|
||||
sl = apt_pkg.SourceList()
|
||||
sl.read_main_list()
|
||||
cache.update (apt.progress.base.AcquireProgress(), sl)
|
||||
|
||||
_to_install = []
|
||||
dep_cache = apt_pkg.DepCache(cache)
|
||||
for p in pkgs:
|
||||
package = cache[p]
|
||||
if not package:
|
||||
print (f'package "{p}" not found')
|
||||
continue
|
||||
_to_install.append (p)
|
||||
dep_cache.mark_install(package)
|
||||
|
||||
if _to_install:
|
||||
print ('about to install these packages: "{}"'.format (' '.join (_to_install)))
|
||||
fetcher = apt_pkg.Acquire()
|
||||
install_progress = apt.progress.base.InstallProgress()
|
||||
dep_cache.commit(fetcher, install_progress)
|
Loading…
Reference in New Issue