View | Details | Raw Unified | Return to bug 29805
Collapse All | Expand All

(-)python/de.po (+4 lines)
 Lines 21-26    Link Here 
21
msgid "Deleting unneeded %s"
21
msgid "Deleting unneeded %s"
22
msgstr "Deinstalliere unbenutztes Paket %s"
22
msgstr "Deinstalliere unbenutztes Paket %s"
23
23
24
#: python/package_manager.py:482
25
msgid "Untrusted origin"
26
msgstr "Nicht vertrauenswürdige Quelle"
27
24
#: python/package_manager.py:509
28
#: python/package_manager.py:509
25
msgid "Failed to install"
29
msgid "Failed to install"
26
msgstr "Installation fehlgeschlagen"
30
msgstr "Installation fehlgeschlagen"
(-)python/package_manager.py (-18 / +37 lines)
 Lines 35-41    Link Here 
35
import os
35
import os
36
import time
36
import time
37
import subprocess
37
import subprocess
38
import tempfile
39
from contextlib import contextmanager
38
from contextlib import contextmanager
40
39
41
import apt_pkg
40
import apt_pkg
 Lines 55-60    Link Here 
55
CMD_DISABLE_EXEC = '/usr/share/univention-updater/disable-apache2-umc'
54
CMD_DISABLE_EXEC = '/usr/share/univention-updater/disable-apache2-umc'
56
CMD_ENABLE_EXEC = ['/usr/share/univention-updater/enable-apache2-umc', '--no-restart']
55
CMD_ENABLE_EXEC = ['/usr/share/univention-updater/enable-apache2-umc', '--no-restart']
57
56
57
PACKAGE_MANAGER_LOG = open('/var/log/univention/package_manager.log', 'ab')
58
58
class LockError(Exception):
59
class LockError(Exception):
59
	'''Lock error for the package manager.
60
	'''Lock error for the package manager.
60
	Not to be confused with LockFailedException (apt)
61
	Not to be confused with LockFailedException (apt)
 Lines 88-93    Link Here 
88
		if msg is None:
89
		if msg is None:
89
			return
90
			return
90
		msg = '%s\n' % str(msg).strip()
91
		msg = '%s\n' % str(msg).strip()
92
		PACKAGE_MANAGER_LOG.write(msg)
91
		for log in self.logfiles.values():
93
		for log in self.logfiles.values():
92
			log.write(msg)
94
			log.write(msg)
93
95
 Lines 185-192    Link Here 
185
	def fork(self):
187
	def fork(self):
186
		# we better have a real file
188
		# we better have a real file
187
		# when using low-level routines
189
		# when using low-level routines
188
		tmp = tempfile.TemporaryFile()
190
		msg_writer = MessageWriter(self.progress_state, PACKAGE_MANAGER_LOG)
189
		msg_writer = MessageWriter(self.progress_state, tmp)
190
		p = os.fork()
191
		p = os.fork()
191
		if p == 0:
192
		if p == 0:
192
			os.dup2(msg_writer.fileno(), sys.stdout.fileno())
193
			os.dup2(msg_writer.fileno(), sys.stdout.fileno())
 Lines 273-278    Link Here 
273
			finally:
274
			finally:
274
				self.progress_state.logfiles.pop(logfile.name)
275
				self.progress_state.logfiles.pop(logfile.name)
275
276
277
	def log(self, msg):
278
		self.progress_state.log(msg)
279
276
	@contextmanager
280
	@contextmanager
277
	def locked(self, reset_status=False, set_finished=False):
281
	def locked(self, reset_status=False, set_finished=False):
278
		self.lock()
282
		self.lock()
 Lines 309-319    Link Here 
309
			self.unlock()
313
			self.unlock()
310
314
311
	def _set_apt_pkg_config(self, options):
315
	def _set_apt_pkg_config(self, options):
312
		revert_options = {}
316
		revert_options = []
313
		for option_name, option_value in options.iteritems():
317
		for option_name, option_value in options:
314
			old_value = apt_pkg.config.get(option_name)
318
			old_value = apt_pkg.config.get(option_name)
315
			apt_pkg.config[option_name] = option_value
319
			apt_pkg.config[option_name] = option_value
316
			revert_options[option_name] = old_value
320
			revert_options.append((option_name, old_value))
317
		return revert_options
321
		return revert_options
318
322
319
	def add_hundred_percent(self):
323
	def add_hundred_percent(self):
 Lines 347-358    Link Here 
347
	@contextmanager
351
	@contextmanager
348
	def brutal_noninteractive(self):
352
	def brutal_noninteractive(self):
349
		with self.noninteractive():
353
		with self.noninteractive():
350
			options = {
354
			options = [
351
					'DPkg::Options::': '--force-overwrite',
355
				('DPkg::Options::', '--force-overwrite'),
352
					'DPkg::Options::': '--force-overwrite-dir',
356
				('DPkg::Options::', '--force-overwrite-dir'),
353
					'APT::Get::Trivial-Only': 'no',
357
				('APT::Get::AllowUnauthenticated', '1'),
354
					'quiet': '1',
358
				('APT::Get::Trivial-Only', 'no'),
355
			}
359
				('quiet', '1'),
360
			]
356
			revert_options = self._set_apt_pkg_config(options)
361
			revert_options = self._set_apt_pkg_config(options)
357
			try:
362
			try:
358
				yield
363
				yield
 Lines 364-375    Link Here 
364
		''' dont ever ask for user input '''
369
		''' dont ever ask for user input '''
365
		old_debian_frontend = os.environ.get('DEBIAN_FRONTEND')
370
		old_debian_frontend = os.environ.get('DEBIAN_FRONTEND')
366
		os.environ['DEBIAN_FRONTEND'] = 'noninteractive'
371
		os.environ['DEBIAN_FRONTEND'] = 'noninteractive'
367
		options = {
372
		options = [
368
				'APT::Get::Assume-Yes': 'true',
373
			('APT::Get::Assume-Yes', 'true'),
369
				'APT::Get::force-yes': 'true',
374
			('APT::Get::force-yes', 'true'),
370
				'APT::Get::AllowUnauthenticated': '1',
375
			('DPkg::Options::', '--force-confold'),
371
				'DPkg::Options::': '--force-confold',
376
		]
372
		}
373
		revert_options = self._set_apt_pkg_config(options)
377
		revert_options = self._set_apt_pkg_config(options)
374
		try:
378
		try:
375
			yield
379
			yield
 Lines 440-445    Link Here 
440
		for pkg in self.cache:
444
		for pkg in self.cache:
441
			yield pkg
445
			yield pkg
442
446
447
	def mark_auto(self, auto, *pkgs):
448
		'''Immediately sets packages to automatically
449
		installed (or not). Calls commit()!'''
450
		for pkg in self.get_packages(pkgs):
451
			pkg.mark_auto(auto)
452
		self.commit()
453
		self.reopen_cache()
454
443
	def mark(self, install, remove, dry_run=False):
455
	def mark(self, install, remove, dry_run=False):
444
		'''Marks packages, returns all
456
		'''Marks packages, returns all
445
		installed, removed or broken packages.
457
		installed, removed or broken packages.
 Lines 464-469    Link Here 
464
		for pkg in self.cache.get_changes():
476
		for pkg in self.cache.get_changes():
465
			if pkg.marked_install or pkg.marked_upgrade:
477
			if pkg.marked_install or pkg.marked_upgrade:
466
				to_be_installed.add(pkg.name)
478
				to_be_installed.add(pkg.name)
479
				if apt_pkg.config.get('APT::Get::AllowUnauthenticated') != '1':
480
					authenticated = False 
481
					for origin in pkg.candidate.origins:
482
						authenticated |= origin.trusted
483
					if not authenticated:
484
						self.progress_state.error('%s: %s' % (pkg.name, _('Untrusted origin')))
485
						broken.add(pkg.name)
467
			if pkg.marked_delete:
486
			if pkg.marked_delete:
468
				to_be_removed.add(pkg.name)
487
				to_be_removed.add(pkg.name)
469
			if pkg.is_inst_broken:
488
			if pkg.is_inst_broken:

Return to bug 29805