|
Lines 309-319
Link Here
|
| 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): |
|
Lines 347-358
Link Here
|
| 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 |
|
Lines 364-375
Link Here
|
| 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 |
|
Lines 440-445
Link Here
|
| 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. |
|
Lines 464-471
Link Here
|
| 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, |
|
Lines 572-578
Link Here
|
| 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) |