本文整理汇总了Python中apt.cache.Cache.actiongroup方法的典型用法代码示例。如果您正苦于以下问题:Python Cache.actiongroup方法的具体用法?Python Cache.actiongroup怎么用?Python Cache.actiongroup使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类apt.cache.Cache
的用法示例。
在下文中一共展示了Cache.actiongroup方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: do_install
# 需要导入模块: from apt.cache import Cache [as 别名]
# 或者: from apt.cache.Cache import actiongroup [as 别名]
def do_install(self, to_install, langpacks=False):
self.nested_progress_start()
if langpacks:
self.db.progress('START', 0, 10, 'ubiquity/langpacks/title')
else:
self.db.progress('START', 0, 10, 'ubiquity/install/title')
self.db.progress('INFO', 'ubiquity/install/find_installables')
self.progress_region(0, 1)
fetchprogress = DebconfAcquireProgress(
self.db, 'ubiquity/install/title',
'ubiquity/install/apt_indices_starting',
'ubiquity/install/apt_indices')
cache = Cache()
if cache._depcache.broken_count > 0:
syslog.syslog(
'not installing additional packages, since there are broken '
'packages: %s' % ', '.join(broken_packages(cache)))
self.db.progress('STOP')
self.nested_progress_end()
return
with cache.actiongroup():
for pkg in to_install:
mark_install(cache, pkg)
self.db.progress('SET', 1)
self.progress_region(1, 10)
if langpacks:
fetchprogress = DebconfAcquireProgress(
self.db, 'ubiquity/langpacks/title', None,
'ubiquity/langpacks/packages')
installprogress = DebconfInstallProgress(
self.db, 'ubiquity/langpacks/title',
'ubiquity/install/apt_info')
else:
fetchprogress = DebconfAcquireProgress(
self.db, 'ubiquity/install/title', None,
'ubiquity/install/fetch_remove')
installprogress = DebconfInstallProgress(
self.db, 'ubiquity/install/title',
'ubiquity/install/apt_info',
'ubiquity/install/apt_error_install')
chroot_setup(self.target)
commit_error = None
try:
try:
if not self.commit_with_verify(cache,
fetchprogress, installprogress):
fetchprogress.stop()
installprogress.finish_update()
self.db.progress('STOP')
self.nested_progress_end()
return
except IOError:
for line in traceback.format_exc().split('\n'):
syslog.syslog(syslog.LOG_ERR, line)
fetchprogress.stop()
installprogress.finish_update()
self.db.progress('STOP')
self.nested_progress_end()
return
except SystemError as e:
for line in traceback.format_exc().split('\n'):
syslog.syslog(syslog.LOG_ERR, line)
commit_error = str(e)
finally:
chroot_cleanup(self.target)
self.db.progress('SET', 10)
cache.open(None)
if commit_error or cache._depcache.broken_count > 0:
if commit_error is None:
commit_error = ''
brokenpkgs = broken_packages(cache)
self.warn_broken_packages(brokenpkgs, commit_error)
self.db.progress('STOP')
self.nested_progress_end()
示例2: generate_blacklist
# 需要导入模块: from apt.cache import Cache [as 别名]
# 或者: from apt.cache.Cache import actiongroup [as 别名]
#.........这里部分代码省略.........
use_restricted = True
try:
if self.db.get('apt-setup/restricted') == 'false':
use_restricted = False
except debconf.DebconfError:
pass
if not use_restricted:
for pkg in cache.keys():
if (cache[pkg].is_installed and
cache[pkg].section.startswith('restricted/')):
difference.add(pkg)
# Keep packages we explicitly installed.
keep = install_misc.query_recorded_installed()
arch, subarch = install_misc.archdetect()
# Less than ideal. Since we cannot know which bootloader we'll need
# at file copy time, we should figure out why grub still fails when
# apt-install-direct is present during configure_bootloader (code
# removed).
if arch in ('amd64', 'i386'):
if subarch == 'efi':
keep.add('grub-efi')
keep.add('grub-efi-amd64')
keep.add('grub-efi-amd64-signed')
keep.add('shim-signed')
keep.add('mokutil')
keep.add('fwupdate-signed')
install_misc.record_installed(['fwupdate-signed'])
try:
altmeta = self.db.get(
'base-installer/kernel/altmeta')
if altmeta:
altmeta = '-%s' % altmeta
except debconf.DebconfError:
altmeta = ''
keep.add('linux-signed-generic%s' % altmeta)
else:
keep.add('grub')
keep.add('grub-pc')
elif (arch in ('armel', 'armhf') and
subarch in ('omap', 'omap4', 'mx5')):
keep.add('flash-kernel')
keep.add('u-boot-tools')
elif arch == 'powerpc':
keep.add('yaboot')
keep.add('hfsutils')
# Even adding ubiquity as a depends to oem-config-{gtk,kde} doesn't
# appear to force ubiquity and libdebian-installer4 to copy all of
# their files, so this does the trick.
try:
if self.db.get('oem-config/enable') == 'true':
keep.add('ubiquity')
except (debconf.DebconfError, IOError):
pass
difference -= install_misc.expand_dependencies_simple(
cache, keep, difference)
# Consider only packages that don't have a prerm, and which can
# therefore have their files removed without any preliminary work.
difference = {
x for x in difference
if not os.path.exists('/var/lib/dpkg/info/%s.prerm' % x)}
confirmed_remove = set()
with cache.actiongroup():
for pkg in sorted(difference):
if pkg in confirmed_remove:
continue
would_remove = install_misc.get_remove_list(
cache, [pkg], recursive=True)
if would_remove <= difference:
confirmed_remove |= would_remove
# Leave these marked for removal in the apt cache to
# speed up further calculations.
else:
for removedpkg in would_remove:
cachedpkg = install_misc.get_cache_pkg(
cache, removedpkg)
cachedpkg.mark_keep()
difference = confirmed_remove
if len(difference) == 0:
del cache
self.blacklist = {}
return
cmd = ['dpkg', '-L']
cmd.extend(difference)
subp = subprocess.Popen(
cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
universal_newlines=True)
res = subp.communicate()[0].splitlines()
u = {}
for x in res:
u[x] = 1
self.blacklist = u
示例3: generate_blacklist
# 需要导入模块: from apt.cache import Cache [as 别名]
# 或者: from apt.cache.Cache import actiongroup [as 别名]
def generate_blacklist(self):
manifest_remove = os.path.join(self.casper_path, "filesystem.manifest-remove")
manifest_desktop = os.path.join(self.casper_path, "filesystem.manifest-desktop")
manifest = os.path.join(self.casper_path, "filesystem.manifest")
if os.path.exists(manifest_remove) and os.path.exists(manifest):
difference = set()
with open(manifest_remove) as manifest_file:
for line in manifest_file:
if line.strip() != "" and not line.startswith("#"):
difference.add(line.split()[0])
live_packages = set()
with open(manifest) as manifest_file:
for line in manifest_file:
if line.strip() != "" and not line.startswith("#"):
live_packages.add(line.split()[0])
desktop_packages = live_packages - difference
elif os.path.exists(manifest_desktop) and os.path.exists(manifest):
desktop_packages = set()
with open(manifest_desktop) as manifest_file:
for line in manifest_file:
if line.strip() != "" and not line.startswith("#"):
desktop_packages.add(line.split()[0])
live_packages = set()
with open(manifest) as manifest_file:
for line in manifest_file:
if line.strip() != "" and not line.startswith("#"):
live_packages.add(line.split()[0])
difference = live_packages - desktop_packages
else:
difference = set()
cache = Cache()
use_restricted = True
try:
if self.db.get("apt-setup/restricted") == "false":
use_restricted = False
except debconf.DebconfError:
pass
if not use_restricted:
for pkg in cache.keys():
if cache[pkg].is_installed and cache[pkg].section.startswith("restricted/"):
difference.add(pkg)
# Keep packages we explicitly installed.
keep = install_misc.query_recorded_installed()
arch, subarch = install_misc.archdetect()
# Less than ideal. Since we cannot know which bootloader we'll need
# at file copy time, we should figure out why grub still fails when
# apt-install-direct is present during configure_bootloader (code
# removed).
if arch in ("amd64", "i386"):
if subarch == "efi":
keep.add("grub-efi")
keep.add("grub-efi-amd64")
efi_vars = "/sys/firmware/efi/vars"
sb_var = os.path.join(efi_vars, "SecureBoot-8be4df61-93ca-11d2-aa0d-00e098032b8c", "data")
if os.path.exists(sb_var):
with open(sb_var, "rb") as sb_var_file:
if sb_var_file.read(1) == b"\x01":
keep.add("grub-efi-amd64-signed")
keep.add("shim-signed")
try:
altmeta = self.db.get("base-installer/kernel/altmeta")
if altmeta:
altmeta = "-%s" % altmeta
except debconf.DebconfError:
altmeta = ""
keep.add("linux-signed-generic%s" % altmeta)
else:
keep.add("grub")
keep.add("grub-pc")
elif arch in ("armel", "armhf") and subarch in ("omap", "omap4", "mx5"):
keep.add("flash-kernel")
keep.add("u-boot-tools")
elif arch == "powerpc":
keep.add("yaboot")
keep.add("hfsutils")
# Even adding ubiquity as a depends to oem-config-{gtk,kde} doesn't
# appear to force ubiquity and libdebian-installer4 to copy all of
# their files, so this does the trick.
try:
if self.db.get("oem-config/enable") == "true":
keep.add("ubiquity")
except (debconf.DebconfError, IOError):
pass
difference -= install_misc.expand_dependencies_simple(cache, keep, difference)
# Consider only packages that don't have a prerm, and which can
# therefore have their files removed without any preliminary work.
difference = {x for x in difference if not os.path.exists("/var/lib/dpkg/info/%s.prerm" % x)}
confirmed_remove = set()
with cache.actiongroup():
for pkg in sorted(difference):
if pkg in confirmed_remove:
continue
#.........这里部分代码省略.........