|
309 |
self.unlock() |
309 |
self.unlock() |
310 |
|
310 |
|
311 |
def _set_apt_pkg_config(self, options): |
311 |
def _set_apt_pkg_config(self, options): |
312 |
revert_options = {} |
312 |
revert_options = [] |
313 |
for option_name, option_value in options.iteritems(): |
313 |
for option_name, option_value in options: |
314 |
old_value = apt_pkg.config.get(option_name) |
314 |
old_value = apt_pkg.config.get(option_name) |
315 |
apt_pkg.config[option_name] = option_value |
315 |
apt_pkg.config[option_name] = option_value |
316 |
revert_options[option_name] = old_value |
316 |
revert_options.append((option_name, old_value)) |
317 |
return revert_options |
317 |
return revert_options |
318 |
|
318 |
|
319 |
def add_hundred_percent(self): |
319 |
def add_hundred_percent(self): |
|
347 |
@contextmanager |
347 |
@contextmanager |
348 |
def brutal_noninteractive(self): |
348 |
def brutal_noninteractive(self): |
349 |
with self.noninteractive(): |
349 |
with self.noninteractive(): |
350 |
options = { |
350 |
options = [ |
351 |
'DPkg::Options::': '--force-overwrite', |
351 |
('DPkg::Options::', '--force-overwrite'), |
352 |
'DPkg::Options::': '--force-overwrite-dir', |
352 |
('DPkg::Options::', '--force-overwrite-dir'), |
353 |
'APT::Get::Trivial-Only': 'no', |
353 |
('APT::Get::Trivial-Only', 'no'), |
354 |
'quiet': '1', |
354 |
('quiet', '1'), |
355 |
} |
355 |
] |
356 |
revert_options = self._set_apt_pkg_config(options) |
356 |
revert_options = self._set_apt_pkg_config(options) |
357 |
try: |
357 |
try: |
358 |
yield |
358 |
yield |
|
364 |
''' dont ever ask for user input ''' |
364 |
''' dont ever ask for user input ''' |
365 |
old_debian_frontend = os.environ.get('DEBIAN_FRONTEND') |
365 |
old_debian_frontend = os.environ.get('DEBIAN_FRONTEND') |
366 |
os.environ['DEBIAN_FRONTEND'] = 'noninteractive' |
366 |
os.environ['DEBIAN_FRONTEND'] = 'noninteractive' |
367 |
options = { |
367 |
options = [ |
368 |
'APT::Get::Assume-Yes': 'true', |
368 |
('APT::Get::Assume-Yes', 'true'), |
369 |
'APT::Get::force-yes': 'true', |
369 |
('APT::Get::force-yes', 'true'), |
370 |
'APT::Get::AllowUnauthenticated': '1', |
370 |
('APT::Get::AllowUnauthenticated', '1'), |
371 |
'DPkg::Options::': '--force-confold', |
371 |
('DPkg::Options::', '--force-confold'), |
372 |
} |
372 |
] |
373 |
revert_options = self._set_apt_pkg_config(options) |
373 |
revert_options = self._set_apt_pkg_config(options) |
374 |
try: |
374 |
try: |
375 |
yield |
375 |
yield |
|
440 |
for pkg in self.cache: |
440 |
for pkg in self.cache: |
441 |
yield pkg |
441 |
yield pkg |
442 |
|
442 |
|
|
|
443 |
def mark_auto(self, auto, *pkgs): |
444 |
'''Immediately sets packages to automatically |
445 |
installed (or not). Calls commit()!''' |
446 |
for pkg in self.get_packages(pkgs): |
447 |
pkg.mark_auto(auto) |
448 |
self.commit() |
449 |
self.reopen_cache() |
450 |
|
443 |
def mark(self, install, remove, dry_run=False): |
451 |
def mark(self, install, remove, dry_run=False): |
444 |
'''Marks packages, returns all |
452 |
'''Marks packages, returns all |
445 |
installed, removed or broken packages. |
453 |
installed, removed or broken packages. |
|
464 |
for pkg in self.cache.get_changes(): |
472 |
for pkg in self.cache.get_changes(): |
465 |
if pkg.marked_install or pkg.marked_upgrade: |
473 |
if pkg.marked_install or pkg.marked_upgrade: |
466 |
to_be_installed.add(pkg.name) |
474 |
to_be_installed.add(pkg.name) |
|
|
475 |
if pkg in remove: |
476 |
broken.add(pkg.name) |
467 |
if pkg.marked_delete: |
477 |
if pkg.marked_delete: |
468 |
to_be_removed.add(pkg.name) |
478 |
to_be_removed.add(pkg.name) |
|
|
479 |
if pkg in install: |
480 |
broken.add(pkg.name) |
469 |
if pkg.is_inst_broken: |
481 |
if pkg.is_inst_broken: |
470 |
broken.add(pkg.name) |
482 |
broken.add(pkg.name) |
471 |
# some actions can change flags in other pkgs, |
483 |
# some actions can change flags in other pkgs, |
|
572 |
pkg = self.cache[pkg_name] |
584 |
pkg = self.cache[pkg_name] |
573 |
if pkg.is_auto_removable: |
585 |
if pkg.is_auto_removable: |
574 |
self.progress_state.info(_('Deleting unneeded %s') % pkg.name) |
586 |
self.progress_state.info(_('Deleting unneeded %s') % pkg.name) |
575 |
# dont autofix. maybe some errors magically |
587 |
# dont auto_fix. maybe some errors magically |
576 |
# disappear if we just remove |
588 |
# disappear if we just remove |
577 |
# enough packages... |
589 |
# enough packages... |
578 |
pkg.mark_delete(auto_fix=False) |
590 |
pkg.mark_delete(auto_fix=False) |