diff -Nru unattended-upgrades-0.96/data/50unattended-upgrades.Debian unattended-upgrades-0.93.1ubuntu8/data/50unattended-upgrades.Debian --- unattended-upgrades-0.96/data/50unattended-upgrades.Debian 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/data/50unattended-upgrades.Debian 2016-12-11 11:31:26.000000000 +0100 @@ -36,7 +36,6 @@ // "o=Debian,a=stable"; // "o=Debian,a=stable-updates"; // "o=Debian,a=proposed-updates"; -// "o=Debian Backports,a=${distro_codename}-backports,l=Debian Backports"; "origin=Debian,codename=${distro_codename},label=Debian-Security"; }; @@ -55,12 +54,12 @@ //Unattended-Upgrade::AutoFixInterruptedDpkg "false"; // Split the upgrade into the smallest possible chunks so that -// they can be interrupted with SIGTERM. This makes the upgrade +// they can be interrupted with SIGUSR1. This makes the upgrade // a bit slower but it has the benefit that shutdown while a upgrade // is running is possible (with a small delay) -//Unattended-Upgrade::MinimalSteps "false"; +//Unattended-Upgrade::MinimalSteps "true"; -// Install all unattended-upgrades when the machine is shutting down +// Install all unattended-upgrades when the machine is shuting down // instead of doing it in the background while the machine is running // This will (obviously) make shutdown slower //Unattended-Upgrade::InstallOnShutdown "true"; diff -Nru unattended-upgrades-0.96/data/50unattended-upgrades.Raspbian unattended-upgrades-0.93.1ubuntu8/data/50unattended-upgrades.Raspbian --- unattended-upgrades-0.96/data/50unattended-upgrades.Raspbian 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/data/50unattended-upgrades.Raspbian 2016-12-11 11:31:26.000000000 +0100 @@ -8,7 +8,7 @@ // file, but several aliases are accepted. The accepted keywords are: // a,archive,suite (eg, "stable") // c,component (eg, "main", "contrib", "non-free") -// l,label (eg, "Rapsbian", "Raspbian") +// l,label (eg, "Rapsbian", "Raspbian-Security") // o,origin (eg, "Raspbian", "Unofficial Multimedia Packages") // n,codename (eg, "jessie", "jessie-updates") // site (eg, "http.debian.net") @@ -27,7 +27,7 @@ // "o=Raspbian,n=jessie"; // "o=Raspbian,n=jessie-updates"; // "o=Raspbian,n=jessie-proposed-updates"; -// "o=Raspbian,n=jessie,l=Raspbian"; +// "o=Raspbian,n=jessie,l=Raspbian-Security"; // Archive or Suite based matching: // Note that this will silently match a different release after @@ -35,7 +35,7 @@ // new stable). // "o=Raspbian,a=stable"; // "o=Raspbian,a=testing"; - "origin=Raspbian,archive=${distro_codename},label=Raspbian"; + "origin=Raspbian,archive=${distro_codename},label=Raspbian-Security"; }; // List of packages to not update (regexp are supported) @@ -53,12 +53,12 @@ //Unattended-Upgrade::AutoFixInterruptedDpkg "false"; // Split the upgrade into the smallest possible chunks so that -// they can be interrupted with SIGTERM. This makes the upgrade +// they can be interrupted with SIGUSR1. This makes the upgrade // a bit slower but it has the benefit that shutdown while a upgrade // is running is possible (with a small delay) -//Unattended-Upgrade::MinimalSteps "false"; +//Unattended-Upgrade::MinimalSteps "true"; -// Install all unattended-upgrades when the machine is shutting down +// Install all unattended-upgrades when the machine is shuting down // instead of doing it in the background while the machine is running // This will (obviously) make shutdown slower //Unattended-Upgrade::InstallOnShutdown "true"; diff -Nru unattended-upgrades-0.96/data/50unattended-upgrades.SteamOS unattended-upgrades-0.93.1ubuntu8/data/50unattended-upgrades.SteamOS --- unattended-upgrades-0.96/data/50unattended-upgrades.SteamOS 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/data/50unattended-upgrades.SteamOS 2016-12-11 11:31:26.000000000 +0100 @@ -36,7 +36,6 @@ // "o=Debian,a=stable"; // "o=Debian,a=stable-updates"; // "o=Debian,a=proposed-updates"; -// "o=Debian Backports,a=${distro_codename}-backports,l=Debian Backports"; "origin=Debian,codename=${distro_codename},label=Debian-Security"; }; @@ -55,12 +54,12 @@ //Unattended-Upgrade::AutoFixInterruptedDpkg "false"; // Split the upgrade into the smallest possible chunks so that -// they can be interrupted with SIGTERM. This makes the upgrade +// they can be interrupted with SIGUSR1. This makes the upgrade // a bit slower but it has the benefit that shutdown while a upgrade // is running is possible (with a small delay) -//Unattended-Upgrade::MinimalSteps "false"; +//Unattended-Upgrade::MinimalSteps "true"; -// Install all unattended-upgrades when the machine is shutting down +// Install all unattended-upgrades when the machine is shuting down // instead of doing it in the background while the machine is running // This will (obviously) make shutdown slower //Unattended-Upgrade::InstallOnShutdown "true"; diff -Nru unattended-upgrades-0.96/data/50unattended-upgrades.Ubuntu unattended-upgrades-0.93.1ubuntu8/data/50unattended-upgrades.Ubuntu --- unattended-upgrades-0.96/data/50unattended-upgrades.Ubuntu 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/data/50unattended-upgrades.Ubuntu 2017-05-18 01:28:32.000000000 +0200 @@ -24,6 +24,10 @@ // "libc6-i686"; }; +// This option will controls whether the development release of Ubuntu will be +// upgraded automatically. +Unattended-Upgrade::DevRelease "false"; + // This option allows you to control if on a unclean dpkg exit // unattended-upgrades will automatically run // dpkg --force-confold --configure -a @@ -31,10 +35,10 @@ //Unattended-Upgrade::AutoFixInterruptedDpkg "false"; // Split the upgrade into the smallest possible chunks so that -// they can be interrupted with SIGTERM. This makes the upgrade +// they can be interrupted with SIGUSR1. This makes the upgrade // a bit slower but it has the benefit that shutdown while a upgrade // is running is possible (with a small delay) -//Unattended-Upgrade::MinimalSteps "false"; +//Unattended-Upgrade::MinimalSteps "true"; // Install all unattended-upgrades when the machine is shutting down // instead of doing it in the background while the machine is running diff -Nru unattended-upgrades-0.96/debian/changelog unattended-upgrades-0.93.1ubuntu8/debian/changelog --- unattended-upgrades-0.96/debian/changelog 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/debian/changelog 2017-08-01 00:29:04.000000000 +0200 @@ -1,138 +1,94 @@ -unattended-upgrades (0.96) unstable; urgency=medium +unattended-upgrades (0.93.1ubuntu8) artful; urgency=medium - * Use test/aptroot instead of / as APT root directory in tests - (Closes: #873079) - - -- Balint Reczey Tue, 29 Aug 2017 18:54:04 +0200 - -unattended-upgrades (0.95) unstable; urgency=medium - - [ Michael Vogt ] - * fix some type hints - - [ Balint Reczey ] - * Increase timeout to 30 minutes for u-u-s to finish before killing it. - Soft timeout until u-u-s is considered to be finished properly - is also increased to 25 minutes from 10 minutes. - * Update the signal used to SIGTERM in the documentation - * Default to performing upgrades in minimal steps - * Use same progress logfile when performing upgrades in minimal steps. - This allows u-u-s to always show the progress. - * Joining maintaining the package as an uploader - * Log when not all upgrades could be installed - * Fix incorrect example for Update-Days. - * Add Debian backports example to Origins-Pattern. - * Don't restart unattended-upgrades when the package is upgraded - * Silence lintinan warning init.d-script-possible-missing-stop - * Update .pot and .po file - - -- Balint Reczey Wed, 23 Aug 2017 17:35:57 +0200 - -unattended-upgrades (0.94) unstable; urgency=medium - - [ Brian Murray ] - * Add apt history log to apport reports - * unattended-upgrades: Provide some information and create a log entry when - there is a failure to parse the allowed origins. (LP: #1680599) - * improve the changes sanity check to cache more insane cases - * Do not mark packages for deletion / autoremoval if unattended-upgrades - is being run in dry-run mode. + [ Steve Langasek ] + * Cherry-pick 2e5deed, f26edb4 from upstream to add support for a + --download-only option, enabling us to download updates at a random time + of day by default but apply them predictably in the 6am-7am window. + LP: #1686470. - [ Louis Bouchard ] - * Fix --delay type in unattended-upgrade-shutdown (Closes: #837161) + -- Dimitri John Ledkov Mon, 31 Jul 2017 23:28:38 +0100 - [ Balint Reczey ] - * ACK NMU - * Fix indentation in test-systemd.py - * Keep apt's partial dir in tests. - This fixes make -C test in a clean repository - * Clean up all generated files in override_dh_auto_clean - * Update debhelper compat level to 9 - * Move acquiring shutdown_lock earlier in u-u to cover dpkg --configure step - * Start handling SIGUSR1 gracefully earlier in unattended-upgrade - (LP: #1690980) - * Handle SIGTERM instead of SIGUSR1 as a graceful shutdown signal - * Place unattended-upgrade pid file early and remove it on exit. - * Override maintainer-script-calls-systemctl lintian warnings - * Don't start package downloads when shutdown has already started - * Let unattended-upgrade run uninterrupted in shutdown mode until timeout - * Fix indentation in test-systemd.py +unattended-upgrades (0.93.1ubuntu7) artful; urgency=medium - [ Julian Andres Klode ] - * Add a --download-only option (Closes: #863911) (LP: #1686470) * Fix PEP8 failures (replace except: with except Exception:) - (Closes: #865897) - - [ Steve Langasek ] - * Add UbuntuESM to the list of sources automatically upgraded from by default - (LP: #1687129) - [ Jonatan Nyberg ] - * Update Swedish debconf strings (Closes: #855361) + -- Julian Andres Klode Sat, 01 Jul 2017 00:36:13 +0200 - [ Peter Lewis ] - * Multiple typo fixes +unattended-upgrades (0.93.1ubuntu6) artful; urgency=medium - [ Michael Vogt ] - * add HACKING.md - * add pep484 type hints - * add spread test - * Enable updates on Raspbian + * unattended-upgrades: Do not automatically upgrade the development release + of Ubuntu unless Unattended-Upgrade::DevRelease is true. (LP: #1649709) - [ John Horne ] - * Blacklisted packages are now added to the pkgs_kept_back list. - * Reduced instance of line too long. - * Some typos corrected in the README file. - * Fix for pep8 - closing bracket missing visual indentation - * Added tests that blacklisted packages are mentioned in email messages. - * Updated argument type comment for is_pkgname_in_blacklist function. + -- Brian Murray Wed, 17 May 2017 16:28:32 -0700 - [ nachoparker ] - * There is noRaspbian-Security label +unattended-upgrades (0.93.1ubuntu5) artful; urgency=medium - -- Michael Vogt Fri, 28 Jul 2017 10:11:07 +0200 + * unattended-upgrades: Provide some information and create a log entry when + there is a failure to parse the allowed origins. (LP: #1680599) -unattended-upgrades (0.93.1+nmu2) unstable; urgency=medium + -- Brian Murray Wed, 17 May 2017 13:29:25 -0700 - * Non-maintainer upload. - * Fix PEP8 failures (replace except: with except Exception:) - (Closes: #865897) +unattended-upgrades (0.93.1ubuntu4) artful; urgency=medium - -- Julian Andres Klode Thu, 20 Jul 2017 10:51:11 +0200 + * Add UbuntuESM to the list of sources automatically upgraded from by + default. LP: #1687129. -unattended-upgrades (0.93.1+nmu1) unstable; urgency=medium + -- Steve Langasek Thu, 11 May 2017 18:08:55 -0700 - * Non-maintainer upload. +unattended-upgrades (0.93.1ubuntu3) artful; urgency=medium - [ Louis Bouchard ] - * Fix the unattended-upgrades.service unit not correctly working: + * Complete the solution for the unattended-upgrades.service unit not + correctly working (LP: #1654600): - d/rules : Remove the override_dh_installinit. The stop option is no longer available so the command falls back to default. This is the normal behavior so the override is not required - - d/unattended-upgrades.init : Add Default-Start runlevels, otherwise the + - d/unattended-upgrades.init : Add Default-Start runlevels, otherwise the unattended-upgrades.service unit cannot be enabled on boot - d/postinst : Cleanup the stop symlinks created by the wrong override_dh_installinit. Without that, the systemd unit cannot be enabled correctly. - Force disable the service before deb-systemd-helper runs so the old + Force disable the service before deb-systemd-helper runs so the old symlink is not left dangling (workaround for Debian Bug #797108). - Force enable and start of the systemd unit to work around Debian Bug - #797108 which fails to enable systemd units correctly when WantedBy= - statement is changed which is the case here. + Force enable and start of the systemd unit to work around Debian Bug #797108 + which fails to enable systemd units correctly when WantedBy= statement + is changed which is the case here. - d/unattended-upgrades.service : Fix the service so it runs correctly on shutdown : Remove DefaultDependencies=no : Breaks normal shutdown dependencies Set After= to network.target and local-fs.target. Since our service is - now ExecStop, it will run before network and local-fs become - unavailable. Add RequiresMountsFor=/var/log /var/run /var/lib /boot : - Necessary if /var is a separate file system. Set WantedBy= to - multi-user.target + now ExecStop, it will run before network and local-fs become unavailable. + Add RequiresMountsFor=/var/log /var/run /var/lib /boot : Necessary if + /var is a separate file system. Set WantedBy= to multi-user.target - Add DEP8 tests to verify the following : Verify that the unattended-upgrades.service unit is enabled and started. Verify that InstallOnShutdown works when configured. - (Closes: #809669) - -- Gaudenz Steinlin Sat, 06 May 2017 19:42:14 +0200 + -- Louis Bouchard Mon, 24 Apr 2017 14:07:19 +0200 + +unattended-upgrades (0.93.1ubuntu2) zesty; urgency=medium + + * The systemd unit needs to be an ExecStop since it is is activated on + shutdown. Otherwise, it will get scheduled after completion of + the local-fs.target. In the case where /var is a separate + filesystem, unattended-upgrade-shutdown will hang until timeout + since /var/run is expected but no longer there (LP: #1654600) + + -- Louis Bouchard Thu, 02 Mar 2017 16:55:26 +0100 + +unattended-upgrades (0.93.1ubuntu1) zesty; urgency=medium + + [ Brian Murray ] + * When performing a sanity check for packages to install or upgrade return + false when either there are no packages in the cache or the package to + upgrade is not in the change set. (LP: #1654070) + * Do not mark packages for deletion / autoremoval if unattended-upgrades is + being run in dry-run mode. (LP: #1544942) + + [ Louis Bouchard ] + * Store delay command line option as an int not a string since we do maths + with it. + + -- Brian Murray Fri, 06 Jan 2017 13:00:24 -0800 unattended-upgrades (0.93.1) unstable; urgency=medium diff -Nru unattended-upgrades-0.96/debian/compat unattended-upgrades-0.93.1ubuntu8/debian/compat --- unattended-upgrades-0.96/debian/compat 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/debian/compat 2016-12-11 11:31:26.000000000 +0100 @@ -1 +1 @@ -9 \ No newline at end of file +7 \ No newline at end of file diff -Nru unattended-upgrades-0.96/debian/control unattended-upgrades-0.93.1ubuntu8/debian/control --- unattended-upgrades-0.96/debian/control 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/debian/control 2017-02-24 22:24:21.000000000 +0100 @@ -1,9 +1,9 @@ Source: unattended-upgrades Section: admin Priority: optional -Maintainer: Michael Vogt -Uploaders: Balint Reczey -Build-Depends: debhelper (>= 9~), po-debconf +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: Michael Vogt +Build-Depends: debhelper (>= 7.0.50~), po-debconf Build-Depends-Indep: python (>= 2.6.6-3~), python3-distutils-extra, python3-setuptools, python-dev, python3-dev, python-coverage, pep8, pyflakes, python-apt, python3-apt, python-mock, python3-mock, diff -Nru unattended-upgrades-0.96/debian/lintian-overrides unattended-upgrades-0.93.1ubuntu8/debian/lintian-overrides --- unattended-upgrades-0.96/debian/lintian-overrides 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/debian/lintian-overrides 1970-01-01 01:00:00.000000000 +0100 @@ -1,2 +0,0 @@ -unattended-upgrades: maintainer-script-calls-systemctl * -unattended-upgrades: init.d-script-possible-missing-stop etc/init.d/unattended-upgrades 1 diff -Nru unattended-upgrades-0.96/debian/NEWS.Debian unattended-upgrades-0.93.1ubuntu8/debian/NEWS.Debian --- unattended-upgrades-0.96/debian/NEWS.Debian 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/debian/NEWS.Debian 2016-12-11 11:31:26.000000000 +0100 @@ -1,16 +1,3 @@ -unattended-upgrades (0.95) UNRELEASED; urgency=medium - - Unattended-upgrades now defaults to installing upgrades in minimal - steps to ensure leaving the system in a consisten state when the - system starts shutting in the middle of an upgrade. - - With the previous default of performing all upgrades in one shot - the installations could take more than 15 minutes which was the - final timeout after which unattended-upgrade and dpkg were killed - leaving half-installed packages behind on shutdown. - - -- Balint Reczey Tue, 01 Aug 2017 19:43:50 +0200 - unattended-upgrades (0.50) unstable; urgency=low When running with the --debug switch, previous versions of diff -Nru unattended-upgrades-0.96/debian/po/sv.po unattended-upgrades-0.93.1ubuntu8/debian/po/sv.po --- unattended-upgrades-0.96/debian/po/sv.po 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/debian/po/sv.po 2016-12-11 11:31:26.000000000 +0100 @@ -8,32 +8,32 @@ "Project-Id-Version: unattended-upgrades\n" "Report-Msgid-Bugs-To: unattended-upgrades@packages.debian.org\n" "POT-Creation-Date: 2015-11-03 07:12+0100\n" -"PO-Revision-Date: 2017-02-17 08:25+0100\n" +"PO-Revision-Date: 2016-04-21 14:42+0100\n" "Last-Translator: Jonatan Nyberg \n" "Language-Team: swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.11\n" +"X-Generator: Poedit 1.6.10\n" #. Type: boolean #. Description #: ../templates:2001 msgid "Automatically download and install stable updates?" -msgstr "Automatiskt ladda ner och installera stabila uppdateringar?" +msgstr "Automatiskt hämta och installera stabila uppdateringar?" #. Type: boolean #. Description #: ../templates:2001 msgid "Applying updates on a frequent basis is an important part of keeping systems secure. By default, updates need to be applied manually using package management tools. Alternatively, you can choose to have this system automatically download and install important updates." -msgstr "Tillämpa uppdateringar på en frekvent basis är en viktig del för att hålla system säkra. Som standard, behöver uppdateringar appliceras manuellt med hjälp av pakethanteringsverktyg. Alternativt kan du välja att detta system automatiskt hämtar och installerar viktiga uppdateringar." +msgstr "Tillämpa uppdateringar på en frekvent basis är en viktig del för att hålla systemen säkra. Som standard, uppdateringar måste appliceras manuellt med hjälp av pakethanteringsverktyg. Alternativt kan du välja att ha detta system automatiskt hämtar och installerar viktiga uppdateringar." #. Type: string #. Description #: ../templates:3001 msgid "Origins-Pattern that packages must match to be upgraded:" -msgstr "Origins-Pattern som paket måste matcha för att bli uppgraderade:" +msgstr "Origins-Pattern som paketet måste matcha för att uppgraderas:" #. Type: string #. Description @@ -45,4 +45,5 @@ #. Description #: ../templates:3001 msgid "A package will be upgraded only if its metadata values match all the supplied keywords in the origin line." -msgstr "Ett paket kommer att uppgraderas endast om dess metadatavärden matchar alla medföljande nyckelord i origin linjen." +msgstr "Ett paket kommer att uppgraderas endast om dess metadatavärden matchar alla de medföljande nyckelord i origin-linjen." + diff -Nru unattended-upgrades-0.96/debian/postinst unattended-upgrades-0.93.1ubuntu8/debian/postinst --- unattended-upgrades-0.96/debian/postinst 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/debian/postinst 2017-04-20 16:37:29.000000000 +0200 @@ -61,18 +61,16 @@ && [ -f /etc/rc6.d/S[0-9][0-9]unattended-upgrades ] ; then update-rc.d -f unattended-upgrades remove fi - # Recover from broken dh_installinit override in versions < 0.93.1+nmu1 - if dpkg --compare-versions "$2" lt "0.93.1+nmu1"; then + # Recover from broken dh_installinit override in versions < 0.93.1ubuntu3 + if dpkg --compare-versions "$2" lt "0.93.1ubuntu3"; then if [ -f /etc/rc0.d/K[0-9][0-9]unattended-upgrades ] \ && [ -f /etc/rc6.d/K[0-9][0-9]unattended-upgrades ] ; then update-rc.d -f unattended-upgrades remove fi - # If running systemd, explicitely disable the service otherwise - # the shutdown.target symlink will remain (See Debian Bug #797108) - if [ -d /run/systemd/system ]; then - if deb-systemd-helper --quiet was-enabled unattended-upgrades.service; then - deb-systemd-helper disable unattended-upgrades.service >/dev/null || true - fi + # Explicitely disable the service otherwise the shutdown.target + # symlink will remain (See Debian Bug #797108) + if deb-systemd-helper --quiet was-enabled unattended-upgrades.service; then + deb-systemd-helper disable unattended-upgrades.service >/dev/null || true fi fi ;; @@ -91,18 +89,15 @@ #DEBHELPER# -# Explicitly enable and start the service. Debian Bug #797108 for +# Explicitely enable and start the service.i Debian Bug #797108 for # deb-systemd-helper fails to correctly enable the unit. It checks for # enablement using the content of the WantedBy= which has changed so it # sees the service as disable and will not enable it. case "$1" in configure) - if dpkg --compare-versions "$2" lt "0.93.1+nmu1" \ + if dpkg --compare-versions "$2" lt "0.93.1ubuntu3" \ && [ -d /run/systemd/system ]; then - # workaround systemd bug with enable --now which - # fails to start the unit - systemctl enable unattended-upgrades || true - systemctl start unattended-upgrades || true + systemctl --now enable unattended-upgrades || true fi ;; esac diff -Nru unattended-upgrades-0.96/debian/rules unattended-upgrades-0.93.1ubuntu8/debian/rules --- unattended-upgrades-0.96/debian/rules 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/debian/rules 2017-04-06 15:39:33.000000000 +0200 @@ -19,11 +19,6 @@ --root=$(CURDIR)/debian/unattended-upgrades \ --install-layout=deb -override_dh_installinit: - # We do not want to run the init script in the postinst/prerm, its - # really only useful on shutdown, see Debian bug #645919. - dh_installinit $@ -r - override_dh_auto_clean: # Sanity-check before upload. set -e; for f in unattended-upgrade unattended-upgrade-shutdown; do \ @@ -33,9 +28,3 @@ rm -f $$f.py; \ done $(PYTHON) setup.py clean -a - rm -rf .coverage \ - test/root.*/var/cache/apt/*.bin \ - test/root.*/var/log \ - test/root.unused-deps/var/lib/apt/extended_states \ - test/root.unused-deps/var/lib/dpkg/status \ - test/root.unused-deps/var/run/unattended-upgrades.progress diff -Nru unattended-upgrades-0.96/debian/source_unattended-upgrades.py unattended-upgrades-0.93.1ubuntu8/debian/source_unattended-upgrades.py --- unattended-upgrades-0.96/debian/source_unattended-upgrades.py 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/debian/source_unattended-upgrades.py 2016-12-11 11:31:26.000000000 +0100 @@ -19,5 +19,3 @@ attach_conffiles(report, 'update-notifier-common', ui=ui) attach_file_if_exists( report, '/var/log/unattended-upgrades/unattended-upgrades.log') - attach_file_if_exists( - report, '/var/log/apt/history.log') diff -Nru unattended-upgrades-0.96/debian/tests/test-systemd.py unattended-upgrades-0.93.1ubuntu8/debian/tests/test-systemd.py --- unattended-upgrades-0.96/debian/tests/test-systemd.py 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/debian/tests/test-systemd.py 2017-04-04 12:16:32.000000000 +0200 @@ -16,7 +16,7 @@ subprocess.check_output(['systemctl', '--quiet', 'is-active', Service]) except subprocess.CalledProcessError: out = subprocess.getoutput( - 'systemctl status unattended-upgrades.service') + 'systemctl status unattended-upgrades.service') print('test_systemd_service() FAILED\n%s' % out) return False return True diff -Nru unattended-upgrades-0.96/debian/unattended-upgrades.service unattended-upgrades-0.93.1ubuntu8/debian/unattended-upgrades.service --- unattended-upgrades-0.96/debian/unattended-upgrades.service 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/debian/unattended-upgrades.service 2017-04-04 12:16:32.000000000 +0200 @@ -8,7 +8,7 @@ Type=oneshot RemainAfterExit=yes ExecStop=/usr/share/unattended-upgrades/unattended-upgrade-shutdown -TimeoutStopSec=1800 +TimeoutStopSec=900 [Install] WantedBy=multi-user.target diff -Nru unattended-upgrades-0.96/HACKING.md unattended-upgrades-0.93.1ubuntu8/HACKING.md --- unattended-upgrades-0.96/HACKING.md 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/HACKING.md 1970-01-01 01:00:00.000000000 +0100 @@ -1,15 +0,0 @@ -Hacking on unattended-upgrades -============================== - -Hacking on unattended-upgrades should be straightforward. -If you plan to fix bugs or add features, please consider -adding tests. - -Running tests -------------- - -Please run: - - $ make -C test - - diff -Nru unattended-upgrades-0.96/po/da.po unattended-upgrades-0.93.1ubuntu8/po/da.po --- unattended-upgrades-0.96/po/da.po 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/po/da.po 2016-12-11 11:31:26.000000000 +0100 @@ -16,42 +16,31 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../unattended-upgrade:182 +#: ../unattended-upgrade:162 #, python-format msgid "Progress: %s %% (%s)" msgstr "Status: %s %% (%s)" -#: ../unattended-upgrade:376 ../unattended-upgrade:393 -#, python-format -msgid "Unable to parse %s." -msgstr "" - -#: ../unattended-upgrade:479 ../unattended-upgrade:577 -#: ../unattended-upgrade-shutdown:182 +#: ../unattended-upgrade:418 ../unattended-upgrade:501 +#: ../unattended-upgrade-shutdown:161 msgid "All upgrades installed" msgstr "Alle opgraderinger er installeret" -#: ../unattended-upgrade:481 ../unattended-upgrade:569 +#: ../unattended-upgrade:420 ../unattended-upgrade:493 msgid "Installing the upgrades failed!" msgstr "Installation af opgraderingerne mislykkedes!" -#: ../unattended-upgrade:482 ../unattended-upgrade:570 +#: ../unattended-upgrade:421 ../unattended-upgrade:494 #, python-format msgid "error message: '%s'" msgstr "fejlbesked: »%s«" -#: ../unattended-upgrade:483 ../unattended-upgrade:571 +#: ../unattended-upgrade:422 ../unattended-upgrade:495 #, python-format msgid "dpkg returned a error! See '%s' for details" msgstr "dpkg returnerede en fejl! Se »%s« for detaljer" -#: ../unattended-upgrade:541 -#, fuzzy, python-format -#| msgid "Packages that will be upgraded: %s" -msgid "Some packages can not be upgraded: %s" -msgstr "Pakker som vil blive opgraderet: %s" - -#: ../unattended-upgrade:895 +#: ../unattended-upgrade:795 msgid "" "No '/usr/bin/mail' or '/usr/sbin/sendmail',can not send mail. You probably " "want to install the 'mailx' package." @@ -59,22 +48,17 @@ "Ingen »/usr/bin/mail« eller »/usr/sbin/sendmail« kan sende post. Du skal " "sikkert installere pakken »mailx«." -#: ../unattended-upgrade:909 -msgid "[reboot required]" -msgstr "" - -#: ../unattended-upgrade:911 -msgid "[package on hold]" -msgstr "" - -#: ../unattended-upgrade:914 -#, fuzzy -#| msgid "[reboot required] unattended-upgrades result for '%s': %s" -msgid "" -"{hold_flag}{reboot_flag} unattended-upgrades result for '{machine}': {result}" +#: ../unattended-upgrade:811 +#, python-format +msgid "[reboot required] unattended-upgrades result for '%s': %s" msgstr "[genstart krævet] unattended-upgrades resultat for »%s: %s«" -#: ../unattended-upgrade:918 +#: ../unattended-upgrade:814 +#, python-format +msgid "unattended-upgrades result for '%s': '%s'" +msgstr "unattended-upgrades resultat for »%s«: »%s«" + +#: ../unattended-upgrade:816 #, python-format msgid "" "Unattended upgrade returned: %s\n" @@ -83,7 +67,7 @@ "Unattended upgrade returnerede: %s\n" "\n" -#: ../unattended-upgrade:921 +#: ../unattended-upgrade:819 msgid "" "Warning: A reboot is required to complete this upgrade.\n" "\n" @@ -91,97 +75,97 @@ "Advarsel: En genstart er krævet for at færdiggøre denne opgradering.\n" "\n" -#: ../unattended-upgrade:923 +#: ../unattended-upgrade:821 msgid "Packages that were upgraded:\n" msgstr "Pakker som blev opgraderet:\n" -#: ../unattended-upgrade:925 +#: ../unattended-upgrade:823 msgid "Packages that attempted to upgrade:\n" msgstr "Pakker som forsøgte at opgradere:\n" -#: ../unattended-upgrade:929 +#: ../unattended-upgrade:827 msgid "Packages with upgradable origin but kept back:\n" msgstr "Pakker med opgraderbar oprindelse men holdt tilbage:\n" -#: ../unattended-upgrade:934 +#: ../unattended-upgrade:832 msgid "Package installation log:" msgstr "Log for pakkeinstallation:" -#: ../unattended-upgrade:937 +#: ../unattended-upgrade:835 msgid "Unattended-upgrades log:\n" msgstr "Log for unattended-upgrades:\n" -#: ../unattended-upgrade:965 +#: ../unattended-upgrade:855 #, python-format msgid "Writing dpkg log to '%s'" msgstr "Skriver dpkg-log til »%s«" -#: ../unattended-upgrade:1121 +#: ../unattended-upgrade:987 #, python-format msgid "Found %s, but not rebooting because %s is logged in." msgid_plural "Found %s, but not rebooting because %s are logged in." msgstr[0] "" msgstr[1] "" -#: ../unattended-upgrade:1175 +#: ../unattended-upgrade:1033 #, python-format msgid "package '%s' upgradable but fails to be marked for upgrade (%s)" msgstr "pakke »%s« kan opgraderes men fejler i markering for opgradering (%s)" -#: ../unattended-upgrade:1250 +#: ../unattended-upgrade:1097 #, python-format msgid "Packages that are auto removed: '%s'" msgstr "Pakker som automatisk fjernes: »%s«" -#: ../unattended-upgrade:1256 +#: ../unattended-upgrade:1103 #, fuzzy #| msgid "Packages that are auto removed: '%s'" msgid "Packages were successfully auto-removed" msgstr "Pakker som automatisk fjernes: »%s«" -#: ../unattended-upgrade:1258 +#: ../unattended-upgrade:1105 #, fuzzy #| msgid "Installing the upgrades failed!" msgid "Auto-removing the packages failed!" msgstr "Installation af opgraderingerne mislykkedes!" -#: ../unattended-upgrade:1259 +#: ../unattended-upgrade:1106 #, fuzzy, python-format #| msgid "error message: '%s'" msgid "Error message: '%s'" msgstr "fejlbesked: »%s«" -#: ../unattended-upgrade:1260 +#: ../unattended-upgrade:1107 #, fuzzy, python-format #| msgid "dpkg returned a error! See '%s' for details" msgid "dpkg returned an error! See '%s' for details" msgstr "dpkg returnerede en fejl! Se »%s« for detaljer" -#: ../unattended-upgrade:1320 +#: ../unattended-upgrade:1125 #, python-format msgid "Initial blacklisted packages: %s" msgstr "Oprindelig sortlistede pakker: %s" -#: ../unattended-upgrade:1325 +#: ../unattended-upgrade:1130 #, fuzzy, python-format #| msgid "Initial blacklisted packages: %s" msgid "Initial whitelisted packages: %s" msgstr "Oprindelig sortlistede pakker: %s" -#: ../unattended-upgrade:1328 +#: ../unattended-upgrade:1133 msgid "Starting unattended upgrades script" msgstr "Starter skript for unattended upgrades" -#: ../unattended-upgrade:1337 +#: ../unattended-upgrade:1136 #, python-format msgid "Allowed origins are: %s" msgstr "Tilladte oprindelser er: %s" -#: ../unattended-upgrade:1353 ../unattended-upgrade:1354 +#: ../unattended-upgrade:1152 ../unattended-upgrade:1153 msgid "Unclean dpkg state detected, trying to correct" msgstr "Uklar dpkg-tilstand detekteret, forsøger at rette" -#: ../unattended-upgrade:1365 +#: ../unattended-upgrade:1164 #, python-format msgid "" "dpkg --configure -a output:\n" @@ -190,52 +174,52 @@ "dpkg --configure -a output:\n" "%s" -#: ../unattended-upgrade:1374 +#: ../unattended-upgrade:1173 msgid "Lock could not be acquired (another package manager running?)" msgstr "Lås kunne ikke indhentes (kører en anden pakkehåndtering?)" -#: ../unattended-upgrade:1376 +#: ../unattended-upgrade:1175 msgid "Cache lock can not be acquired, exiting" msgstr "Lås for mellemlager kan ikke indhentes, afslutter" -#: ../unattended-upgrade:1383 ../unattended-upgrade:1384 -#: ../unattended-upgrade:1573 ../unattended-upgrade:1574 +#: ../unattended-upgrade:1182 ../unattended-upgrade:1183 +#: ../unattended-upgrade:1363 ../unattended-upgrade:1364 msgid "Cache has broken packages, exiting" msgstr "Mellemlager har ødelagte pakker, afslutter" -#: ../unattended-upgrade:1433 +#: ../unattended-upgrade:1226 #, python-format msgid "GetArchives() failed: '%s'" msgstr "GetArchives() mislykkedes: »%s«" -#: ../unattended-upgrade:1446 ../unattended-upgrade:1447 +#: ../unattended-upgrade:1236 ../unattended-upgrade:1237 #, python-format msgid "An error occurred: '%s'" msgstr "Der opstod en fejl: »%s«" -#: ../unattended-upgrade:1449 ../unattended-upgrade:1451 +#: ../unattended-upgrade:1239 ../unattended-upgrade:1241 #, python-format msgid "The URI '%s' failed to download, aborting" msgstr "Der kunne ikke hentes fra adressen »%s«, afbryder" -#: ../unattended-upgrade:1455 +#: ../unattended-upgrade:1245 #, python-format msgid "Download finished, but file '%s' not there?!?" msgstr "Hentning færdig, men filen »%s« var der ikke?!?" -#: ../unattended-upgrade:1471 ../unattended-upgrade:1475 +#: ../unattended-upgrade:1261 ../unattended-upgrade:1265 #, python-format msgid "Package '%s' has conffile prompt and needs to be upgraded manually" msgstr "" "Pakke »%s« bliver spurgt om oplysninger fra konfigurationsfilen og skal " "opgraderes manuelt" -#: ../unattended-upgrade:1503 +#: ../unattended-upgrade:1293 #, python-format msgid "package '%s' not upgraded" msgstr "pakke »%s« blev ikke opgraderet" -#: ../unattended-upgrade:1522 +#: ../unattended-upgrade:1311 #, fuzzy #| msgid "No packages found that can be upgraded unattended" msgid "" @@ -243,59 +227,44 @@ "removals" msgstr "Ingen pakker fundet som kan opgraderes uden ledsager" -#: ../unattended-upgrade:1550 +#: ../unattended-upgrade:1337 #, python-format msgid "Packages that will be upgraded: %s" msgstr "Pakker som vil blive opgraderet: %s" -#: ../unattended-upgrade:1647 +#: ../unattended-upgrade:1406 msgid "print debug messages" msgstr "vis fejlsøgningsbeskeder" -#: ../unattended-upgrade:1650 +#: ../unattended-upgrade:1409 msgid "make apt/libapt print verbose debug messages" msgstr "lad apt/libapt vise uddybende fejlsøgningsbeskeder" -#: ../unattended-upgrade:1653 +#: ../unattended-upgrade:1412 msgid "print info messages" msgstr "vis informationsbeskeder" -#: ../unattended-upgrade:1656 +#: ../unattended-upgrade:1415 msgid "Simulation, download but do not install" msgstr "Simulation, hent men installer ikke" -#: ../unattended-upgrade:1659 -#, fuzzy -#| msgid "Simulation, download but do not install" -msgid "Only download, do not even try to install." -msgstr "Simulation, hent men installer ikke" - -#: ../unattended-upgrade:1662 -msgid "Upgrade in minimal steps (and allow interrupting with SIGTERM" -msgstr "Opgrader i små trin (og tillad afbrydelse med SIGTERM)" +#: ../unattended-upgrade:1418 +msgid "Upgrade in minimal steps (and allow interrupting with SIGINT" +msgstr "Opgrader i små trin (og tillad afbrydelse med SIGINT)" -#: ../unattended-upgrade:1671 +#: ../unattended-upgrade:1427 msgid "You need to be root to run this application" msgstr "Du skal være administrator (root) for at køre dette program" -#: ../unattended-upgrade-shutdown:76 +#: ../unattended-upgrade-shutdown:72 msgid "Unattended-upgrade in progress during shutdown, sleeping for 5s" msgstr "Unattended-upgrade i gang under nedlukning, sover for 5 sekunder" -#: ../unattended-upgrade-shutdown:139 +#: ../unattended-upgrade-shutdown:125 msgid "Running unattended-upgrades in shutdown mode" msgstr "Kører unattended-upgrades i nedlukningstilstand" -#: ../unattended-upgrade-shutdown:165 +#: ../unattended-upgrade-shutdown:153 #, python-format msgid "Giving up on lockfile after %s delay" msgstr "Opgiver låsefilen efter %s forsinkelse" - -#: ../unattended-upgrade-shutdown:178 -msgid "" -"Unattended-upgrades stopped. There may be upgrades left to be installed in " -"the next run." -msgstr "" - -#~ msgid "unattended-upgrades result for '%s': '%s'" -#~ msgstr "unattended-upgrades resultat for »%s«: »%s«" diff -Nru unattended-upgrades-0.96/po/de.po unattended-upgrades-0.93.1ubuntu8/po/de.po --- unattended-upgrades-0.96/po/de.po 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/po/de.po 2016-12-11 11:31:26.000000000 +0100 @@ -18,42 +18,31 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../unattended-upgrade:182 +#: ../unattended-upgrade:162 #, python-format msgid "Progress: %s %% (%s)" msgstr "Fortschritt: %s %% (%s)" -#: ../unattended-upgrade:376 ../unattended-upgrade:393 -#, python-format -msgid "Unable to parse %s." -msgstr "" - -#: ../unattended-upgrade:479 ../unattended-upgrade:577 -#: ../unattended-upgrade-shutdown:182 +#: ../unattended-upgrade:418 ../unattended-upgrade:501 +#: ../unattended-upgrade-shutdown:161 msgid "All upgrades installed" msgstr "alle Upgrades installiert" -#: ../unattended-upgrade:481 ../unattended-upgrade:569 +#: ../unattended-upgrade:420 ../unattended-upgrade:493 msgid "Installing the upgrades failed!" msgstr "Installation der Upgrades fehlgeschlagen!" -#: ../unattended-upgrade:482 ../unattended-upgrade:570 +#: ../unattended-upgrade:421 ../unattended-upgrade:494 #, python-format msgid "error message: '%s'" msgstr "Fehlermeldung: »%s«" -#: ../unattended-upgrade:483 ../unattended-upgrade:571 +#: ../unattended-upgrade:422 ../unattended-upgrade:495 #, python-format msgid "dpkg returned a error! See '%s' for details" msgstr "Dpkg gab einen Fehler zurück. Siehe »%s« für Einzelheiten" -#: ../unattended-upgrade:541 -#, fuzzy, python-format -#| msgid "Packages that will be upgraded: %s" -msgid "Some packages can not be upgraded: %s" -msgstr "Pakete, von denen ein Upgrade durchgeführt wird: %s" - -#: ../unattended-upgrade:895 +#: ../unattended-upgrade:795 msgid "" "No '/usr/bin/mail' or '/usr/sbin/sendmail',can not send mail. You probably " "want to install the 'mailx' package." @@ -61,22 +50,17 @@ "kein »/usr/bin/mail« oder »/usr/sbin/sendmail«, Mail kann nicht gesandt " "werden. Möglicherweise möchten Sie das Paket »mailx« installieren." -#: ../unattended-upgrade:909 -msgid "[reboot required]" -msgstr "" - -#: ../unattended-upgrade:911 -msgid "[package on hold]" -msgstr "" - -#: ../unattended-upgrade:914 -#, fuzzy -#| msgid "[reboot required] unattended-upgrades result for '%s': %s" -msgid "" -"{hold_flag}{reboot_flag} unattended-upgrades result for '{machine}': {result}" +#: ../unattended-upgrade:811 +#, python-format +msgid "[reboot required] unattended-upgrades result for '%s': %s" msgstr "[Neustart erforderlich] Unattended-Upgrades-Ergebnis für »%s«: %s" -#: ../unattended-upgrade:918 +#: ../unattended-upgrade:814 +#, python-format +msgid "unattended-upgrades result for '%s': '%s'" +msgstr "Unattended-Upgrades-Ergebnis für »%s«: %s" + +#: ../unattended-upgrade:816 #, python-format msgid "" "Unattended upgrade returned: %s\n" @@ -85,7 +69,7 @@ "Das unbeaufsichtigte Upgrade gab %s zurück.\n" "\n" -#: ../unattended-upgrade:921 +#: ../unattended-upgrade:819 msgid "" "Warning: A reboot is required to complete this upgrade.\n" "\n" @@ -93,101 +77,101 @@ "Warnung: Um dieses Upgrade zu komplettieren, ist ein Neustart erforderlich.\n" "\n" -#: ../unattended-upgrade:923 +#: ../unattended-upgrade:821 msgid "Packages that were upgraded:\n" msgstr "Pakete, von denen ein Upgrade durchgeführt wurde:\n" -#: ../unattended-upgrade:925 +#: ../unattended-upgrade:823 msgid "Packages that attempted to upgrade:\n" msgstr "Pakete, bei denen versucht wurde, ein Upgrade durchzuführen:\n" -#: ../unattended-upgrade:929 +#: ../unattended-upgrade:827 msgid "Packages with upgradable origin but kept back:\n" msgstr "" "Pakete, von deren Ursprung ein Upgrade durchgeführt werden kann, die aber\n" "zurückgehalten werden.\n" -#: ../unattended-upgrade:934 +#: ../unattended-upgrade:832 msgid "Package installation log:" msgstr "Paketinstallationsprotokoll:" -#: ../unattended-upgrade:937 +#: ../unattended-upgrade:835 msgid "Unattended-upgrades log:\n" msgstr "Unattended-Upgrades-Protokoll:\n" -#: ../unattended-upgrade:965 +#: ../unattended-upgrade:855 #, python-format msgid "Writing dpkg log to '%s'" msgstr "Dpkg-Protokoll wird nach »%s« geschrieben" -#: ../unattended-upgrade:1121 +#: ../unattended-upgrade:987 #, python-format msgid "Found %s, but not rebooting because %s is logged in." msgid_plural "Found %s, but not rebooting because %s are logged in." msgstr[0] "" msgstr[1] "" -#: ../unattended-upgrade:1175 +#: ../unattended-upgrade:1033 #, python-format msgid "package '%s' upgradable but fails to be marked for upgrade (%s)" msgstr "" "Von Paket »%s« könnte ein Upgrade durchgeführt werden, es ist jedoch " "fehlgeschlagen, dies für das Upgrade zu markieren (%s)" -#: ../unattended-upgrade:1250 +#: ../unattended-upgrade:1097 #, python-format msgid "Packages that are auto removed: '%s'" msgstr "Pakete, die automatisch entfernt wurden: »%s«" -#: ../unattended-upgrade:1256 +#: ../unattended-upgrade:1103 #, fuzzy #| msgid "Packages that are auto removed: '%s'" msgid "Packages were successfully auto-removed" msgstr "Pakete, die automatisch entfernt wurden: »%s«" -#: ../unattended-upgrade:1258 +#: ../unattended-upgrade:1105 #, fuzzy #| msgid "Installing the upgrades failed!" msgid "Auto-removing the packages failed!" msgstr "Installation der Upgrades fehlgeschlagen!" -#: ../unattended-upgrade:1259 +#: ../unattended-upgrade:1106 #, fuzzy, python-format #| msgid "error message: '%s'" msgid "Error message: '%s'" msgstr "Fehlermeldung: »%s«" -#: ../unattended-upgrade:1260 +#: ../unattended-upgrade:1107 #, fuzzy, python-format #| msgid "dpkg returned a error! See '%s' for details" msgid "dpkg returned an error! See '%s' for details" msgstr "Dpkg gab einen Fehler zurück. Siehe »%s« für Einzelheiten" -#: ../unattended-upgrade:1320 +#: ../unattended-upgrade:1125 #, python-format msgid "Initial blacklisted packages: %s" msgstr "Pakete, die anfangs auf die schwarzen Liste standen: %s" -#: ../unattended-upgrade:1325 +#: ../unattended-upgrade:1130 #, fuzzy, python-format #| msgid "Initial blacklisted packages: %s" msgid "Initial whitelisted packages: %s" msgstr "Pakete, die anfangs auf die schwarzen Liste standen: %s" -#: ../unattended-upgrade:1328 +#: ../unattended-upgrade:1133 msgid "Starting unattended upgrades script" msgstr "Skript für unbeaufsichtigte Upgrades wird gestartet." -#: ../unattended-upgrade:1337 +#: ../unattended-upgrade:1136 #, python-format msgid "Allowed origins are: %s" msgstr "erlaubte Ursprünge sind: %s" -#: ../unattended-upgrade:1353 ../unattended-upgrade:1354 +#: ../unattended-upgrade:1152 ../unattended-upgrade:1153 msgid "Unclean dpkg state detected, trying to correct" msgstr "unsauberer Dpkg-Status entdeckt, es wird versucht dies zu korrigieren" -#: ../unattended-upgrade:1365 +#: ../unattended-upgrade:1164 #, python-format msgid "" "dpkg --configure -a output:\n" @@ -196,53 +180,53 @@ "»dpkg --configure -a«-Ausgabe:\n" "%s" -#: ../unattended-upgrade:1374 +#: ../unattended-upgrade:1173 msgid "Lock could not be acquired (another package manager running?)" msgstr "" "Sperrung konnte nicht erreicht werden (läuft eine weitere Paketverwaltung?)" -#: ../unattended-upgrade:1376 +#: ../unattended-upgrade:1175 msgid "Cache lock can not be acquired, exiting" msgstr "Zwischenspeicher konnte nicht gesperrt werden, wird beendet" -#: ../unattended-upgrade:1383 ../unattended-upgrade:1384 -#: ../unattended-upgrade:1573 ../unattended-upgrade:1574 +#: ../unattended-upgrade:1182 ../unattended-upgrade:1183 +#: ../unattended-upgrade:1363 ../unattended-upgrade:1364 msgid "Cache has broken packages, exiting" msgstr "Zwischenspeicher enthält beschädigte Pakete, wird beendet" -#: ../unattended-upgrade:1433 +#: ../unattended-upgrade:1226 #, python-format msgid "GetArchives() failed: '%s'" msgstr "GetArchives() fehlgeschlagen: »%s«" -#: ../unattended-upgrade:1446 ../unattended-upgrade:1447 +#: ../unattended-upgrade:1236 ../unattended-upgrade:1237 #, python-format msgid "An error occurred: '%s'" msgstr "Es ist ein Fehler aufgetreten: »%s«" -#: ../unattended-upgrade:1449 ../unattended-upgrade:1451 +#: ../unattended-upgrade:1239 ../unattended-upgrade:1241 #, python-format msgid "The URI '%s' failed to download, aborting" msgstr "Herunterladen von der URI »%s« fehlgeschlagen, wird abgebrochen" -#: ../unattended-upgrade:1455 +#: ../unattended-upgrade:1245 #, python-format msgid "Download finished, but file '%s' not there?!?" msgstr "Herunterladen beendet, aber Datei »%s« ist nicht dort!?" -#: ../unattended-upgrade:1471 ../unattended-upgrade:1475 +#: ../unattended-upgrade:1261 ../unattended-upgrade:1265 #, python-format msgid "Package '%s' has conffile prompt and needs to be upgraded manually" msgstr "" "Das Paket »%s« hat eine Conffile-Abfrage und muss einem manuellen Upgrade " "unterzogen werden." -#: ../unattended-upgrade:1503 +#: ../unattended-upgrade:1293 #, python-format msgid "package '%s' not upgraded" msgstr "Von Paket »%s« wurde kein Upgrade durchgeführt." -#: ../unattended-upgrade:1522 +#: ../unattended-upgrade:1311 #, fuzzy #| msgid "No packages found that can be upgraded unattended" msgid "" @@ -252,61 +236,46 @@ "Es wurden keine Pakete gefunden, von denen ein unbeaufsichtigtes Upgrade " "durchgeführt werden kann." -#: ../unattended-upgrade:1550 +#: ../unattended-upgrade:1337 #, python-format msgid "Packages that will be upgraded: %s" msgstr "Pakete, von denen ein Upgrade durchgeführt wird: %s" -#: ../unattended-upgrade:1647 +#: ../unattended-upgrade:1406 msgid "print debug messages" msgstr "Nachrichten zur Fehlersuche ausgeben" -#: ../unattended-upgrade:1650 +#: ../unattended-upgrade:1409 msgid "make apt/libapt print verbose debug messages" msgstr "APT/LibAPT detaillierte Nachrichten zur Fehlersuche ausgeben lassen" -#: ../unattended-upgrade:1653 +#: ../unattended-upgrade:1412 msgid "print info messages" msgstr "Informationsnachrichten ausgeben" -#: ../unattended-upgrade:1656 +#: ../unattended-upgrade:1415 msgid "Simulation, download but do not install" msgstr "Simulation, herunterladen, aber nicht installieren" -#: ../unattended-upgrade:1659 -#, fuzzy -#| msgid "Simulation, download but do not install" -msgid "Only download, do not even try to install." -msgstr "Simulation, herunterladen, aber nicht installieren" - -#: ../unattended-upgrade:1662 -msgid "Upgrade in minimal steps (and allow interrupting with SIGTERM" -msgstr "Upgrade in minimalen Schritten (Unterbrechung mit SIGTERM erlaubt)" +#: ../unattended-upgrade:1418 +msgid "Upgrade in minimal steps (and allow interrupting with SIGINT" +msgstr "Upgrade in minimalen Schritten (Unterbrechung mit SIGINT erlaubt)" -#: ../unattended-upgrade:1671 +#: ../unattended-upgrade:1427 msgid "You need to be root to run this application" msgstr "Sie müssen Root sein, um diese Anwendung auszuführen." -#: ../unattended-upgrade-shutdown:76 +#: ../unattended-upgrade-shutdown:72 msgid "Unattended-upgrade in progress during shutdown, sleeping for 5s" msgstr "" "Unattended-Upgrade läuft während des Herunterfahrens weiter, es wird fünf " "Sekunden lang gewartet." -#: ../unattended-upgrade-shutdown:139 +#: ../unattended-upgrade-shutdown:125 msgid "Running unattended-upgrades in shutdown mode" msgstr "Unattended-Upgrades im Herunterfahrmodus ausführen" -#: ../unattended-upgrade-shutdown:165 +#: ../unattended-upgrade-shutdown:153 #, python-format msgid "Giving up on lockfile after %s delay" msgstr "Sperrdatei, hier wird nach %s Verzögerung aufgegeben." - -#: ../unattended-upgrade-shutdown:178 -msgid "" -"Unattended-upgrades stopped. There may be upgrades left to be installed in " -"the next run." -msgstr "" - -#~ msgid "unattended-upgrades result for '%s': '%s'" -#~ msgstr "Unattended-Upgrades-Ergebnis für »%s«: %s" diff -Nru unattended-upgrades-0.96/po/es.po unattended-upgrades-0.93.1ubuntu8/po/es.po --- unattended-upgrades-0.96/po/es.po 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/po/es.po 2016-12-11 11:31:26.000000000 +0100 @@ -44,42 +44,31 @@ "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Gtranslator 2.91.7\n" -#: ../unattended-upgrade:182 +#: ../unattended-upgrade:162 #, python-format msgid "Progress: %s %% (%s)" msgstr "Progreso: %s %% (%s)" -#: ../unattended-upgrade:376 ../unattended-upgrade:393 -#, python-format -msgid "Unable to parse %s." -msgstr "" - -#: ../unattended-upgrade:479 ../unattended-upgrade:577 -#: ../unattended-upgrade-shutdown:182 +#: ../unattended-upgrade:418 ../unattended-upgrade:501 +#: ../unattended-upgrade-shutdown:161 msgid "All upgrades installed" msgstr "Se han instalado todas las actualizaciones" -#: ../unattended-upgrade:481 ../unattended-upgrade:569 +#: ../unattended-upgrade:420 ../unattended-upgrade:493 msgid "Installing the upgrades failed!" msgstr "Fallo al instalar actualizaciones" -#: ../unattended-upgrade:482 ../unattended-upgrade:570 +#: ../unattended-upgrade:421 ../unattended-upgrade:494 #, python-format msgid "error message: '%s'" msgstr "mensaje de error: «%s»" -#: ../unattended-upgrade:483 ../unattended-upgrade:571 +#: ../unattended-upgrade:422 ../unattended-upgrade:495 #, python-format msgid "dpkg returned a error! See '%s' for details" msgstr "¡dpkg devolvió un error! Vea «%s» para más detalles" -#: ../unattended-upgrade:541 -#, fuzzy, python-format -#| msgid "Packages that will be upgraded: %s" -msgid "Some packages can not be upgraded: %s" -msgstr "Paquetes que se actualizarán: %s" - -#: ../unattended-upgrade:895 +#: ../unattended-upgrade:795 msgid "" "No '/usr/bin/mail' or '/usr/sbin/sendmail',can not send mail. You probably " "want to install the 'mailx' package." @@ -87,23 +76,18 @@ "No se ha detectado «/usr/bin/mail» o «/usr/sbin/sendmail», no se puede " "enviar correo. Considere instalar el paquete «mailx»." -#: ../unattended-upgrade:909 -msgid "[reboot required]" -msgstr "" - -#: ../unattended-upgrade:911 -msgid "[package on hold]" -msgstr "" - -#: ../unattended-upgrade:914 -#, fuzzy -#| msgid "[reboot required] unattended-upgrades result for '%s': %s" -msgid "" -"{hold_flag}{reboot_flag} unattended-upgrades result for '{machine}': {result}" +#: ../unattended-upgrade:811 +#, python-format +msgid "[reboot required] unattended-upgrades result for '%s': %s" msgstr "" "[Es necesario reiniciar] Resultado de unattended-upgrades para «%s»: %s" -#: ../unattended-upgrade:918 +#: ../unattended-upgrade:814 +#, python-format +msgid "unattended-upgrades result for '%s': '%s'" +msgstr "Resultado de unattended-upgrades para «%s»: «%s»" + +#: ../unattended-upgrade:816 #, python-format msgid "" "Unattended upgrade returned: %s\n" @@ -112,7 +96,7 @@ "Valor devuelto por unattended-upgrade: %s\n" "\n" -#: ../unattended-upgrade:921 +#: ../unattended-upgrade:819 msgid "" "Warning: A reboot is required to complete this upgrade.\n" "\n" @@ -120,34 +104,34 @@ "Advertencia: Se requiere reiniciar para completar la actualización.\n" "\n" -#: ../unattended-upgrade:923 +#: ../unattended-upgrade:821 msgid "Packages that were upgraded:\n" msgstr "Paquetes que se actualizaron:\n" -#: ../unattended-upgrade:925 +#: ../unattended-upgrade:823 msgid "Packages that attempted to upgrade:\n" msgstr "Paquetes que se intentaron actualizar:\n" -#: ../unattended-upgrade:929 +#: ../unattended-upgrade:827 msgid "Packages with upgradable origin but kept back:\n" msgstr "" "Paquetes con una actualización disponible en la fuente pero que no se " "actualizarán:\n" -#: ../unattended-upgrade:934 +#: ../unattended-upgrade:832 msgid "Package installation log:" msgstr "Registro de instalación de paquete:" -#: ../unattended-upgrade:937 +#: ../unattended-upgrade:835 msgid "Unattended-upgrades log:\n" msgstr "Registro de unattended-upgrades:\n" -#: ../unattended-upgrade:965 +#: ../unattended-upgrade:855 #, python-format msgid "Writing dpkg log to '%s'" msgstr "Escribiendo el registro de dpkg en «%s»" -#: ../unattended-upgrade:1121 +#: ../unattended-upgrade:987 #, python-format msgid "Found %s, but not rebooting because %s is logged in." msgid_plural "Found %s, but not rebooting because %s are logged in." @@ -156,60 +140,60 @@ msgstr[1] "" "Se encontró %s, pero no se reinicia porque %s están activos en el sistema." -#: ../unattended-upgrade:1175 +#: ../unattended-upgrade:1033 #, python-format msgid "package '%s' upgradable but fails to be marked for upgrade (%s)" msgstr "" "El paquete «%s» es actualizable, pero no se puede marcar para la " "actualización (%s)" -#: ../unattended-upgrade:1250 +#: ../unattended-upgrade:1097 #, python-format msgid "Packages that are auto removed: '%s'" msgstr "Paquetes eliminados de forma automática: «%s»" -#: ../unattended-upgrade:1256 +#: ../unattended-upgrade:1103 msgid "Packages were successfully auto-removed" msgstr "Se eliminaron con éxito los paquetes de forma automática" -#: ../unattended-upgrade:1258 +#: ../unattended-upgrade:1105 msgid "Auto-removing the packages failed!" msgstr "¡Falló al eliminar automáticamente los paquetes!" -#: ../unattended-upgrade:1259 +#: ../unattended-upgrade:1106 #, python-format msgid "Error message: '%s'" msgstr "Mensaje de error: «%s»" -#: ../unattended-upgrade:1260 +#: ../unattended-upgrade:1107 #, python-format msgid "dpkg returned an error! See '%s' for details" msgstr "¡dpkg devolvió un error! Vea «%s» para más detalles" -#: ../unattended-upgrade:1320 +#: ../unattended-upgrade:1125 #, python-format msgid "Initial blacklisted packages: %s" msgstr "Paquetes bloqueados inicialmente: %s" -#: ../unattended-upgrade:1325 +#: ../unattended-upgrade:1130 #, python-format msgid "Initial whitelisted packages: %s" msgstr "Paquetes permitidos inicialmente: %s" -#: ../unattended-upgrade:1328 +#: ../unattended-upgrade:1133 msgid "Starting unattended upgrades script" msgstr "Iniciando guión de actualizaciones desatendidas" -#: ../unattended-upgrade:1337 +#: ../unattended-upgrade:1136 #, python-format msgid "Allowed origins are: %s" msgstr "Fuentes permitidas: %s" -#: ../unattended-upgrade:1353 ../unattended-upgrade:1354 +#: ../unattended-upgrade:1152 ../unattended-upgrade:1153 msgid "Unclean dpkg state detected, trying to correct" msgstr "Se ha detectado un estado no limpio de dpkg, intentando corregir" -#: ../unattended-upgrade:1365 +#: ../unattended-upgrade:1164 #, python-format msgid "" "dpkg --configure -a output:\n" @@ -218,53 +202,53 @@ "dpkg --configure -a output:\n" "%s" -#: ../unattended-upgrade:1374 +#: ../unattended-upgrade:1173 msgid "Lock could not be acquired (another package manager running?)" msgstr "" "No se puede establecer el bloqueo (¿otro gestor de paquetes ejecutándose?)" -#: ../unattended-upgrade:1376 +#: ../unattended-upgrade:1175 msgid "Cache lock can not be acquired, exiting" msgstr "No se puede establecer el bloqueo de la caché, saliendo" -#: ../unattended-upgrade:1383 ../unattended-upgrade:1384 -#: ../unattended-upgrade:1573 ../unattended-upgrade:1574 +#: ../unattended-upgrade:1182 ../unattended-upgrade:1183 +#: ../unattended-upgrade:1363 ../unattended-upgrade:1364 msgid "Cache has broken packages, exiting" msgstr "La caché tiene paquetes rotos, saliendo" -#: ../unattended-upgrade:1433 +#: ../unattended-upgrade:1226 #, python-format msgid "GetArchives() failed: '%s'" msgstr "GetArchives() falló: «%s»" -#: ../unattended-upgrade:1446 ../unattended-upgrade:1447 +#: ../unattended-upgrade:1236 ../unattended-upgrade:1237 #, python-format msgid "An error occurred: '%s'" msgstr "Ocurrió un error: «%s»" -#: ../unattended-upgrade:1449 ../unattended-upgrade:1451 +#: ../unattended-upgrade:1239 ../unattended-upgrade:1241 #, python-format msgid "The URI '%s' failed to download, aborting" msgstr "Fallo al descargar desde el URI «%s», interrumpiendo" -#: ../unattended-upgrade:1455 +#: ../unattended-upgrade:1245 #, python-format msgid "Download finished, but file '%s' not there?!?" msgstr "La descarga ha finalizado, pero no se encuentra el fichero «%s»" -#: ../unattended-upgrade:1471 ../unattended-upgrade:1475 +#: ../unattended-upgrade:1261 ../unattended-upgrade:1265 #, python-format msgid "Package '%s' has conffile prompt and needs to be upgraded manually" msgstr "" "El paquete «%s» solicita confirmación a través de un conffile, y se debe " "actualizar de forma manual" -#: ../unattended-upgrade:1503 +#: ../unattended-upgrade:1293 #, python-format msgid "package '%s' not upgraded" msgstr "no se ha actualizado el paquete «%s»" -#: ../unattended-upgrade:1522 +#: ../unattended-upgrade:1311 msgid "" "No packages found that can be upgraded unattended and no pending auto-" "removals" @@ -272,64 +256,48 @@ "No se encontraron paquetes que puedan actualizarse de forma desatendida y no " "hay pendiente ninguna desinstalación automática" -#: ../unattended-upgrade:1550 +#: ../unattended-upgrade:1337 #, python-format msgid "Packages that will be upgraded: %s" msgstr "Paquetes que se actualizarán: %s" -#: ../unattended-upgrade:1647 +#: ../unattended-upgrade:1406 msgid "print debug messages" msgstr "muestra mensajes de depuración de fallos" -#: ../unattended-upgrade:1650 +#: ../unattended-upgrade:1409 msgid "make apt/libapt print verbose debug messages" msgstr "hace que apt/libapt muestre los mensajes de depuración detallados" -#: ../unattended-upgrade:1653 +#: ../unattended-upgrade:1412 msgid "print info messages" msgstr "muestra mensajes informativos" -#: ../unattended-upgrade:1656 +#: ../unattended-upgrade:1415 msgid "Simulation, download but do not install" msgstr "simulacro, descarga pero no instala" -#: ../unattended-upgrade:1659 -#, fuzzy -#| msgid "Simulation, download but do not install" -msgid "Only download, do not even try to install." -msgstr "simulacro, descarga pero no instala" +#: ../unattended-upgrade:1418 +msgid "Upgrade in minimal steps (and allow interrupting with SIGINT" +msgstr "actualiza en pequeños pasos (y permite la interrupción con SIGINT)" -#: ../unattended-upgrade:1662 -msgid "Upgrade in minimal steps (and allow interrupting with SIGTERM" -msgstr "actualiza en pequeños pasos (y permite la interrupción con SIGTERM)" - -#: ../unattended-upgrade:1671 +#: ../unattended-upgrade:1427 msgid "You need to be root to run this application" msgstr "" "Necesita tener privilegios de administrador para ejecutar esta aplicación" -#: ../unattended-upgrade-shutdown:76 +#: ../unattended-upgrade-shutdown:72 msgid "Unattended-upgrade in progress during shutdown, sleeping for 5s" msgstr "Unattended-upgrade en proceso durante el apagado, esperando 5s" -#: ../unattended-upgrade-shutdown:139 +#: ../unattended-upgrade-shutdown:125 msgid "Running unattended-upgrades in shutdown mode" msgstr "Ejecutando unattended-upgrades en modo de apagado" -#: ../unattended-upgrade-shutdown:165 +#: ../unattended-upgrade-shutdown:153 #, python-format msgid "Giving up on lockfile after %s delay" msgstr "Liberando el fichero de bloqueo después de un retraso de %s" -#: ../unattended-upgrade-shutdown:178 -msgid "" -"Unattended-upgrades stopped. There may be upgrades left to be installed in " -"the next run." -msgstr "" - -#~| msgid "unattended-upgrades result for '%s'" -#~ msgid "unattended-upgrades result for '%s': '%s'" -#~ msgstr "Resultado de unattended-upgrades para «%s»: «%s»" - #~ msgid "Progress: %s %%: (%s)" #~ msgstr "Progreso: %s %%: (%s)" diff -Nru unattended-upgrades-0.96/po/eu.po unattended-upgrades-0.93.1ubuntu8/po/eu.po --- unattended-upgrades-0.96/po/eu.po 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/po/eu.po 2016-12-11 11:31:26.000000000 +0100 @@ -17,64 +17,51 @@ "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" -#: ../unattended-upgrade:182 +#: ../unattended-upgrade:162 #, python-format msgid "Progress: %s %% (%s)" msgstr "" -#: ../unattended-upgrade:376 ../unattended-upgrade:393 -#, python-format -msgid "Unable to parse %s." -msgstr "" - -#: ../unattended-upgrade:479 ../unattended-upgrade:577 -#: ../unattended-upgrade-shutdown:182 +#: ../unattended-upgrade:418 ../unattended-upgrade:501 +#: ../unattended-upgrade-shutdown:161 msgid "All upgrades installed" msgstr "Bertsio-berritze guztiak instalatu dira" -#: ../unattended-upgrade:481 ../unattended-upgrade:569 +#: ../unattended-upgrade:420 ../unattended-upgrade:493 msgid "Installing the upgrades failed!" msgstr "Huts bertsio-berritzeak instalatzean!" -#: ../unattended-upgrade:482 ../unattended-upgrade:570 +#: ../unattended-upgrade:421 ../unattended-upgrade:494 #, python-format msgid "error message: '%s'" msgstr "errore mezua: '%s'" -#: ../unattended-upgrade:483 ../unattended-upgrade:571 +#: ../unattended-upgrade:422 ../unattended-upgrade:495 #, python-format msgid "dpkg returned a error! See '%s' for details" msgstr "dpkg-ek errore bat itzuli du! '%s' begiratu xehetasunetarako" -#: ../unattended-upgrade:541 -#, fuzzy, python-format -#| msgid "Packages that are upgraded: %s" -msgid "Some packages can not be upgraded: %s" -msgstr "Bertsio-berritu diren paketeak: %s" - -#: ../unattended-upgrade:895 +#: ../unattended-upgrade:795 msgid "" "No '/usr/bin/mail' or '/usr/sbin/sendmail',can not send mail. You probably " "want to install the 'mailx' package." msgstr "" -#: ../unattended-upgrade:909 -msgid "[reboot required]" -msgstr "" - -#: ../unattended-upgrade:911 -msgid "[package on hold]" +#: ../unattended-upgrade:811 +#, fuzzy, python-format +msgid "[reboot required] unattended-upgrades result for '%s': %s" msgstr "" +"Zaindugabeko bertsio-berritze erantzuna: %s\n" +"\n" -#: ../unattended-upgrade:914 -#, fuzzy -msgid "" -"{hold_flag}{reboot_flag} unattended-upgrades result for '{machine}': {result}" +#: ../unattended-upgrade:814 +#, fuzzy, python-format +msgid "unattended-upgrades result for '%s': '%s'" msgstr "" "Zaindugabeko bertsio-berritze erantzuna: %s\n" "\n" -#: ../unattended-upgrade:918 +#: ../unattended-upgrade:816 #, python-format msgid "" "Unattended upgrade returned: %s\n" @@ -83,164 +70,164 @@ "Zaindugabeko bertsio-berritze erantzuna: %s\n" "\n" -#: ../unattended-upgrade:921 +#: ../unattended-upgrade:819 msgid "" "Warning: A reboot is required to complete this upgrade.\n" "\n" msgstr "" -#: ../unattended-upgrade:923 +#: ../unattended-upgrade:821 #, fuzzy msgid "Packages that were upgraded:\n" msgstr "Bertsio-berritu diren paketeak: %s" -#: ../unattended-upgrade:925 +#: ../unattended-upgrade:823 #, fuzzy msgid "Packages that attempted to upgrade:\n" msgstr "Bertsio-berritu diren paketeak: %s" -#: ../unattended-upgrade:929 +#: ../unattended-upgrade:827 msgid "Packages with upgradable origin but kept back:\n" msgstr "" -#: ../unattended-upgrade:934 +#: ../unattended-upgrade:832 msgid "Package installation log:" msgstr "" -#: ../unattended-upgrade:937 +#: ../unattended-upgrade:835 #, fuzzy msgid "Unattended-upgrades log:\n" msgstr "" "Zaindugabeko bertsio-berritze erantzuna: %s\n" "\n" -#: ../unattended-upgrade:965 +#: ../unattended-upgrade:855 #, python-format msgid "Writing dpkg log to '%s'" msgstr "Dpkg erregistroa '%s'-en idazten" -#: ../unattended-upgrade:1121 +#: ../unattended-upgrade:987 #, python-format msgid "Found %s, but not rebooting because %s is logged in." msgid_plural "Found %s, but not rebooting because %s are logged in." msgstr[0] "" msgstr[1] "" -#: ../unattended-upgrade:1175 +#: ../unattended-upgrade:1033 #, python-format msgid "package '%s' upgradable but fails to be marked for upgrade (%s)" msgstr "" -#: ../unattended-upgrade:1250 +#: ../unattended-upgrade:1097 #, fuzzy, python-format #| msgid "Packages that are upgraded: %s" msgid "Packages that are auto removed: '%s'" msgstr "Bertsio-berritu diren paketeak: %s" -#: ../unattended-upgrade:1256 +#: ../unattended-upgrade:1103 #, fuzzy #| msgid "Packages that are upgraded: %s" msgid "Packages were successfully auto-removed" msgstr "Bertsio-berritu diren paketeak: %s" -#: ../unattended-upgrade:1258 +#: ../unattended-upgrade:1105 #, fuzzy #| msgid "Installing the upgrades failed!" msgid "Auto-removing the packages failed!" msgstr "Huts bertsio-berritzeak instalatzean!" -#: ../unattended-upgrade:1259 +#: ../unattended-upgrade:1106 #, fuzzy, python-format #| msgid "error message: '%s'" msgid "Error message: '%s'" msgstr "errore mezua: '%s'" -#: ../unattended-upgrade:1260 +#: ../unattended-upgrade:1107 #, fuzzy, python-format #| msgid "dpkg returned a error! See '%s' for details" msgid "dpkg returned an error! See '%s' for details" msgstr "dpkg-ek errore bat itzuli du! '%s' begiratu xehetasunetarako" -#: ../unattended-upgrade:1320 +#: ../unattended-upgrade:1125 #, python-format msgid "Initial blacklisted packages: %s" msgstr "Hasierako zerrenda-beltz paketeak: %s" -#: ../unattended-upgrade:1325 +#: ../unattended-upgrade:1130 #, fuzzy, python-format #| msgid "Initial blacklisted packages: %s" msgid "Initial whitelisted packages: %s" msgstr "Hasierako zerrenda-beltz paketeak: %s" -#: ../unattended-upgrade:1328 +#: ../unattended-upgrade:1133 msgid "Starting unattended upgrades script" msgstr "Zaindugabeko bertsio-berritze script-a abiarazten" -#: ../unattended-upgrade:1337 +#: ../unattended-upgrade:1136 #, python-format msgid "Allowed origins are: %s" msgstr "Onartzen diren jatorriak: %s" -#: ../unattended-upgrade:1353 ../unattended-upgrade:1354 +#: ../unattended-upgrade:1152 ../unattended-upgrade:1153 msgid "Unclean dpkg state detected, trying to correct" msgstr "" -#: ../unattended-upgrade:1365 +#: ../unattended-upgrade:1164 #, python-format msgid "" "dpkg --configure -a output:\n" "%s" msgstr "" -#: ../unattended-upgrade:1374 +#: ../unattended-upgrade:1173 msgid "Lock could not be acquired (another package manager running?)" msgstr "" -#: ../unattended-upgrade:1376 +#: ../unattended-upgrade:1175 #, fuzzy #| msgid "Cache has broken packages, exiting" msgid "Cache lock can not be acquired, exiting" msgstr "Katxeak hondaturiko paketeak ditu, uzten" -#: ../unattended-upgrade:1383 ../unattended-upgrade:1384 -#: ../unattended-upgrade:1573 ../unattended-upgrade:1574 +#: ../unattended-upgrade:1182 ../unattended-upgrade:1183 +#: ../unattended-upgrade:1363 ../unattended-upgrade:1364 msgid "Cache has broken packages, exiting" msgstr "Katxeak hondaturiko paketeak ditu, uzten" -#: ../unattended-upgrade:1433 +#: ../unattended-upgrade:1226 #, python-format msgid "GetArchives() failed: '%s'" msgstr "GetArchives()-ek huts egin du: '%s'" -#: ../unattended-upgrade:1446 ../unattended-upgrade:1447 +#: ../unattended-upgrade:1236 ../unattended-upgrade:1237 #, fuzzy, python-format #| msgid "An error ocured: '%s'" msgid "An error occurred: '%s'" msgstr "Errore bat gertatu da: '%s'" -#: ../unattended-upgrade:1449 ../unattended-upgrade:1451 +#: ../unattended-upgrade:1239 ../unattended-upgrade:1241 #, python-format msgid "The URI '%s' failed to download, aborting" msgstr "Huts '%s' URIa deskargatzerakoan, uzten" -#: ../unattended-upgrade:1455 +#: ../unattended-upgrade:1245 #, python-format msgid "Download finished, but file '%s' not there?!?" msgstr "" -#: ../unattended-upgrade:1471 ../unattended-upgrade:1475 +#: ../unattended-upgrade:1261 ../unattended-upgrade:1265 #, python-format msgid "Package '%s' has conffile prompt and needs to be upgraded manually" msgstr "" "'%s' paketeak konfigurazio galderaren bat du eta eskuz bertsio-berritu behar " "da" -#: ../unattended-upgrade:1503 +#: ../unattended-upgrade:1293 #, python-format msgid "package '%s' not upgraded" msgstr "'%s' paketea ez da bertsio-berritu" -#: ../unattended-upgrade:1522 +#: ../unattended-upgrade:1311 #, fuzzy #| msgid "No packages found that can be upgraded unattended" msgid "" @@ -248,71 +235,55 @@ "removals" msgstr "Ez da zaindugabe instalatu daitekeen paketerik aurkitu" -#: ../unattended-upgrade:1550 +#: ../unattended-upgrade:1337 #, fuzzy, python-format #| msgid "Packages that are upgraded: %s" msgid "Packages that will be upgraded: %s" msgstr "Bertsio-berritu diren paketeak: %s" -#: ../unattended-upgrade:1647 +#: ../unattended-upgrade:1406 msgid "print debug messages" msgstr "inprimatu arazpen mezuak" -#: ../unattended-upgrade:1650 +#: ../unattended-upgrade:1409 #, fuzzy #| msgid "print debug messages" msgid "make apt/libapt print verbose debug messages" msgstr "inprimatu arazpen mezuak" -#: ../unattended-upgrade:1653 +#: ../unattended-upgrade:1412 #, fuzzy #| msgid "print debug messages" msgid "print info messages" msgstr "inprimatu arazpen mezuak" -#: ../unattended-upgrade:1656 +#: ../unattended-upgrade:1415 msgid "Simulation, download but do not install" msgstr "" -#: ../unattended-upgrade:1659 -msgid "Only download, do not even try to install." +#: ../unattended-upgrade:1418 +msgid "Upgrade in minimal steps (and allow interrupting with SIGINT" msgstr "" -#: ../unattended-upgrade:1662 -msgid "Upgrade in minimal steps (and allow interrupting with SIGTERM" -msgstr "" - -#: ../unattended-upgrade:1671 +#: ../unattended-upgrade:1427 msgid "You need to be root to run this application" msgstr "Root izan behar zara aplikazioa hau exekutatu ahal izateko" -#: ../unattended-upgrade-shutdown:76 +#: ../unattended-upgrade-shutdown:72 msgid "Unattended-upgrade in progress during shutdown, sleeping for 5s" msgstr "" -#: ../unattended-upgrade-shutdown:139 +#: ../unattended-upgrade-shutdown:125 #, fuzzy msgid "Running unattended-upgrades in shutdown mode" msgstr "" "Zaindugabeko bertsio-berritze erantzuna: %s\n" "\n" -#: ../unattended-upgrade-shutdown:165 +#: ../unattended-upgrade-shutdown:153 #, python-format msgid "Giving up on lockfile after %s delay" msgstr "" -#: ../unattended-upgrade-shutdown:178 -msgid "" -"Unattended-upgrades stopped. There may be upgrades left to be installed in " -"the next run." -msgstr "" - -#, fuzzy -#~ msgid "unattended-upgrades result for '%s': '%s'" -#~ msgstr "" -#~ "Zaindugabeko bertsio-berritze erantzuna: %s\n" -#~ "\n" - #~ msgid "pm.GetArchives() failed" #~ msgstr "pm.GetArchives()-ek huts egin du" diff -Nru unattended-upgrades-0.96/po/fr.po unattended-upgrades-0.93.1ubuntu8/po/fr.po --- unattended-upgrades-0.96/po/fr.po 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/po/fr.po 2016-12-11 11:31:26.000000000 +0100 @@ -16,66 +16,51 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../unattended-upgrade:182 +#: ../unattended-upgrade:162 #, python-format msgid "Progress: %s %% (%s)" msgstr "Progression : %s %% (%s)" -#: ../unattended-upgrade:376 ../unattended-upgrade:393 -#, python-format -msgid "Unable to parse %s." -msgstr "" - -#: ../unattended-upgrade:479 ../unattended-upgrade:577 -#: ../unattended-upgrade-shutdown:182 +#: ../unattended-upgrade:418 ../unattended-upgrade:501 +#: ../unattended-upgrade-shutdown:161 msgid "All upgrades installed" msgstr "Toutes les mises à niveau ont été installées" -#: ../unattended-upgrade:481 ../unattended-upgrade:569 +#: ../unattended-upgrade:420 ../unattended-upgrade:493 msgid "Installing the upgrades failed!" msgstr "Échec de l'installation des mises à niveau" -#: ../unattended-upgrade:482 ../unattended-upgrade:570 +#: ../unattended-upgrade:421 ../unattended-upgrade:494 #, python-format msgid "error message: '%s'" msgstr "Message d'erreur : %s" -#: ../unattended-upgrade:483 ../unattended-upgrade:571 +#: ../unattended-upgrade:422 ../unattended-upgrade:495 #, python-format msgid "dpkg returned a error! See '%s' for details" msgstr "dpkg a renvoyé une erreur. Voir « %s » pour les détails" -#: ../unattended-upgrade:541 -#, fuzzy, python-format -#| msgid "Packages that will be upgraded: %s" -msgid "Some packages can not be upgraded: %s" -msgstr "Paquets mis à niveau: %s" - -#: ../unattended-upgrade:895 +#: ../unattended-upgrade:795 +#, msgid "" "No '/usr/bin/mail' or '/usr/sbin/sendmail',can not send mail. You probably " "want to install the 'mailx' package." msgstr "" -"L'exécutable '/usr/bin/mail' ou '/usr/sbin/sendmail' est introuvable, " -"impossible d'envoyer un courrier électronique. Veuillez installer le paquet " -"« mailx »." - -#: ../unattended-upgrade:909 -msgid "[reboot required]" -msgstr "" - -#: ../unattended-upgrade:911 -msgid "[package on hold]" -msgstr "" +"L'exécutable '/usr/bin/mail' ou '/usr/sbin/sendmail' est introuvable, " +" impossible d'envoyer un courrier électronique. Veuillez installer le " +"paquet « mailx »." -#: ../unattended-upgrade:914 -#, fuzzy -#| msgid "[reboot required] unattended-upgrades result for '%s': %s" -msgid "" -"{hold_flag}{reboot_flag} unattended-upgrades result for '{machine}': {result}" +#: ../unattended-upgrade:811 +#, python-format +msgid "[reboot required] unattended-upgrades result for '%s': %s" msgstr "[Redémarrage requis] résultat de unattended-upgrades pour '%s': %s" -#: ../unattended-upgrade:918 +#: ../unattended-upgrade:814 +#, python-format +msgid "unattended-upgrades result for '%s': '%s'" +msgstr "résultat de unattended-upgrades pour '%s' : '%s'" + +#: ../unattended-upgrade:816 #, python-format msgid "" "Unattended upgrade returned: %s\n" @@ -84,7 +69,7 @@ "La mise à niveau automatique a renvoyé : %s\n" "\n" -#: ../unattended-upgrade:921 +#: ../unattended-upgrade:819 msgid "" "Warning: A reboot is required to complete this upgrade.\n" "\n" @@ -92,94 +77,98 @@ "Avertissement : un redémarrage est requis afin de compléter cette mise à " "niveau.\n" -#: ../unattended-upgrade:923 +#: ../unattended-upgrade:821 +#, msgid "Packages that were upgraded:\n" msgstr "Paquets mis à niveau:\n" -#: ../unattended-upgrade:925 +#: ../unattended-upgrade:823 +#, msgid "Packages that attempted to upgrade:\n" msgstr "Essai de mise à niveau des paquets:\n" -#: ../unattended-upgrade:929 +#: ../unattended-upgrade:827 msgid "Packages with upgradable origin but kept back:\n" msgstr "" "Paquets susceptibles d'une mise à niveau mais maintenus dans leur état " "actuel :\n" -#: ../unattended-upgrade:934 +#: ../unattended-upgrade:832 msgid "Package installation log:" msgstr "Journal d'installation des paquets:" -#: ../unattended-upgrade:937 +#: ../unattended-upgrade:835 msgid "Unattended-upgrades log:\n" msgstr "Journal de unattended-upgrades:\n" -#: ../unattended-upgrade:965 +#: ../unattended-upgrade:855 #, python-format msgid "Writing dpkg log to '%s'" msgstr "Écriture du journal de dpkg dans « %s »" -#: ../unattended-upgrade:1121 +#: ../unattended-upgrade:987 #, python-format msgid "Found %s, but not rebooting because %s is logged in." msgid_plural "Found %s, but not rebooting because %s are logged in." msgstr[0] "Trouvé %s, mais ne redémarre pas car %s est connecté." msgstr[1] "Trouvé %s, mais ne redémarre pas car %s sont connectés." -#: ../unattended-upgrade:1175 +#: ../unattended-upgrade:1033 #, python-format msgid "package '%s' upgradable but fails to be marked for upgrade (%s)" msgstr "" "Le paquet « %s » peut être mis à niveau mais échoue à être marqué comme tel " "(%s)" -#: ../unattended-upgrade:1250 +#: ../unattended-upgrade:1097 #, python-format msgid "Packages that are auto removed: '%s'" msgstr "Suppression automatique des paquets: %s" -#: ../unattended-upgrade:1256 +#: ../unattended-upgrade:1103 +#, msgid "Packages were successfully auto-removed" msgstr "Ces packets ont été correctement supprimés" -#: ../unattended-upgrade:1258 +#: ../unattended-upgrade:1105 +#, msgid "Auto-removing the packages failed!" msgstr "Auto-remove de ces paquets a échoué!" -#: ../unattended-upgrade:1259 +#: ../unattended-upgrade:1106 #, python-format msgid "Error message: '%s'" msgstr "Message d'erreur: %s" -#: ../unattended-upgrade:1260 +#: ../unattended-upgrade:1107 #, python-format msgid "dpkg returned an error! See '%s' for details" msgstr "dpkg a renvoyé une erreur! Voir '%s' pour les détails" -#: ../unattended-upgrade:1320 +#: ../unattended-upgrade:1125 #, python-format msgid "Initial blacklisted packages: %s" msgstr "Paquets initialement sur la liste noire: %s" -#: ../unattended-upgrade:1325 +#: ../unattended-upgrade:1130 #, python-format msgid "Initial whitelisted packages: %s" msgstr "Paquets initialement sur la liste blanche: %s" -#: ../unattended-upgrade:1328 +#: ../unattended-upgrade:1133 msgid "Starting unattended upgrades script" msgstr "Démarrage du script de mise à niveau automatique" -#: ../unattended-upgrade:1337 +#: ../unattended-upgrade:1136 #, python-format msgid "Allowed origins are: %s" msgstr "Les origines permises sont: %s" -#: ../unattended-upgrade:1353 ../unattended-upgrade:1354 +#: ../unattended-upgrade:1152 ../unattended-upgrade:1153 msgid "Unclean dpkg state detected, trying to correct" msgstr "détection d'un état de dpkg impropre, tentative de correction" -#: ../unattended-upgrade:1365 +#: ../unattended-upgrade:1164 #, python-format msgid "" "dpkg --configure -a output:\n" @@ -188,119 +177,108 @@ "sortie de « dpkg --configure -a »:\n" "%s" -#: ../unattended-upgrade:1374 +#: ../unattended-upgrade:1173 msgid "Lock could not be acquired (another package manager running?)" msgstr "" "Verrouillage impossible (y a-t-il un autre gestionnaire de paquets en cours " "d'exécution ?)" -#: ../unattended-upgrade:1376 +#: ../unattended-upgrade:1175 msgid "Cache lock can not be acquired, exiting" msgstr "Le verrouillage du cache est impossible, abandon" -#: ../unattended-upgrade:1383 ../unattended-upgrade:1384 -#: ../unattended-upgrade:1573 ../unattended-upgrade:1574 +#: ../unattended-upgrade:1182 ../unattended-upgrade:1183 +#: ../unattended-upgrade:1363 ../unattended-upgrade:1364 msgid "Cache has broken packages, exiting" msgstr "Le cache contient des paquets cassés, abandon" -#: ../unattended-upgrade:1433 +#: ../unattended-upgrade:1226 #, python-format msgid "GetArchives() failed: '%s'" msgstr "Échec de GetArchives(): %s" -#: ../unattended-upgrade:1446 ../unattended-upgrade:1447 +#: ../unattended-upgrade:1236 ../unattended-upgrade:1237 #, python-format msgid "An error occurred: '%s'" msgstr "Une erreur s'est produite: %s" -#: ../unattended-upgrade:1449 ../unattended-upgrade:1451 +#: ../unattended-upgrade:1239 ../unattended-upgrade:1241 #, python-format msgid "The URI '%s' failed to download, aborting" msgstr "Échec du téléchargement à l'URI « %s », abandon" -#: ../unattended-upgrade:1455 +#: ../unattended-upgrade:1245 #, python-format msgid "Download finished, but file '%s' not there?!?" msgstr "Téléchargement terminé mais le fichier « %s » est absent !" -#: ../unattended-upgrade:1471 ../unattended-upgrade:1475 +#: ../unattended-upgrade:1261 ../unattended-upgrade:1265 #, python-format msgid "Package '%s' has conffile prompt and needs to be upgraded manually" msgstr "" "Le paquet « %s » provoque un conflit de fichiers de configuration et " "nécessite une mise à niveau manuelle" -#: ../unattended-upgrade:1503 +#: ../unattended-upgrade:1293 #, python-format msgid "package '%s' not upgraded" msgstr "Le paquet « %s » n'a pas été mis à niveau" -#: ../unattended-upgrade:1522 +#: ../unattended-upgrade:1311 +#, msgid "" "No packages found that can be upgraded unattended and no pending auto-" "removals" -msgstr "" -"Aucun paquet à mettre à niveau automatiquement ni à supprimer automatiquement" +msgstr "Aucun paquet à mettre à niveau automatiquement ni à" +" supprimer automatiquement" -#: ../unattended-upgrade:1550 +#: ../unattended-upgrade:1337 #, python-format msgid "Packages that will be upgraded: %s" msgstr "Paquets mis à niveau: %s" -#: ../unattended-upgrade:1647 +#: ../unattended-upgrade:1406 msgid "print debug messages" msgstr "Afficher les messages de débogage" -#: ../unattended-upgrade:1650 +#: ../unattended-upgrade:1409 +#, msgid "make apt/libapt print verbose debug messages" msgstr "Afficher les messages de débogage de apt/libapt" -#: ../unattended-upgrade:1653 +#: ../unattended-upgrade:1412 +#, msgid "print info messages" msgstr "Afficher les messages d'information" -#: ../unattended-upgrade:1656 +#: ../unattended-upgrade:1415 msgid "Simulation, download but do not install" msgstr "Simulation, télécharge mais n'installe pas" -#: ../unattended-upgrade:1659 -#, fuzzy -#| msgid "Simulation, download but do not install" -msgid "Only download, do not even try to install." -msgstr "Simulation, télécharge mais n'installe pas" - -#: ../unattended-upgrade:1662 -msgid "Upgrade in minimal steps (and allow interrupting with SIGTERM" +#: ../unattended-upgrade:1418 +msgid "Upgrade in minimal steps (and allow interrupting with SIGINT" msgstr "" -"Mise à niveau par étapes minimales (et autoriser l'interruption avec SIGTERM)" +"Mise à niveau par étapes minimales (et autoriser l'interruption avec SIGINT)" -#: ../unattended-upgrade:1671 +#: ../unattended-upgrade:1427 msgid "You need to be root to run this application" msgstr "" "Vous devez posséder les privilèges du superutilisateur pour exécuter cette " "application" -#: ../unattended-upgrade-shutdown:76 +#: ../unattended-upgrade-shutdown:72 msgid "Unattended-upgrade in progress during shutdown, sleeping for 5s" msgstr "Unattended-upgrade en cours durant l'extinction, en pause pour 5 s" -#: ../unattended-upgrade-shutdown:139 +#: ../unattended-upgrade-shutdown:125 +#, msgid "Running unattended-upgrades in shutdown mode" msgstr "Exécuter unattended-upgrades lors de l'extinction" -#: ../unattended-upgrade-shutdown:165 +#: ../unattended-upgrade-shutdown:153 #, python-format msgid "Giving up on lockfile after %s delay" msgstr "Renonciation sur un fichier verrou après un délai de %s." -#: ../unattended-upgrade-shutdown:178 -msgid "" -"Unattended-upgrades stopped. There may be upgrades left to be installed in " -"the next run." -msgstr "" - -#~ msgid "unattended-upgrades result for '%s': '%s'" -#~ msgstr "résultat de unattended-upgrades pour '%s' : '%s'" - #~ msgid "Progress: %s %%: (%s)" #~ msgstr "Progression : %s %% : (%s)" diff -Nru unattended-upgrades-0.96/po/gl.po unattended-upgrades-0.93.1ubuntu8/po/gl.po --- unattended-upgrades-0.96/po/gl.po 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/po/gl.po 2016-12-11 11:31:26.000000000 +0100 @@ -18,42 +18,31 @@ "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -#: ../unattended-upgrade:182 +#: ../unattended-upgrade:162 #, python-format msgid "Progress: %s %% (%s)" msgstr "Progreso: %s %% (%s)" -#: ../unattended-upgrade:376 ../unattended-upgrade:393 -#, python-format -msgid "Unable to parse %s." -msgstr "" - -#: ../unattended-upgrade:479 ../unattended-upgrade:577 -#: ../unattended-upgrade-shutdown:182 +#: ../unattended-upgrade:418 ../unattended-upgrade:501 +#: ../unattended-upgrade-shutdown:161 msgid "All upgrades installed" msgstr "Todas as actualizacións foron instaladas" -#: ../unattended-upgrade:481 ../unattended-upgrade:569 +#: ../unattended-upgrade:420 ../unattended-upgrade:493 msgid "Installing the upgrades failed!" msgstr "Produciuse un erro ao instalar as actualizacións." -#: ../unattended-upgrade:482 ../unattended-upgrade:570 +#: ../unattended-upgrade:421 ../unattended-upgrade:494 #, python-format msgid "error message: '%s'" msgstr "mensaxe de erro: «%s»" -#: ../unattended-upgrade:483 ../unattended-upgrade:571 +#: ../unattended-upgrade:422 ../unattended-upgrade:495 #, python-format msgid "dpkg returned a error! See '%s' for details" msgstr "«dpkg» devolveu un erro! Consulte «%s» para obter máis detalles." -#: ../unattended-upgrade:541 -#, fuzzy, python-format -#| msgid "Packages that are upgraded: %s" -msgid "Some packages can not be upgraded: %s" -msgstr "Paquetes que se actualizan: %s" - -#: ../unattended-upgrade:895 +#: ../unattended-upgrade:795 #, fuzzy #| msgid "" #| "No '/usr/bin/mail', can not send mail. You probably want to install the " @@ -65,22 +54,19 @@ "Non existe «/usr/bin/mail», non pode enviar correos. Probablemente queira " "instalar o paquete «mailx»." -#: ../unattended-upgrade:909 -msgid "[reboot required]" -msgstr "" - -#: ../unattended-upgrade:911 -msgid "[package on hold]" -msgstr "" - -#: ../unattended-upgrade:914 -#, fuzzy +#: ../unattended-upgrade:811 +#, fuzzy, python-format #| msgid "[reboot required] unattended-upgrades result for '%s'" -msgid "" -"{hold_flag}{reboot_flag} unattended-upgrades result for '{machine}': {result}" +msgid "[reboot required] unattended-upgrades result for '%s': %s" msgstr "[precísase reiniciar] resultado da actualización desatendida para «%s»" -#: ../unattended-upgrade:918 +#: ../unattended-upgrade:814 +#, fuzzy, python-format +#| msgid "unattended-upgrades result for '%s'" +msgid "unattended-upgrades result for '%s': '%s'" +msgstr "resultado da actualización desatendida para «%s»" + +#: ../unattended-upgrade:816 #, python-format msgid "" "Unattended upgrade returned: %s\n" @@ -89,7 +75,7 @@ "A actualización desatendida devolveu: %s\n" "\n" -#: ../unattended-upgrade:921 +#: ../unattended-upgrade:819 msgid "" "Warning: A reboot is required to complete this upgrade.\n" "\n" @@ -97,103 +83,103 @@ "Aviso: Precísase reiniciar para completar esta actualización.\n" "\n" -#: ../unattended-upgrade:923 +#: ../unattended-upgrade:821 #, fuzzy #| msgid "Packages that are upgraded:\n" msgid "Packages that were upgraded:\n" msgstr "Paquetes que se actualizan:\n" -#: ../unattended-upgrade:925 +#: ../unattended-upgrade:823 #, fuzzy #| msgid "Packages that are upgraded:\n" msgid "Packages that attempted to upgrade:\n" msgstr "Paquetes que se actualizan:\n" -#: ../unattended-upgrade:929 +#: ../unattended-upgrade:827 msgid "Packages with upgradable origin but kept back:\n" msgstr "Paquetes co un orixe actualizábel, pero que se manteñen:\n" -#: ../unattended-upgrade:934 +#: ../unattended-upgrade:832 msgid "Package installation log:" msgstr "Rexistro de instalación de paquetes:" -#: ../unattended-upgrade:937 +#: ../unattended-upgrade:835 msgid "Unattended-upgrades log:\n" msgstr "Rexistro de «unattended-upgrades»:\n" -#: ../unattended-upgrade:965 +#: ../unattended-upgrade:855 #, python-format msgid "Writing dpkg log to '%s'" msgstr "Escribindo o rexistro «dpkg» a «%s»" -#: ../unattended-upgrade:1121 +#: ../unattended-upgrade:987 #, python-format msgid "Found %s, but not rebooting because %s is logged in." msgid_plural "Found %s, but not rebooting because %s are logged in." msgstr[0] "" msgstr[1] "" -#: ../unattended-upgrade:1175 +#: ../unattended-upgrade:1033 #, python-format msgid "package '%s' upgradable but fails to be marked for upgrade (%s)" msgstr "" "O paquete «%s» é actualizábel, pero non foi posíbel marcalo para actualizar " "(%s)" -#: ../unattended-upgrade:1250 +#: ../unattended-upgrade:1097 #, python-format msgid "Packages that are auto removed: '%s'" msgstr "Paquetes que se eliminan automaticamente: «%s»" -#: ../unattended-upgrade:1256 +#: ../unattended-upgrade:1103 #, fuzzy #| msgid "Packages that are auto removed: '%s'" msgid "Packages were successfully auto-removed" msgstr "Paquetes que se eliminan automaticamente: «%s»" -#: ../unattended-upgrade:1258 +#: ../unattended-upgrade:1105 #, fuzzy #| msgid "Installing the upgrades failed!" msgid "Auto-removing the packages failed!" msgstr "Produciuse un erro ao instalar as actualizacións." -#: ../unattended-upgrade:1259 +#: ../unattended-upgrade:1106 #, fuzzy, python-format #| msgid "error message: '%s'" msgid "Error message: '%s'" msgstr "mensaxe de erro: «%s»" -#: ../unattended-upgrade:1260 +#: ../unattended-upgrade:1107 #, fuzzy, python-format #| msgid "dpkg returned a error! See '%s' for details" msgid "dpkg returned an error! See '%s' for details" msgstr "«dpkg» devolveu un erro! Consulte «%s» para obter máis detalles." -#: ../unattended-upgrade:1320 +#: ../unattended-upgrade:1125 #, python-format msgid "Initial blacklisted packages: %s" msgstr "Lista negra de paquetes inicial: %s" -#: ../unattended-upgrade:1325 +#: ../unattended-upgrade:1130 #, fuzzy, python-format #| msgid "Initial blacklisted packages: %s" msgid "Initial whitelisted packages: %s" msgstr "Lista negra de paquetes inicial: %s" -#: ../unattended-upgrade:1328 +#: ../unattended-upgrade:1133 msgid "Starting unattended upgrades script" msgstr "Estase a comezar o script de actualizacións desatendidas" -#: ../unattended-upgrade:1337 +#: ../unattended-upgrade:1136 #, python-format msgid "Allowed origins are: %s" msgstr "Os orixes permitidos son: %s" -#: ../unattended-upgrade:1353 ../unattended-upgrade:1354 +#: ../unattended-upgrade:1152 ../unattended-upgrade:1153 msgid "Unclean dpkg state detected, trying to correct" msgstr "Detectouse un estado «dpkg» sucio, estase a tratar de corrixir" -#: ../unattended-upgrade:1365 +#: ../unattended-upgrade:1164 #, python-format msgid "" "dpkg --configure -a output:\n" @@ -202,53 +188,53 @@ "Saída de «dpkg --configure -a»:\n" "%s" -#: ../unattended-upgrade:1374 +#: ../unattended-upgrade:1173 msgid "Lock could not be acquired (another package manager running?)" msgstr "Non se puido bloquear (estase a executar outro xestor de paquetes?)" -#: ../unattended-upgrade:1376 +#: ../unattended-upgrade:1175 msgid "Cache lock can not be acquired, exiting" msgstr "Non se puido bloquear a caché, sáese" -#: ../unattended-upgrade:1383 ../unattended-upgrade:1384 -#: ../unattended-upgrade:1573 ../unattended-upgrade:1574 +#: ../unattended-upgrade:1182 ../unattended-upgrade:1183 +#: ../unattended-upgrade:1363 ../unattended-upgrade:1364 msgid "Cache has broken packages, exiting" msgstr "A caché contén paquetes rotos, sáese" -#: ../unattended-upgrade:1433 +#: ../unattended-upgrade:1226 #, python-format msgid "GetArchives() failed: '%s'" msgstr "Produciuse un erro en GetArchives(): «%s»" -#: ../unattended-upgrade:1446 ../unattended-upgrade:1447 +#: ../unattended-upgrade:1236 ../unattended-upgrade:1237 #, fuzzy, python-format #| msgid "An error ocured: '%s'" msgid "An error occurred: '%s'" msgstr "Produciuse un erro: «%s»" -#: ../unattended-upgrade:1449 ../unattended-upgrade:1451 +#: ../unattended-upgrade:1239 ../unattended-upgrade:1241 #, python-format msgid "The URI '%s' failed to download, aborting" msgstr "Produciuse un erro ao descargar a URI «%s», interrómpese" -#: ../unattended-upgrade:1455 +#: ../unattended-upgrade:1245 #, python-format msgid "Download finished, but file '%s' not there?!?" msgstr "A descarga finalizou, pero o ficheiro «%s» non está aí." -#: ../unattended-upgrade:1471 ../unattended-upgrade:1475 +#: ../unattended-upgrade:1261 ../unattended-upgrade:1265 #, python-format msgid "Package '%s' has conffile prompt and needs to be upgraded manually" msgstr "" "O paquete «%s» ten unha petición acerca dos ficheiros de configuración e " "precisa ser actualizado manualmente" -#: ../unattended-upgrade:1503 +#: ../unattended-upgrade:1293 #, python-format msgid "package '%s' not upgraded" msgstr "O paquete «%s» non foi actualizado" -#: ../unattended-upgrade:1522 +#: ../unattended-upgrade:1311 #, fuzzy #| msgid "No packages found that can be upgraded unattended" msgid "" @@ -256,73 +242,56 @@ "removals" msgstr "Non se atoparon paquetes que se poidan actualizar de forma desatendida" -#: ../unattended-upgrade:1550 +#: ../unattended-upgrade:1337 #, fuzzy, python-format #| msgid "Packages that are upgraded: %s" msgid "Packages that will be upgraded: %s" msgstr "Paquetes que se actualizan: %s" -#: ../unattended-upgrade:1647 +#: ../unattended-upgrade:1406 msgid "print debug messages" msgstr "escribir as menxases de depuración" -#: ../unattended-upgrade:1650 +#: ../unattended-upgrade:1409 #, fuzzy #| msgid "print debug messages" msgid "make apt/libapt print verbose debug messages" msgstr "escribir as menxases de depuración" -#: ../unattended-upgrade:1653 +#: ../unattended-upgrade:1412 #, fuzzy #| msgid "print debug messages" msgid "print info messages" msgstr "escribir as menxases de depuración" -#: ../unattended-upgrade:1656 +#: ../unattended-upgrade:1415 msgid "Simulation, download but do not install" msgstr "Simulación, descargar pero non instalar" -#: ../unattended-upgrade:1659 -#, fuzzy -#| msgid "Simulation, download but do not install" -msgid "Only download, do not even try to install." -msgstr "Simulación, descargar pero non instalar" - -#: ../unattended-upgrade:1662 -msgid "Upgrade in minimal steps (and allow interrupting with SIGTERM" -msgstr "Actualización en pasos mínimos (e permitir interromper con SIGTERM)" +#: ../unattended-upgrade:1418 +msgid "Upgrade in minimal steps (and allow interrupting with SIGINT" +msgstr "Actualización en pasos mínimos (e permitir interromper con SIGINT)" -#: ../unattended-upgrade:1671 +#: ../unattended-upgrade:1427 msgid "You need to be root to run this application" msgstr "Precisa reiniciar para executar este aplicativo" -#: ../unattended-upgrade-shutdown:76 +#: ../unattended-upgrade-shutdown:72 msgid "Unattended-upgrade in progress during shutdown, sleeping for 5s" msgstr "" "A actualización desatendida está en progreso durante o apagado, durmindo " "durante 5s" -#: ../unattended-upgrade-shutdown:139 +#: ../unattended-upgrade-shutdown:125 #, fuzzy #| msgid "unattended-upgrades result for '%s'" msgid "Running unattended-upgrades in shutdown mode" msgstr "resultado da actualización desatendida para «%s»" -#: ../unattended-upgrade-shutdown:165 +#: ../unattended-upgrade-shutdown:153 #, python-format msgid "Giving up on lockfile after %s delay" msgstr "Renunciase ao ficheiro de bloqueo tras un retardo de %s" -#: ../unattended-upgrade-shutdown:178 -msgid "" -"Unattended-upgrades stopped. There may be upgrades left to be installed in " -"the next run." -msgstr "" - -#, fuzzy -#~| msgid "unattended-upgrades result for '%s'" -#~ msgid "unattended-upgrades result for '%s': '%s'" -#~ msgstr "resultado da actualización desatendida para «%s»" - #~ msgid "Progress: %s %%: (%s)" #~ msgstr "Progreso: %s %%: (%s)" diff -Nru unattended-upgrades-0.96/po/ja.po unattended-upgrades-0.93.1ubuntu8/po/ja.po --- unattended-upgrades-0.96/po/ja.po 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/po/ja.po 2016-12-11 11:31:26.000000000 +0100 @@ -18,42 +18,31 @@ "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Gtranslator 2.91.6\n" -#: ../unattended-upgrade:182 +#: ../unattended-upgrade:162 #, python-format msgid "Progress: %s %% (%s)" msgstr "進行状況: %s %% (%s)" -#: ../unattended-upgrade:376 ../unattended-upgrade:393 -#, python-format -msgid "Unable to parse %s." -msgstr "" - -#: ../unattended-upgrade:479 ../unattended-upgrade:577 -#: ../unattended-upgrade-shutdown:182 +#: ../unattended-upgrade:418 ../unattended-upgrade:501 +#: ../unattended-upgrade-shutdown:161 msgid "All upgrades installed" msgstr "全てのアップグレードがインストールされました" -#: ../unattended-upgrade:481 ../unattended-upgrade:569 +#: ../unattended-upgrade:420 ../unattended-upgrade:493 msgid "Installing the upgrades failed!" msgstr "アップグレードのインストールが失敗しました!" -#: ../unattended-upgrade:482 ../unattended-upgrade:570 +#: ../unattended-upgrade:421 ../unattended-upgrade:494 #, python-format msgid "error message: '%s'" msgstr "エラーメッセージ: '%s'" -#: ../unattended-upgrade:483 ../unattended-upgrade:571 +#: ../unattended-upgrade:422 ../unattended-upgrade:495 #, python-format msgid "dpkg returned a error! See '%s' for details" msgstr "dpkg がエラーを返しました! 詳細は '%s' を参照してください" -#: ../unattended-upgrade:541 -#, fuzzy, python-format -#| msgid "Packages that will be upgraded: %s" -msgid "Some packages can not be upgraded: %s" -msgstr "アップグレード予定のパッケージ: %s" - -#: ../unattended-upgrade:895 +#: ../unattended-upgrade:795 msgid "" "No '/usr/bin/mail' or '/usr/sbin/sendmail',can not send mail. You probably " "want to install the 'mailx' package." @@ -61,22 +50,17 @@ "'/usr/bin/mail' または '/usr/sbin/sendmail' がないためメールを送信することが" "できません。おそらく 'mailx' パッケージをインストールするとよいでしょう。" -#: ../unattended-upgrade:909 -msgid "[reboot required]" -msgstr "" - -#: ../unattended-upgrade:911 -msgid "[package on hold]" -msgstr "" - -#: ../unattended-upgrade:914 -#, fuzzy -#| msgid "[reboot required] unattended-upgrades result for '%s': %s" -msgid "" -"{hold_flag}{reboot_flag} unattended-upgrades result for '{machine}': {result}" +#: ../unattended-upgrade:811 +#, python-format +msgid "[reboot required] unattended-upgrades result for '%s': %s" msgstr "[再起動が必要] '%s' の自動アップグレード結果: %s" -#: ../unattended-upgrade:918 +#: ../unattended-upgrade:814 +#, python-format +msgid "unattended-upgrades result for '%s': '%s'" +msgstr "'%s' の自動アップグレード結果: '%s'" + +#: ../unattended-upgrade:816 #, python-format msgid "" "Unattended upgrade returned: %s\n" @@ -85,7 +69,7 @@ "自動アップグレードは以下を返しました: %s\n" "\n" -#: ../unattended-upgrade:921 +#: ../unattended-upgrade:819 msgid "" "Warning: A reboot is required to complete this upgrade.\n" "\n" @@ -93,91 +77,91 @@ "警告: このアップグレードを完了するために再起動が必要です。\n" "\n" -#: ../unattended-upgrade:923 +#: ../unattended-upgrade:821 msgid "Packages that were upgraded:\n" msgstr "アップグレードされたパッケージ:\n" -#: ../unattended-upgrade:925 +#: ../unattended-upgrade:823 msgid "Packages that attempted to upgrade:\n" msgstr "アップグレードしようとしたパッケージ:\n" -#: ../unattended-upgrade:929 +#: ../unattended-upgrade:827 msgid "Packages with upgradable origin but kept back:\n" msgstr "導入元からアップグレード可能ですが、バージョンを維持したパッケージ:\n" -#: ../unattended-upgrade:934 +#: ../unattended-upgrade:832 msgid "Package installation log:" msgstr "パッケージのインストールログ" -#: ../unattended-upgrade:937 +#: ../unattended-upgrade:835 msgid "Unattended-upgrades log:\n" msgstr "Unattended-upgrades ログ:\n" -#: ../unattended-upgrade:965 +#: ../unattended-upgrade:855 #, python-format msgid "Writing dpkg log to '%s'" msgstr "dpkg のログを '%s' に書き込み中" -#: ../unattended-upgrade:1121 +#: ../unattended-upgrade:987 #, python-format msgid "Found %s, but not rebooting because %s is logged in." msgid_plural "Found %s, but not rebooting because %s are logged in." msgstr[0] "%s が見つかりましたが、%s がログインしているため再起動しません" -#: ../unattended-upgrade:1175 +#: ../unattended-upgrade:1033 #, python-format msgid "package '%s' upgradable but fails to be marked for upgrade (%s)" msgstr "" "パッケージ '%s' はアップグレード可能ですが、アップグレード予定にできませんで" "した (%s)" -#: ../unattended-upgrade:1250 +#: ../unattended-upgrade:1097 #, python-format msgid "Packages that are auto removed: '%s'" msgstr "自動削除されたパッケージ: '%s'" -#: ../unattended-upgrade:1256 +#: ../unattended-upgrade:1103 msgid "Packages were successfully auto-removed" msgstr "パッケージの自動削除が成功ました" -#: ../unattended-upgrade:1258 +#: ../unattended-upgrade:1105 msgid "Auto-removing the packages failed!" msgstr "パッケージの自動削除が失敗しました!" -#: ../unattended-upgrade:1259 +#: ../unattended-upgrade:1106 #, python-format msgid "Error message: '%s'" msgstr "エラーメッセージ: '%s'" -#: ../unattended-upgrade:1260 +#: ../unattended-upgrade:1107 #, python-format msgid "dpkg returned an error! See '%s' for details" msgstr "dpkg がエラーを返しました! 詳細は '%s' を参照してください" -#: ../unattended-upgrade:1320 +#: ../unattended-upgrade:1125 #, python-format msgid "Initial blacklisted packages: %s" msgstr "初期状態でブラックリストにあるパッケージ: %s" -#: ../unattended-upgrade:1325 +#: ../unattended-upgrade:1130 #, python-format msgid "Initial whitelisted packages: %s" msgstr "初期状態でホワイトリストにあるパッケージ: %s" -#: ../unattended-upgrade:1328 +#: ../unattended-upgrade:1133 msgid "Starting unattended upgrades script" msgstr "自動アップグレードスクリプトを開始します" -#: ../unattended-upgrade:1337 +#: ../unattended-upgrade:1136 #, python-format msgid "Allowed origins are: %s" msgstr "許可されているパッケージ導入元: %s" -#: ../unattended-upgrade:1353 ../unattended-upgrade:1354 +#: ../unattended-upgrade:1152 ../unattended-upgrade:1153 msgid "Unclean dpkg state detected, trying to correct" msgstr "未消去の dpkg 状態が検出されたので、修正しようとしています" -#: ../unattended-upgrade:1365 +#: ../unattended-upgrade:1164 #, python-format msgid "" "dpkg --configure -a output:\n" @@ -186,112 +170,97 @@ "dpkg --configure -a output:\n" "%s" -#: ../unattended-upgrade:1374 +#: ../unattended-upgrade:1173 msgid "Lock could not be acquired (another package manager running?)" msgstr "ロックが取得できませんでした (別のパッケージマネージャが実行中?)" -#: ../unattended-upgrade:1376 +#: ../unattended-upgrade:1175 msgid "Cache lock can not be acquired, exiting" msgstr "キャッシュロックが取得できないので終了します" -#: ../unattended-upgrade:1383 ../unattended-upgrade:1384 -#: ../unattended-upgrade:1573 ../unattended-upgrade:1574 +#: ../unattended-upgrade:1182 ../unattended-upgrade:1183 +#: ../unattended-upgrade:1363 ../unattended-upgrade:1364 msgid "Cache has broken packages, exiting" msgstr "キャッシュに壊れたパッケージがあるので終了します" -#: ../unattended-upgrade:1433 +#: ../unattended-upgrade:1226 #, python-format msgid "GetArchives() failed: '%s'" msgstr "GetArchives() が失敗しました: '%s'" -#: ../unattended-upgrade:1446 ../unattended-upgrade:1447 +#: ../unattended-upgrade:1236 ../unattended-upgrade:1237 #, python-format msgid "An error occurred: '%s'" msgstr "エラー発生: '%s'" -#: ../unattended-upgrade:1449 ../unattended-upgrade:1451 +#: ../unattended-upgrade:1239 ../unattended-upgrade:1241 #, python-format msgid "The URI '%s' failed to download, aborting" msgstr "URI '%s' からダウンロード出来ないので中断します" -#: ../unattended-upgrade:1455 +#: ../unattended-upgrade:1245 #, python-format msgid "Download finished, but file '%s' not there?!?" msgstr "ダウンロード完了、しかしファイル '%s' がありません?!?" -#: ../unattended-upgrade:1471 ../unattended-upgrade:1475 +#: ../unattended-upgrade:1261 ../unattended-upgrade:1265 #, python-format msgid "Package '%s' has conffile prompt and needs to be upgraded manually" msgstr "" "パッケージ '%s' には手動で確認とアップグレードが必要な設定ファイルがあります" -#: ../unattended-upgrade:1503 +#: ../unattended-upgrade:1293 #, python-format msgid "package '%s' not upgraded" msgstr "パッケージ '%s' はアップグレードされませんでした" -#: ../unattended-upgrade:1522 +#: ../unattended-upgrade:1311 msgid "" "No packages found that can be upgraded unattended and no pending auto-" "removals" msgstr "自動更新可能なパッケージおよび保留中の自動削除が見つかりません" -#: ../unattended-upgrade:1550 +#: ../unattended-upgrade:1337 #, python-format msgid "Packages that will be upgraded: %s" msgstr "アップグレード予定のパッケージ: %s" -#: ../unattended-upgrade:1647 +#: ../unattended-upgrade:1406 msgid "print debug messages" msgstr "デバッグメッセージを出力" -#: ../unattended-upgrade:1650 +#: ../unattended-upgrade:1409 msgid "make apt/libapt print verbose debug messages" msgstr "apt/libapt の詳細なデバッグメッセージを出力" -#: ../unattended-upgrade:1653 +#: ../unattended-upgrade:1412 msgid "print info messages" msgstr "情報メッセージを出力" -#: ../unattended-upgrade:1656 +#: ../unattended-upgrade:1415 msgid "Simulation, download but do not install" msgstr "シミュレーションで、ダウンロードをしますがインストールはしません" -#: ../unattended-upgrade:1659 -#, fuzzy -#| msgid "Simulation, download but do not install" -msgid "Only download, do not even try to install." -msgstr "シミュレーションで、ダウンロードをしますがインストールはしません" +#: ../unattended-upgrade:1418 +msgid "Upgrade in minimal steps (and allow interrupting with SIGINT" +msgstr "最小限の手順でアップグレード (SIGINT で中断できます" -#: ../unattended-upgrade:1662 -msgid "Upgrade in minimal steps (and allow interrupting with SIGTERM" -msgstr "最小限の手順でアップグレード (SIGTERM で中断できます" - -#: ../unattended-upgrade:1671 +#: ../unattended-upgrade:1427 msgid "You need to be root to run this application" msgstr "このアプリケーションは管理者権限で実行する必要があります" -#: ../unattended-upgrade-shutdown:76 +#: ../unattended-upgrade-shutdown:72 msgid "Unattended-upgrade in progress during shutdown, sleeping for 5s" msgstr "シャットダウン時に進行中の unattended-upgrade、5 秒間スリープします" -#: ../unattended-upgrade-shutdown:139 +#: ../unattended-upgrade-shutdown:125 msgid "Running unattended-upgrades in shutdown mode" msgstr "unattended-upgrades はシャットダウンモードで実行中です" -#: ../unattended-upgrade-shutdown:165 +#: ../unattended-upgrade-shutdown:153 #, python-format msgid "Giving up on lockfile after %s delay" msgstr "%s 遅延後にロックファイルをあきらめます" -#: ../unattended-upgrade-shutdown:178 -msgid "" -"Unattended-upgrades stopped. There may be upgrades left to be installed in " -"the next run." -msgstr "" - -#~ msgid "unattended-upgrades result for '%s': '%s'" -#~ msgstr "'%s' の自動アップグレード結果: '%s'" - #~ msgid "pm.GetArchives() failed" #~ msgstr "pm.GetArchives() が失敗しました" diff -Nru unattended-upgrades-0.96/po/nl.po unattended-upgrades-0.93.1ubuntu8/po/nl.po --- unattended-upgrades-0.96/po/nl.po 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/po/nl.po 2016-12-11 11:31:26.000000000 +0100 @@ -19,42 +19,31 @@ "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Gtranslator 2.91.6\n" -#: ../unattended-upgrade:182 +#: ../unattended-upgrade:162 #, python-format msgid "Progress: %s %% (%s)" msgstr "Voortgang: %s %% (%s)" -#: ../unattended-upgrade:376 ../unattended-upgrade:393 -#, python-format -msgid "Unable to parse %s." -msgstr "" - -#: ../unattended-upgrade:479 ../unattended-upgrade:577 -#: ../unattended-upgrade-shutdown:182 +#: ../unattended-upgrade:418 ../unattended-upgrade:501 +#: ../unattended-upgrade-shutdown:161 msgid "All upgrades installed" msgstr "Alle opwaarderingen geïnstalleerd" -#: ../unattended-upgrade:481 ../unattended-upgrade:569 +#: ../unattended-upgrade:420 ../unattended-upgrade:493 msgid "Installing the upgrades failed!" msgstr "Installeren van opwaarderingen is mislukt!" -#: ../unattended-upgrade:482 ../unattended-upgrade:570 +#: ../unattended-upgrade:421 ../unattended-upgrade:494 #, python-format msgid "error message: '%s'" msgstr "foutmelding: '%s'" -#: ../unattended-upgrade:483 ../unattended-upgrade:571 +#: ../unattended-upgrade:422 ../unattended-upgrade:495 #, python-format msgid "dpkg returned a error! See '%s' for details" msgstr "dpkg signaleerde een fout! Zie '%s' voor details" -#: ../unattended-upgrade:541 -#, fuzzy, python-format -#| msgid "Packages that will be upgraded: %s" -msgid "Some packages can not be upgraded: %s" -msgstr "Pakketten die opgewaardeerd zullen worden: %s" - -#: ../unattended-upgrade:895 +#: ../unattended-upgrade:795 msgid "" "No '/usr/bin/mail' or '/usr/sbin/sendmail',can not send mail. You probably " "want to install the 'mailx' package." @@ -62,22 +51,17 @@ "Geen '/usr/bin/mail' of '/usr/sbin/sendmail'; kan geen e-mail versturen. U " "kunt best het pakket 'mailx' installeren." -#: ../unattended-upgrade:909 -msgid "[reboot required]" -msgstr "" - -#: ../unattended-upgrade:911 -msgid "[package on hold]" -msgstr "" - -#: ../unattended-upgrade:914 -#, fuzzy -#| msgid "[reboot required] unattended-upgrades result for '%s': %s" -msgid "" -"{hold_flag}{reboot_flag} unattended-upgrades result for '{machine}': {result}" +#: ../unattended-upgrade:811 +#, python-format +msgid "[reboot required] unattended-upgrades result for '%s': %s" msgstr "[herstart vereist] resultaat van unattended-upgrades voor '%s': %s" -#: ../unattended-upgrade:918 +#: ../unattended-upgrade:814 +#, python-format +msgid "unattended-upgrades result for '%s': '%s'" +msgstr "resultaat van unattended-upgrades voor '%s': '%s'" + +#: ../unattended-upgrade:816 #, python-format msgid "" "Unattended upgrade returned: %s\n" @@ -86,7 +70,7 @@ "Opwaardering zonder toezicht rapporteerde: %s\n" "\n" -#: ../unattended-upgrade:921 +#: ../unattended-upgrade:819 msgid "" "Warning: A reboot is required to complete this upgrade.\n" "\n" @@ -94,36 +78,36 @@ "Aandacht: een herstart is noodzakelijk om deze opwaardering af te ronden.\n" "\n" -#: ../unattended-upgrade:923 +#: ../unattended-upgrade:821 msgid "Packages that were upgraded:\n" msgstr "Pakketten die opgewaardeerd werden:\n" -#: ../unattended-upgrade:925 +#: ../unattended-upgrade:823 msgid "Packages that attempted to upgrade:\n" msgstr "" "Pakketten waarvoor een opwaardering geprobeerd werd:\n" "\n" -#: ../unattended-upgrade:929 +#: ../unattended-upgrade:827 msgid "Packages with upgradable origin but kept back:\n" msgstr "" "Pakketten die volgens de pakketbron opgewaardeerd kunnen worden, maar " "gehandhaafd werden:\n" -#: ../unattended-upgrade:934 +#: ../unattended-upgrade:832 msgid "Package installation log:" msgstr "Log van de pakketinstallatie:" -#: ../unattended-upgrade:937 +#: ../unattended-upgrade:835 msgid "Unattended-upgrades log:\n" msgstr "Log van unattended-upgrades:\n" -#: ../unattended-upgrade:965 +#: ../unattended-upgrade:855 #, python-format msgid "Writing dpkg log to '%s'" msgstr "Log van dpkg wordt opgeschreven in '%s'" -#: ../unattended-upgrade:1121 +#: ../unattended-upgrade:987 #, python-format msgid "Found %s, but not rebooting because %s is logged in." msgid_plural "Found %s, but not rebooting because %s are logged in." @@ -132,62 +116,62 @@ msgstr[1] "" "%s gevonden, maar er wordt niet herstart omdat %s gebruikers ingelogd zijn." -#: ../unattended-upgrade:1175 +#: ../unattended-upgrade:1033 #, python-format msgid "package '%s' upgradable but fails to be marked for upgrade (%s)" msgstr "" "pakket '%s' kan opgewaardeerd worden, maar het lukt niet om het als op te " "waarderen te markeren (%s)" -#: ../unattended-upgrade:1250 +#: ../unattended-upgrade:1097 #, python-format msgid "Packages that are auto removed: '%s'" msgstr "Pakketten die automatisch verwijderd worden: '%s'" -#: ../unattended-upgrade:1256 +#: ../unattended-upgrade:1103 msgid "Packages were successfully auto-removed" msgstr "De pakketten zijn met succes automatisch verwijderd" -#: ../unattended-upgrade:1258 +#: ../unattended-upgrade:1105 msgid "Auto-removing the packages failed!" msgstr "Het automatisch verwijderen van de pakketten mislukte!" -#: ../unattended-upgrade:1259 +#: ../unattended-upgrade:1106 #, python-format msgid "Error message: '%s'" msgstr "Foutmelding: '%s'" -#: ../unattended-upgrade:1260 +#: ../unattended-upgrade:1107 #, python-format msgid "dpkg returned an error! See '%s' for details" msgstr "dpkg gaf een foutmelding! Zie '%s' voor details" -#: ../unattended-upgrade:1320 +#: ../unattended-upgrade:1125 #, python-format msgid "Initial blacklisted packages: %s" msgstr "Pakketten die bij aanvang op de zwarte lijst staan: %s" -#: ../unattended-upgrade:1325 +#: ../unattended-upgrade:1130 #, python-format msgid "Initial whitelisted packages: %s" msgstr "Pakketten die bij aanvang op de witte lijst staan: %s" -#: ../unattended-upgrade:1328 +#: ../unattended-upgrade:1133 msgid "Starting unattended upgrades script" msgstr "Script voor opwaarderingen zonder toezicht wordt gestart" -#: ../unattended-upgrade:1337 +#: ../unattended-upgrade:1136 #, python-format msgid "Allowed origins are: %s" msgstr "Toegelaten pakketbronnen zijn: %s" -#: ../unattended-upgrade:1353 ../unattended-upgrade:1354 +#: ../unattended-upgrade:1152 ../unattended-upgrade:1153 msgid "Unclean dpkg state detected, trying to correct" msgstr "" "dpkg in een onzuivere toestand aangetroffen; een correctiepoging wordt " "ondernomen" -#: ../unattended-upgrade:1365 +#: ../unattended-upgrade:1164 #, python-format msgid "" "dpkg --configure -a output:\n" @@ -196,54 +180,54 @@ "uitvoer van 'dpkg --configure -a':\n" "%s" -#: ../unattended-upgrade:1374 +#: ../unattended-upgrade:1173 msgid "Lock could not be acquired (another package manager running?)" msgstr "" "Kon geen vergrendeling doorvoeren (is een ander programma voor pakketbeheer " "actief?)" -#: ../unattended-upgrade:1376 +#: ../unattended-upgrade:1175 msgid "Cache lock can not be acquired, exiting" msgstr "Kan de cache niet vergrendelen; er wordt afgesloten" -#: ../unattended-upgrade:1383 ../unattended-upgrade:1384 -#: ../unattended-upgrade:1573 ../unattended-upgrade:1574 +#: ../unattended-upgrade:1182 ../unattended-upgrade:1183 +#: ../unattended-upgrade:1363 ../unattended-upgrade:1364 msgid "Cache has broken packages, exiting" msgstr "De cache bevat defecte pakketten; er wordt afgesloten" -#: ../unattended-upgrade:1433 +#: ../unattended-upgrade:1226 #, python-format msgid "GetArchives() failed: '%s'" msgstr "GetArchives() is mislukt: '%s'" -#: ../unattended-upgrade:1446 ../unattended-upgrade:1447 +#: ../unattended-upgrade:1236 ../unattended-upgrade:1237 #, python-format msgid "An error occurred: '%s'" msgstr "Er deed zich een fout voor: '%s'" -#: ../unattended-upgrade:1449 ../unattended-upgrade:1451 +#: ../unattended-upgrade:1239 ../unattended-upgrade:1241 #, python-format msgid "The URI '%s' failed to download, aborting" msgstr "Ophalen uit URI '%s' mislukte; er wordt afgebroken" -#: ../unattended-upgrade:1455 +#: ../unattended-upgrade:1245 #, python-format msgid "Download finished, but file '%s' not there?!?" msgstr "Downloaden beëindigd, maar is bestand '%s' daar niet?!?" -#: ../unattended-upgrade:1471 ../unattended-upgrade:1475 +#: ../unattended-upgrade:1261 ../unattended-upgrade:1265 #, python-format msgid "Package '%s' has conffile prompt and needs to be upgraded manually" msgstr "" "Pakket '%s' heeft een configuratievraag en moet handmatig opgewaardeerd " "worden" -#: ../unattended-upgrade:1503 +#: ../unattended-upgrade:1293 #, python-format msgid "package '%s' not upgraded" msgstr "pakket '%s' niet opgewaardeerd" -#: ../unattended-upgrade:1522 +#: ../unattended-upgrade:1311 msgid "" "No packages found that can be upgraded unattended and no pending auto-" "removals" @@ -251,65 +235,50 @@ "Geen pakketten gevonden die zonder toezicht opgewaardeerd kunnen worden en " "geen aanhangige automatische verwijderingen" -#: ../unattended-upgrade:1550 +#: ../unattended-upgrade:1337 #, python-format msgid "Packages that will be upgraded: %s" msgstr "Pakketten die opgewaardeerd zullen worden: %s" -#: ../unattended-upgrade:1647 +#: ../unattended-upgrade:1406 msgid "print debug messages" msgstr "druk debugmeldingen af" -#: ../unattended-upgrade:1650 +#: ../unattended-upgrade:1409 msgid "make apt/libapt print verbose debug messages" msgstr "laat apt/libapt uitvoerige debugmeldingen afdrukken" -#: ../unattended-upgrade:1653 +#: ../unattended-upgrade:1412 msgid "print info messages" msgstr "druk informatieve berichten af" -#: ../unattended-upgrade:1656 +#: ../unattended-upgrade:1415 msgid "Simulation, download but do not install" msgstr "Simulatie, download maar installeer niet" -#: ../unattended-upgrade:1659 -#, fuzzy -#| msgid "Simulation, download but do not install" -msgid "Only download, do not even try to install." -msgstr "Simulatie, download maar installeer niet" - -#: ../unattended-upgrade:1662 -msgid "Upgrade in minimal steps (and allow interrupting with SIGTERM" +#: ../unattended-upgrade:1418 +msgid "Upgrade in minimal steps (and allow interrupting with SIGINT" msgstr "" -"Opwaardering in zo weinig mogelijk stappen (en laat onderbreking door " -"SIGTERM toe" +"Opwaardering in zo weinig mogelijk stappen (en laat onderbreking door SIGINT " +"toe" -#: ../unattended-upgrade:1671 +#: ../unattended-upgrade:1427 msgid "You need to be root to run this application" msgstr "" "U dient systeembeheerder (root) te zijn om deze toepassing uit te voeren" -#: ../unattended-upgrade-shutdown:76 +#: ../unattended-upgrade-shutdown:72 msgid "Unattended-upgrade in progress during shutdown, sleeping for 5s" msgstr "" "Unattended-upgrade is bezig bij het afsluiten van de computer; er wordt 5 " "sec gewacht" -#: ../unattended-upgrade-shutdown:139 +#: ../unattended-upgrade-shutdown:125 msgid "Running unattended-upgrades in shutdown mode" msgstr "unattended-upgrades wordt in afsluitmodus uitgevoerd" -#: ../unattended-upgrade-shutdown:165 +#: ../unattended-upgrade-shutdown:153 #, python-format msgid "Giving up on lockfile after %s delay" msgstr "" "Vergrendelingsbestand wordt gelaten voor wat het is na wachttijd van %s" - -#: ../unattended-upgrade-shutdown:178 -msgid "" -"Unattended-upgrades stopped. There may be upgrades left to be installed in " -"the next run." -msgstr "" - -#~ msgid "unattended-upgrades result for '%s': '%s'" -#~ msgstr "resultaat van unattended-upgrades voor '%s': '%s'" diff -Nru unattended-upgrades-0.96/po/pt_BR.po unattended-upgrades-0.93.1ubuntu8/po/pt_BR.po --- unattended-upgrades-0.96/po/pt_BR.po 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/po/pt_BR.po 2016-12-11 11:31:26.000000000 +0100 @@ -13,42 +13,31 @@ "X-Poedit-Language: Portuguese\n" "X-Poedit-Country: BRAZIL\n" -#: ../unattended-upgrade:182 +#: ../unattended-upgrade:162 #, python-format msgid "Progress: %s %% (%s)" msgstr "Progresso: %s %% (%s)" -#: ../unattended-upgrade:376 ../unattended-upgrade:393 -#, python-format -msgid "Unable to parse %s." -msgstr "" - -#: ../unattended-upgrade:479 ../unattended-upgrade:577 -#: ../unattended-upgrade-shutdown:182 +#: ../unattended-upgrade:418 ../unattended-upgrade:501 +#: ../unattended-upgrade-shutdown:161 msgid "All upgrades installed" msgstr "Todas as atualizações instaladas" -#: ../unattended-upgrade:481 ../unattended-upgrade:569 +#: ../unattended-upgrade:420 ../unattended-upgrade:493 msgid "Installing the upgrades failed!" msgstr "A instalação das atualizações falhou!" -#: ../unattended-upgrade:482 ../unattended-upgrade:570 +#: ../unattended-upgrade:421 ../unattended-upgrade:494 #, python-format msgid "error message: '%s'" msgstr "mensagem de erro: '%s'" -#: ../unattended-upgrade:483 ../unattended-upgrade:571 +#: ../unattended-upgrade:422 ../unattended-upgrade:495 #, python-format msgid "dpkg returned a error! See '%s' for details" msgstr "O dpkg retornou um erro! Veja '%s' para mais detalhes" -#: ../unattended-upgrade:541 -#, fuzzy, python-format -#| msgid "Packages that are upgraded: %s" -msgid "Some packages can not be upgraded: %s" -msgstr "Pacotes atualizados: %s" - -#: ../unattended-upgrade:895 +#: ../unattended-upgrade:795 #, fuzzy #| msgid "" #| "No '/usr/bin/mail', can not send mail. You probably want to install the " @@ -60,24 +49,21 @@ "'/usr/bin/mail' não encontrado. Incapaz de enviar email. Você provavelmente " "gostaria de instalar o pacote 'mailx'." -#: ../unattended-upgrade:909 -msgid "[reboot required]" -msgstr "" - -#: ../unattended-upgrade:911 -msgid "[package on hold]" -msgstr "" - -#: ../unattended-upgrade:914 -#, fuzzy +#: ../unattended-upgrade:811 +#, fuzzy, python-format #| msgid "[reboot required] unattended-upgrades result for '%s'" -msgid "" -"{hold_flag}{reboot_flag} unattended-upgrades result for '{machine}': {result}" +msgid "[reboot required] unattended-upgrades result for '%s': %s" msgstr "" "[É necessário reiniciar o computador] Resultado da atualização " "desacompanhada para '%s'" -#: ../unattended-upgrade:918 +#: ../unattended-upgrade:814 +#, fuzzy, python-format +#| msgid "unattended-upgrades result for '%s'" +msgid "unattended-upgrades result for '%s': '%s'" +msgstr "Resultado da atualização desacompanhada para '%s'" + +#: ../unattended-upgrade:816 #, python-format msgid "" "Unattended upgrade returned: %s\n" @@ -86,7 +72,7 @@ "A atualização desacompanhada retornou: %s\n" "\n" -#: ../unattended-upgrade:921 +#: ../unattended-upgrade:819 msgid "" "Warning: A reboot is required to complete this upgrade.\n" "\n" @@ -95,102 +81,102 @@ "atualização.\n" "\n" -#: ../unattended-upgrade:923 +#: ../unattended-upgrade:821 #, fuzzy #| msgid "Packages that are upgraded:\n" msgid "Packages that were upgraded:\n" msgstr "Pacotes atualizados:\n" -#: ../unattended-upgrade:925 +#: ../unattended-upgrade:823 #, fuzzy #| msgid "Packages that are upgraded:\n" msgid "Packages that attempted to upgrade:\n" msgstr "Pacotes atualizados:\n" -#: ../unattended-upgrade:929 +#: ../unattended-upgrade:827 msgid "Packages with upgradable origin but kept back:\n" msgstr "Pacotes atualizáveis na origem mas mantidos na versão atual:\n" -#: ../unattended-upgrade:934 +#: ../unattended-upgrade:832 msgid "Package installation log:" msgstr "Relatório de instalação de pacotes:" -#: ../unattended-upgrade:937 +#: ../unattended-upgrade:835 msgid "Unattended-upgrades log:\n" msgstr "Relatório da atualização desacompanhada:\n" -#: ../unattended-upgrade:965 +#: ../unattended-upgrade:855 #, python-format msgid "Writing dpkg log to '%s'" msgstr "Escrevendo o relatório do dpkg em '%s'" -#: ../unattended-upgrade:1121 +#: ../unattended-upgrade:987 #, python-format msgid "Found %s, but not rebooting because %s is logged in." msgid_plural "Found %s, but not rebooting because %s are logged in." msgstr[0] "" msgstr[1] "" -#: ../unattended-upgrade:1175 +#: ../unattended-upgrade:1033 #, python-format msgid "package '%s' upgradable but fails to be marked for upgrade (%s)" msgstr "" "o pacote '%s' é atualizável mas não é possível marcá-lo para atualização (%s)" -#: ../unattended-upgrade:1250 +#: ../unattended-upgrade:1097 #, python-format msgid "Packages that are auto removed: '%s'" msgstr "Pacotes autorremovidos: '%s'" -#: ../unattended-upgrade:1256 +#: ../unattended-upgrade:1103 #, fuzzy #| msgid "Packages that are auto removed: '%s'" msgid "Packages were successfully auto-removed" msgstr "Pacotes autorremovidos: '%s'" -#: ../unattended-upgrade:1258 +#: ../unattended-upgrade:1105 #, fuzzy #| msgid "Installing the upgrades failed!" msgid "Auto-removing the packages failed!" msgstr "A instalação das atualizações falhou!" -#: ../unattended-upgrade:1259 +#: ../unattended-upgrade:1106 #, fuzzy, python-format #| msgid "error message: '%s'" msgid "Error message: '%s'" msgstr "mensagem de erro: '%s'" -#: ../unattended-upgrade:1260 +#: ../unattended-upgrade:1107 #, fuzzy, python-format #| msgid "dpkg returned a error! See '%s' for details" msgid "dpkg returned an error! See '%s' for details" msgstr "O dpkg retornou um erro! Veja '%s' para mais detalhes" -#: ../unattended-upgrade:1320 +#: ../unattended-upgrade:1125 #, python-format msgid "Initial blacklisted packages: %s" msgstr "Pacotes inicialmente na lista negra: %s" -#: ../unattended-upgrade:1325 +#: ../unattended-upgrade:1130 #, fuzzy, python-format #| msgid "Initial blacklisted packages: %s" msgid "Initial whitelisted packages: %s" msgstr "Pacotes inicialmente na lista negra: %s" -#: ../unattended-upgrade:1328 +#: ../unattended-upgrade:1133 msgid "Starting unattended upgrades script" msgstr "Iniciando o script da atualização desacompanhada" -#: ../unattended-upgrade:1337 +#: ../unattended-upgrade:1136 #, python-format msgid "Allowed origins are: %s" msgstr "São origens permitidas: %s" -#: ../unattended-upgrade:1353 ../unattended-upgrade:1354 +#: ../unattended-upgrade:1152 ../unattended-upgrade:1153 msgid "Unclean dpkg state detected, trying to correct" msgstr "Tentando corrigir estado não-íntegro no dpkg" -#: ../unattended-upgrade:1365 +#: ../unattended-upgrade:1164 #, python-format msgid "" "dpkg --configure -a output:\n" @@ -199,54 +185,54 @@ "Saída de dpkg --configure -a:\n" "%s" -#: ../unattended-upgrade:1374 +#: ../unattended-upgrade:1173 msgid "Lock could not be acquired (another package manager running?)" msgstr "" "O lock não pôde ser obtido (outro gerenciador de pacotes em funcionamento?)" -#: ../unattended-upgrade:1376 +#: ../unattended-upgrade:1175 msgid "Cache lock can not be acquired, exiting" msgstr "O lock do cache não pode ser obtido, encerrando" -#: ../unattended-upgrade:1383 ../unattended-upgrade:1384 -#: ../unattended-upgrade:1573 ../unattended-upgrade:1574 +#: ../unattended-upgrade:1182 ../unattended-upgrade:1183 +#: ../unattended-upgrade:1363 ../unattended-upgrade:1364 msgid "Cache has broken packages, exiting" msgstr "O cache tem pacotes quebrados, encerrando" -#: ../unattended-upgrade:1433 +#: ../unattended-upgrade:1226 #, python-format msgid "GetArchives() failed: '%s'" msgstr "GetArchives() falhou: '%s'" -#: ../unattended-upgrade:1446 ../unattended-upgrade:1447 +#: ../unattended-upgrade:1236 ../unattended-upgrade:1237 #, fuzzy, python-format #| msgid "An error ocured: '%s'" msgid "An error occurred: '%s'" msgstr "Ocorreu um erro; '%s'" -#: ../unattended-upgrade:1449 ../unattended-upgrade:1451 +#: ../unattended-upgrade:1239 ../unattended-upgrade:1241 #, python-format msgid "The URI '%s' failed to download, aborting" msgstr "O URI '%s' falhou no download, abortando" -#: ../unattended-upgrade:1455 +#: ../unattended-upgrade:1245 #, python-format msgid "Download finished, but file '%s' not there?!?" msgstr "Download terminado, mas o arquivo '%s' não está lá?!?" -#: ../unattended-upgrade:1471 ../unattended-upgrade:1475 +#: ../unattended-upgrade:1261 ../unattended-upgrade:1265 #, python-format msgid "Package '%s' has conffile prompt and needs to be upgraded manually" msgstr "" "O pacote '%s' possui um diálogo conffile e necessita ser atualizado " "manualmente" -#: ../unattended-upgrade:1503 +#: ../unattended-upgrade:1293 #, python-format msgid "package '%s' not upgraded" msgstr "o pacote '%s' não foi atualizado" -#: ../unattended-upgrade:1522 +#: ../unattended-upgrade:1311 #, fuzzy #| msgid "No packages found that can be upgraded unattended" msgid "" @@ -255,74 +241,57 @@ msgstr "" "Não foi encontrado nenhum pacote que possa ser atualizado desacompanhadamente" -#: ../unattended-upgrade:1550 +#: ../unattended-upgrade:1337 #, fuzzy, python-format #| msgid "Packages that are upgraded: %s" msgid "Packages that will be upgraded: %s" msgstr "Pacotes atualizados: %s" -#: ../unattended-upgrade:1647 +#: ../unattended-upgrade:1406 msgid "print debug messages" msgstr "imprimir mensagens de depuração" -#: ../unattended-upgrade:1650 +#: ../unattended-upgrade:1409 #, fuzzy #| msgid "print debug messages" msgid "make apt/libapt print verbose debug messages" msgstr "imprimir mensagens de depuração" -#: ../unattended-upgrade:1653 +#: ../unattended-upgrade:1412 #, fuzzy #| msgid "print debug messages" msgid "print info messages" msgstr "imprimir mensagens de depuração" -#: ../unattended-upgrade:1656 +#: ../unattended-upgrade:1415 msgid "Simulation, download but do not install" msgstr "Simulação, baixar mas não instalar" -#: ../unattended-upgrade:1659 -#, fuzzy -#| msgid "Simulation, download but do not install" -msgid "Only download, do not even try to install." -msgstr "Simulação, baixar mas não instalar" - -#: ../unattended-upgrade:1662 -msgid "Upgrade in minimal steps (and allow interrupting with SIGTERM" -msgstr "Atualizar em passos mínimos (e permitir interrupção com SIGTERM)" +#: ../unattended-upgrade:1418 +msgid "Upgrade in minimal steps (and allow interrupting with SIGINT" +msgstr "Atualizar em passos mínimos (e permitir interrupção com SIGINT)" -#: ../unattended-upgrade:1671 +#: ../unattended-upgrade:1427 msgid "You need to be root to run this application" msgstr "Você precisa ser root para executar este aplicativo" -#: ../unattended-upgrade-shutdown:76 +#: ../unattended-upgrade-shutdown:72 msgid "Unattended-upgrade in progress during shutdown, sleeping for 5s" msgstr "" "Atualização desacompanhada em execução durante o encerramento do sistema, " "atrasando 5s" -#: ../unattended-upgrade-shutdown:139 +#: ../unattended-upgrade-shutdown:125 #, fuzzy #| msgid "unattended-upgrades result for '%s'" msgid "Running unattended-upgrades in shutdown mode" msgstr "Resultado da atualização desacompanhada para '%s'" -#: ../unattended-upgrade-shutdown:165 +#: ../unattended-upgrade-shutdown:153 #, python-format msgid "Giving up on lockfile after %s delay" msgstr "Desistindo do arquivo de lock após %s" -#: ../unattended-upgrade-shutdown:178 -msgid "" -"Unattended-upgrades stopped. There may be upgrades left to be installed in " -"the next run." -msgstr "" - -#, fuzzy -#~| msgid "unattended-upgrades result for '%s'" -#~ msgid "unattended-upgrades result for '%s': '%s'" -#~ msgstr "Resultado da atualização desacompanhada para '%s'" - #~ msgid "Progress: %s %%: (%s)" #~ msgstr "Progresso: %s %%: (%s)" diff -Nru unattended-upgrades-0.96/po/pt.po unattended-upgrades-0.93.1ubuntu8/po/pt.po --- unattended-upgrades-0.96/po/pt.po 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/po/pt.po 2016-12-11 11:31:26.000000000 +0100 @@ -16,42 +16,31 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../unattended-upgrade:182 +#: ../unattended-upgrade:162 #, python-format msgid "Progress: %s %% (%s)" msgstr "Progresso: %s %% (%s)" -#: ../unattended-upgrade:376 ../unattended-upgrade:393 -#, python-format -msgid "Unable to parse %s." -msgstr "" - -#: ../unattended-upgrade:479 ../unattended-upgrade:577 -#: ../unattended-upgrade-shutdown:182 +#: ../unattended-upgrade:418 ../unattended-upgrade:501 +#: ../unattended-upgrade-shutdown:161 msgid "All upgrades installed" msgstr "Todas as atualizações instaladas" -#: ../unattended-upgrade:481 ../unattended-upgrade:569 +#: ../unattended-upgrade:420 ../unattended-upgrade:493 msgid "Installing the upgrades failed!" msgstr "Falhou a instalação das atualizações!" -#: ../unattended-upgrade:482 ../unattended-upgrade:570 +#: ../unattended-upgrade:421 ../unattended-upgrade:494 #, python-format msgid "error message: '%s'" msgstr "mensagem de erro: '%s'" -#: ../unattended-upgrade:483 ../unattended-upgrade:571 +#: ../unattended-upgrade:422 ../unattended-upgrade:495 #, python-format msgid "dpkg returned a error! See '%s' for details" msgstr "dpkg retornou um erro! Veja '%s' para mais informação" -#: ../unattended-upgrade:541 -#, fuzzy, python-format -#| msgid "Packages that are upgraded: %s" -msgid "Some packages can not be upgraded: %s" -msgstr "Pacotes atualizados: %s" - -#: ../unattended-upgrade:895 +#: ../unattended-upgrade:795 #, fuzzy #| msgid "" #| "No '/usr/bin/mail', can not send mail. You probably want to install the " @@ -63,22 +52,19 @@ "Não existe '/usr/bin/mail', impossível enviar mail. Provavelmente quer " "instalar o pacote 'mailx'." -#: ../unattended-upgrade:909 -msgid "[reboot required]" -msgstr "" - -#: ../unattended-upgrade:911 -msgid "[package on hold]" -msgstr "" - -#: ../unattended-upgrade:914 -#, fuzzy +#: ../unattended-upgrade:811 +#, fuzzy, python-format #| msgid "[reboot required] unattended-upgrades result for '%s'" -msgid "" -"{hold_flag}{reboot_flag} unattended-upgrades result for '{machine}': {result}" +msgid "[reboot required] unattended-upgrades result for '%s': %s" msgstr "[reinício necessário] resultado do unattended-upgrades para '%s'" -#: ../unattended-upgrade:918 +#: ../unattended-upgrade:814 +#, fuzzy, python-format +#| msgid "unattended-upgrades result for '%s'" +msgid "unattended-upgrades result for '%s': '%s'" +msgstr "resultado do unattended-upgrades para '%s'" + +#: ../unattended-upgrade:816 #, python-format msgid "" "Unattended upgrade returned: %s\n" @@ -87,7 +73,7 @@ "Actualização automática retornou: %s\n" "\n" -#: ../unattended-upgrade:921 +#: ../unattended-upgrade:819 msgid "" "Warning: A reboot is required to complete this upgrade.\n" "\n" @@ -96,101 +82,101 @@ "atualização.\n" "\n" -#: ../unattended-upgrade:923 +#: ../unattended-upgrade:821 #, fuzzy #| msgid "Packages that are upgraded:\n" msgid "Packages that were upgraded:\n" msgstr "Pacotes atualizados:\n" -#: ../unattended-upgrade:925 +#: ../unattended-upgrade:823 #, fuzzy #| msgid "Packages that are upgraded:\n" msgid "Packages that attempted to upgrade:\n" msgstr "Pacotes atualizados:\n" -#: ../unattended-upgrade:929 +#: ../unattended-upgrade:827 msgid "Packages with upgradable origin but kept back:\n" msgstr "Pacotes com possibilidade de actualização mas mantidos:\n" -#: ../unattended-upgrade:934 +#: ../unattended-upgrade:832 msgid "Package installation log:" msgstr "Registo de instalação de pacotes:" -#: ../unattended-upgrade:937 +#: ../unattended-upgrade:835 msgid "Unattended-upgrades log:\n" msgstr "Registo do Unattended-upgrades:\n" -#: ../unattended-upgrade:965 +#: ../unattended-upgrade:855 #, python-format msgid "Writing dpkg log to '%s'" msgstr "A escrever registo do dpkg para '%s'" -#: ../unattended-upgrade:1121 +#: ../unattended-upgrade:987 #, python-format msgid "Found %s, but not rebooting because %s is logged in." msgid_plural "Found %s, but not rebooting because %s are logged in." msgstr[0] "" msgstr[1] "" -#: ../unattended-upgrade:1175 +#: ../unattended-upgrade:1033 #, python-format msgid "package '%s' upgradable but fails to be marked for upgrade (%s)" msgstr "o pacote '%s' é atualizável mas não está marcado para atualização (%s)" -#: ../unattended-upgrade:1250 +#: ../unattended-upgrade:1097 #, python-format msgid "Packages that are auto removed: '%s'" msgstr "Pacotes automaticamente removidos: '%s'" -#: ../unattended-upgrade:1256 +#: ../unattended-upgrade:1103 #, fuzzy #| msgid "Packages that are auto removed: '%s'" msgid "Packages were successfully auto-removed" msgstr "Pacotes automaticamente removidos: '%s'" -#: ../unattended-upgrade:1258 +#: ../unattended-upgrade:1105 #, fuzzy #| msgid "Installing the upgrades failed!" msgid "Auto-removing the packages failed!" msgstr "Falhou a instalação das atualizações!" -#: ../unattended-upgrade:1259 +#: ../unattended-upgrade:1106 #, fuzzy, python-format #| msgid "error message: '%s'" msgid "Error message: '%s'" msgstr "mensagem de erro: '%s'" -#: ../unattended-upgrade:1260 +#: ../unattended-upgrade:1107 #, fuzzy, python-format #| msgid "dpkg returned a error! See '%s' for details" msgid "dpkg returned an error! See '%s' for details" msgstr "dpkg retornou um erro! Veja '%s' para mais informação" -#: ../unattended-upgrade:1320 +#: ../unattended-upgrade:1125 #, python-format msgid "Initial blacklisted packages: %s" msgstr "Lista negra inicial de pacotes: %s" -#: ../unattended-upgrade:1325 +#: ../unattended-upgrade:1130 #, fuzzy, python-format #| msgid "Initial blacklisted packages: %s" msgid "Initial whitelisted packages: %s" msgstr "Lista negra inicial de pacotes: %s" -#: ../unattended-upgrade:1328 +#: ../unattended-upgrade:1133 msgid "Starting unattended upgrades script" msgstr "A iniciar o script de atualização automática" -#: ../unattended-upgrade:1337 +#: ../unattended-upgrade:1136 #, python-format msgid "Allowed origins are: %s" msgstr "Origens permitidas: %s" -#: ../unattended-upgrade:1353 ../unattended-upgrade:1354 +#: ../unattended-upgrade:1152 ../unattended-upgrade:1153 msgid "Unclean dpkg state detected, trying to correct" msgstr "Detetado estado \"unclean\" de dpkg, a tentar correção" -#: ../unattended-upgrade:1365 +#: ../unattended-upgrade:1164 #, python-format msgid "" "dpkg --configure -a output:\n" @@ -199,53 +185,53 @@ "dpkg --configure -a output:\n" "%s" -#: ../unattended-upgrade:1374 +#: ../unattended-upgrade:1173 msgid "Lock could not be acquired (another package manager running?)" msgstr "Não foi possível bloquear (outro gestor de pacotes ativo?)" -#: ../unattended-upgrade:1376 +#: ../unattended-upgrade:1175 msgid "Cache lock can not be acquired, exiting" msgstr "Não foi possível bloquear cache, a sair" -#: ../unattended-upgrade:1383 ../unattended-upgrade:1384 -#: ../unattended-upgrade:1573 ../unattended-upgrade:1574 +#: ../unattended-upgrade:1182 ../unattended-upgrade:1183 +#: ../unattended-upgrade:1363 ../unattended-upgrade:1364 msgid "Cache has broken packages, exiting" msgstr "A cache tem pacotes corrompidos, a sair" -#: ../unattended-upgrade:1433 +#: ../unattended-upgrade:1226 #, python-format msgid "GetArchives() failed: '%s'" msgstr "Falhou GetArchives(): '%s'" -#: ../unattended-upgrade:1446 ../unattended-upgrade:1447 +#: ../unattended-upgrade:1236 ../unattended-upgrade:1237 #, fuzzy, python-format #| msgid "An error ocured: '%s'" msgid "An error occurred: '%s'" msgstr "Ocorreu um erro: '%s'" -#: ../unattended-upgrade:1449 ../unattended-upgrade:1451 +#: ../unattended-upgrade:1239 ../unattended-upgrade:1241 #, python-format msgid "The URI '%s' failed to download, aborting" msgstr "Falhou o download do URI '%s', a terminar" -#: ../unattended-upgrade:1455 +#: ../unattended-upgrade:1245 #, python-format msgid "Download finished, but file '%s' not there?!?" msgstr "Acabou o download, mas o ficheiro '%s' não existe?!?" -#: ../unattended-upgrade:1471 ../unattended-upgrade:1475 +#: ../unattended-upgrade:1261 ../unattended-upgrade:1265 #, python-format msgid "Package '%s' has conffile prompt and needs to be upgraded manually" msgstr "" "O pacote '%s' tem uma questão de ficheiro de configuração e necessita de ser " "atualizado manualmente" -#: ../unattended-upgrade:1503 +#: ../unattended-upgrade:1293 #, python-format msgid "package '%s' not upgraded" msgstr "o pacote '%s' não foi atualizado" -#: ../unattended-upgrade:1522 +#: ../unattended-upgrade:1311 #, fuzzy #| msgid "No packages found that can be upgraded unattended" msgid "" @@ -254,71 +240,54 @@ msgstr "" "Não foram encontrados pacotes com possibilidade de atualização automatica" -#: ../unattended-upgrade:1550 +#: ../unattended-upgrade:1337 #, fuzzy, python-format #| msgid "Packages that are upgraded: %s" msgid "Packages that will be upgraded: %s" msgstr "Pacotes atualizados: %s" -#: ../unattended-upgrade:1647 +#: ../unattended-upgrade:1406 msgid "print debug messages" msgstr "mostrar mensagens de debug" -#: ../unattended-upgrade:1650 +#: ../unattended-upgrade:1409 #, fuzzy #| msgid "print debug messages" msgid "make apt/libapt print verbose debug messages" msgstr "mostrar mensagens de debug" -#: ../unattended-upgrade:1653 +#: ../unattended-upgrade:1412 #, fuzzy #| msgid "print debug messages" msgid "print info messages" msgstr "mostrar mensagens de debug" -#: ../unattended-upgrade:1656 +#: ../unattended-upgrade:1415 msgid "Simulation, download but do not install" msgstr "Simulação, fazer o download mas não instalar" -#: ../unattended-upgrade:1659 -#, fuzzy -#| msgid "Simulation, download but do not install" -msgid "Only download, do not even try to install." -msgstr "Simulação, fazer o download mas não instalar" - -#: ../unattended-upgrade:1662 -msgid "Upgrade in minimal steps (and allow interrupting with SIGTERM" -msgstr "Atualizar em pequenos passos (e permitir interrupções com o SIGTERM" +#: ../unattended-upgrade:1418 +msgid "Upgrade in minimal steps (and allow interrupting with SIGINT" +msgstr "Atualizar em pequenos passos (e permitir interrupções com o SIGINT" -#: ../unattended-upgrade:1671 +#: ../unattended-upgrade:1427 msgid "You need to be root to run this application" msgstr "Necessita de acesso de root para executar esta aplicação" -#: ../unattended-upgrade-shutdown:76 +#: ../unattended-upgrade-shutdown:72 msgid "Unattended-upgrade in progress during shutdown, sleeping for 5s" msgstr "Unattended-upgrade em progresso durante o fecho, a dormir por 5s" -#: ../unattended-upgrade-shutdown:139 +#: ../unattended-upgrade-shutdown:125 #, fuzzy #| msgid "unattended-upgrades result for '%s'" msgid "Running unattended-upgrades in shutdown mode" msgstr "resultado do unattended-upgrades para '%s'" -#: ../unattended-upgrade-shutdown:165 +#: ../unattended-upgrade-shutdown:153 #, python-format msgid "Giving up on lockfile after %s delay" msgstr "A desistir do ficheiro de lock após um atraso de %s" -#: ../unattended-upgrade-shutdown:178 -msgid "" -"Unattended-upgrades stopped. There may be upgrades left to be installed in " -"the next run." -msgstr "" - -#, fuzzy -#~| msgid "unattended-upgrades result for '%s'" -#~ msgid "unattended-upgrades result for '%s': '%s'" -#~ msgstr "resultado do unattended-upgrades para '%s'" - #~ msgid "Progress: %s %%: (%s)" #~ msgstr "Progresso: %s %%: (%s)" diff -Nru unattended-upgrades-0.96/po/ru.po unattended-upgrades-0.93.1ubuntu8/po/ru.po --- unattended-upgrades-0.96/po/ru.po 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/po/ru.po 2016-12-11 11:31:26.000000000 +0100 @@ -18,42 +18,31 @@ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: ../unattended-upgrade:182 +#: ../unattended-upgrade:162 #, python-format msgid "Progress: %s %% (%s)" msgstr "Ход выполнения: %s %% (%s)" -#: ../unattended-upgrade:376 ../unattended-upgrade:393 -#, python-format -msgid "Unable to parse %s." -msgstr "" - -#: ../unattended-upgrade:479 ../unattended-upgrade:577 -#: ../unattended-upgrade-shutdown:182 +#: ../unattended-upgrade:418 ../unattended-upgrade:501 +#: ../unattended-upgrade-shutdown:161 msgid "All upgrades installed" msgstr "Все обновления установлены" -#: ../unattended-upgrade:481 ../unattended-upgrade:569 +#: ../unattended-upgrade:420 ../unattended-upgrade:493 msgid "Installing the upgrades failed!" msgstr "Установка обновлений завершилась с ошибкой!" -#: ../unattended-upgrade:482 ../unattended-upgrade:570 +#: ../unattended-upgrade:421 ../unattended-upgrade:494 #, python-format msgid "error message: '%s'" msgstr "сообщение об ошибке: %s" -#: ../unattended-upgrade:483 ../unattended-upgrade:571 +#: ../unattended-upgrade:422 ../unattended-upgrade:495 #, python-format msgid "dpkg returned a error! See '%s' for details" msgstr "dpkg завершилась с ошибкой! Подробности смотрите в %s" -#: ../unattended-upgrade:541 -#, fuzzy, python-format -#| msgid "Packages that are upgraded: %s" -msgid "Some packages can not be upgraded: %s" -msgstr "Обновлённые пакеты: %s" - -#: ../unattended-upgrade:895 +#: ../unattended-upgrade:795 #, fuzzy #| msgid "" #| "No '/usr/bin/mail', can not send mail. You probably want to install the " @@ -65,22 +54,19 @@ "Нет программы /usr/bin/mail, невозможно послать почту. Вероятно, лучше " "установить пакет mailx." -#: ../unattended-upgrade:909 -msgid "[reboot required]" -msgstr "" - -#: ../unattended-upgrade:911 -msgid "[package on hold]" -msgstr "" - -#: ../unattended-upgrade:914 -#, fuzzy +#: ../unattended-upgrade:811 +#, fuzzy, python-format #| msgid "[reboot required] unattended-upgrades result for '%s'" -msgid "" -"{hold_flag}{reboot_flag} unattended-upgrades result for '{machine}': {result}" +msgid "[reboot required] unattended-upgrades result for '%s': %s" msgstr "[требуется перезагрузка] Результат unattended-upgrades для «%s»" -#: ../unattended-upgrade:918 +#: ../unattended-upgrade:814 +#, fuzzy, python-format +#| msgid "unattended-upgrades result for '%s'" +msgid "unattended-upgrades result for '%s': '%s'" +msgstr "Результат unattended-upgrades для «%s»" + +#: ../unattended-upgrade:816 #, python-format msgid "" "Unattended upgrade returned: %s\n" @@ -89,7 +75,7 @@ "Результат необслуживаемой установки: %s\n" "\n" -#: ../unattended-upgrade:921 +#: ../unattended-upgrade:819 msgid "" "Warning: A reboot is required to complete this upgrade.\n" "\n" @@ -97,36 +83,36 @@ "Предупреждение: для завершения обновления требуется перезагрузка.\n" "\n" -#: ../unattended-upgrade:923 +#: ../unattended-upgrade:821 #, fuzzy #| msgid "Packages that are upgraded:\n" msgid "Packages that were upgraded:\n" msgstr "Обновлённые пакеты:\n" -#: ../unattended-upgrade:925 +#: ../unattended-upgrade:823 #, fuzzy #| msgid "Packages that are upgraded:\n" msgid "Packages that attempted to upgrade:\n" msgstr "Обновлённые пакеты:\n" -#: ../unattended-upgrade:929 +#: ../unattended-upgrade:827 msgid "Packages with upgradable origin but kept back:\n" msgstr "Пакеты, обновлённые в источнике, но оставленные теми же в системе:\n" -#: ../unattended-upgrade:934 +#: ../unattended-upgrade:832 msgid "Package installation log:" msgstr "Журнал установки пакетов:" -#: ../unattended-upgrade:937 +#: ../unattended-upgrade:835 msgid "Unattended-upgrades log:\n" msgstr "Журнал unattended-upgrades:\n" -#: ../unattended-upgrade:965 +#: ../unattended-upgrade:855 #, python-format msgid "Writing dpkg log to '%s'" msgstr "Журнал dpkg записывается в %s" -#: ../unattended-upgrade:1121 +#: ../unattended-upgrade:987 #, python-format msgid "Found %s, but not rebooting because %s is logged in." msgid_plural "Found %s, but not rebooting because %s are logged in." @@ -134,66 +120,66 @@ msgstr[1] "" msgstr[2] "" -#: ../unattended-upgrade:1175 +#: ../unattended-upgrade:1033 #, python-format msgid "package '%s' upgradable but fails to be marked for upgrade (%s)" msgstr "" "пакет %s можно обновить, но его не удалось пометить как обновляемый (%s)" -#: ../unattended-upgrade:1250 +#: ../unattended-upgrade:1097 #, python-format msgid "Packages that are auto removed: '%s'" msgstr "Автоматически удаляемые пакеты: «%s»" -#: ../unattended-upgrade:1256 +#: ../unattended-upgrade:1103 #, fuzzy #| msgid "Packages that are auto removed: '%s'" msgid "Packages were successfully auto-removed" msgstr "Автоматически удаляемые пакеты: «%s»" -#: ../unattended-upgrade:1258 +#: ../unattended-upgrade:1105 #, fuzzy #| msgid "Installing the upgrades failed!" msgid "Auto-removing the packages failed!" msgstr "Установка обновлений завершилась с ошибкой!" -#: ../unattended-upgrade:1259 +#: ../unattended-upgrade:1106 #, fuzzy, python-format #| msgid "error message: '%s'" msgid "Error message: '%s'" msgstr "сообщение об ошибке: %s" -#: ../unattended-upgrade:1260 +#: ../unattended-upgrade:1107 #, fuzzy, python-format #| msgid "dpkg returned a error! See '%s' for details" msgid "dpkg returned an error! See '%s' for details" msgstr "dpkg завершилась с ошибкой! Подробности смотрите в %s" -#: ../unattended-upgrade:1320 +#: ../unattended-upgrade:1125 #, python-format msgid "Initial blacklisted packages: %s" msgstr "Пакеты в чёрном списке изначально: %s" -#: ../unattended-upgrade:1325 +#: ../unattended-upgrade:1130 #, fuzzy, python-format #| msgid "Initial blacklisted packages: %s" msgid "Initial whitelisted packages: %s" msgstr "Пакеты в чёрном списке изначально: %s" -#: ../unattended-upgrade:1328 +#: ../unattended-upgrade:1133 msgid "Starting unattended upgrades script" msgstr "Запускаются сценарии необслуживаемой установки" -#: ../unattended-upgrade:1337 +#: ../unattended-upgrade:1136 #, python-format msgid "Allowed origins are: %s" msgstr "Разрешённые источники: %s" -#: ../unattended-upgrade:1353 ../unattended-upgrade:1354 +#: ../unattended-upgrade:1152 ../unattended-upgrade:1153 msgid "Unclean dpkg state detected, trying to correct" msgstr "Обнаружено состояние незавершённости работы dpkg, попытаемся исправить" -#: ../unattended-upgrade:1365 +#: ../unattended-upgrade:1164 #, python-format msgid "" "dpkg --configure -a output:\n" @@ -202,53 +188,53 @@ "Результат dpkg --configure -a:\n" "%s" -#: ../unattended-upgrade:1374 +#: ../unattended-upgrade:1173 msgid "Lock could not be acquired (another package manager running?)" msgstr "Не удалось выполнить блокировку (запущен ещё один менеджер пакетов?)" -#: ../unattended-upgrade:1376 +#: ../unattended-upgrade:1175 msgid "Cache lock can not be acquired, exiting" msgstr "Не удалось выполнить блокировку кэша, завершение работы" -#: ../unattended-upgrade:1383 ../unattended-upgrade:1384 -#: ../unattended-upgrade:1573 ../unattended-upgrade:1574 +#: ../unattended-upgrade:1182 ../unattended-upgrade:1183 +#: ../unattended-upgrade:1363 ../unattended-upgrade:1364 msgid "Cache has broken packages, exiting" msgstr "В кэше сломанные пакеты, завершение работы" -#: ../unattended-upgrade:1433 +#: ../unattended-upgrade:1226 #, python-format msgid "GetArchives() failed: '%s'" msgstr "GetArchives() завершилась с ошибкой: '%s'" -#: ../unattended-upgrade:1446 ../unattended-upgrade:1447 +#: ../unattended-upgrade:1236 ../unattended-upgrade:1237 #, fuzzy, python-format #| msgid "An error ocured: '%s'" msgid "An error occurred: '%s'" msgstr "Произошла ошибка: %s" -#: ../unattended-upgrade:1449 ../unattended-upgrade:1451 +#: ../unattended-upgrade:1239 ../unattended-upgrade:1241 #, python-format msgid "The URI '%s' failed to download, aborting" msgstr "Невозможно скачать URI '%s', останов" -#: ../unattended-upgrade:1455 +#: ../unattended-upgrade:1245 #, python-format msgid "Download finished, but file '%s' not there?!?" msgstr "Скачивание завершено, но файла %s нет?!?" -#: ../unattended-upgrade:1471 ../unattended-upgrade:1475 +#: ../unattended-upgrade:1261 ../unattended-upgrade:1265 #, python-format msgid "Package '%s' has conffile prompt and needs to be upgraded manually" msgstr "" "В пакете %s есть conffile с вводом от пользователя и его нужно обновлять " "вручную" -#: ../unattended-upgrade:1503 +#: ../unattended-upgrade:1293 #, python-format msgid "package '%s' not upgraded" msgstr "пакет %s не обновлён" -#: ../unattended-upgrade:1522 +#: ../unattended-upgrade:1311 #, fuzzy #| msgid "No packages found that can be upgraded unattended" msgid "" @@ -257,73 +243,56 @@ msgstr "" "Пакеты, для которых можно выполнить необслуживаемое обновление, не найдены" -#: ../unattended-upgrade:1550 +#: ../unattended-upgrade:1337 #, fuzzy, python-format #| msgid "Packages that are upgraded: %s" msgid "Packages that will be upgraded: %s" msgstr "Обновлённые пакеты: %s" -#: ../unattended-upgrade:1647 +#: ../unattended-upgrade:1406 msgid "print debug messages" msgstr "выводить отладочные сообщения" -#: ../unattended-upgrade:1650 +#: ../unattended-upgrade:1409 #, fuzzy #| msgid "print debug messages" msgid "make apt/libapt print verbose debug messages" msgstr "выводить отладочные сообщения" -#: ../unattended-upgrade:1653 +#: ../unattended-upgrade:1412 #, fuzzy #| msgid "print debug messages" msgid "print info messages" msgstr "выводить отладочные сообщения" -#: ../unattended-upgrade:1656 +#: ../unattended-upgrade:1415 msgid "Simulation, download but do not install" msgstr "Имитация, скачивать но не устанавливать" -#: ../unattended-upgrade:1659 -#, fuzzy -#| msgid "Simulation, download but do not install" -msgid "Only download, do not even try to install." -msgstr "Имитация, скачивать но не устанавливать" - -#: ../unattended-upgrade:1662 -msgid "Upgrade in minimal steps (and allow interrupting with SIGTERM" +#: ../unattended-upgrade:1418 +msgid "Upgrade in minimal steps (and allow interrupting with SIGINT" msgstr "" -"Обновление с минимальным количеством этапов (можно прервать с помощью SIGTERM" +"Обновление с минимальным количеством этапов (можно прервать с помощью SIGINT" -#: ../unattended-upgrade:1671 +#: ../unattended-upgrade:1427 msgid "You need to be root to run this application" msgstr "Вы должны быть root для запуска этого приложения" -#: ../unattended-upgrade-shutdown:76 +#: ../unattended-upgrade-shutdown:72 msgid "Unattended-upgrade in progress during shutdown, sleeping for 5s" msgstr "Выполнение unattended-upgrade во время выключения, пауза на 5с" -#: ../unattended-upgrade-shutdown:139 +#: ../unattended-upgrade-shutdown:125 #, fuzzy #| msgid "unattended-upgrades result for '%s'" msgid "Running unattended-upgrades in shutdown mode" msgstr "Результат unattended-upgrades для «%s»" -#: ../unattended-upgrade-shutdown:165 +#: ../unattended-upgrade-shutdown:153 #, python-format msgid "Giving up on lockfile after %s delay" msgstr "Отказ по lockfile после %s задержки" -#: ../unattended-upgrade-shutdown:178 -msgid "" -"Unattended-upgrades stopped. There may be upgrades left to be installed in " -"the next run." -msgstr "" - -#, fuzzy -#~| msgid "unattended-upgrades result for '%s'" -#~ msgid "unattended-upgrades result for '%s': '%s'" -#~ msgstr "Результат unattended-upgrades для «%s»" - #~ msgid "Progress: %s %%: (%s)" #~ msgstr "Ход выполнения: %s %%: (%s)" diff -Nru unattended-upgrades-0.96/po/sk.po unattended-upgrades-0.93.1ubuntu8/po/sk.po --- unattended-upgrades-0.96/po/sk.po 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/po/sk.po 2016-12-11 11:31:26.000000000 +0100 @@ -17,42 +17,31 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural= (n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: ../unattended-upgrade:182 +#: ../unattended-upgrade:162 #, python-format msgid "Progress: %s %% (%s)" msgstr "Priebeh: %s %% (%s)" -#: ../unattended-upgrade:376 ../unattended-upgrade:393 -#, python-format -msgid "Unable to parse %s." -msgstr "" - -#: ../unattended-upgrade:479 ../unattended-upgrade:577 -#: ../unattended-upgrade-shutdown:182 +#: ../unattended-upgrade:418 ../unattended-upgrade:501 +#: ../unattended-upgrade-shutdown:161 msgid "All upgrades installed" msgstr "Všetky aktualizácie sú nainštalované" -#: ../unattended-upgrade:481 ../unattended-upgrade:569 +#: ../unattended-upgrade:420 ../unattended-upgrade:493 msgid "Installing the upgrades failed!" msgstr "Inštalácia aktualizácií zlyhala!" -#: ../unattended-upgrade:482 ../unattended-upgrade:570 +#: ../unattended-upgrade:421 ../unattended-upgrade:494 #, python-format msgid "error message: '%s'" msgstr "chybová správa: „%s“" -#: ../unattended-upgrade:483 ../unattended-upgrade:571 +#: ../unattended-upgrade:422 ../unattended-upgrade:495 #, python-format msgid "dpkg returned a error! See '%s' for details" msgstr "dpkg vrátil chybu! Podrobnosti nájdete v „%s“" -#: ../unattended-upgrade:541 -#, fuzzy, python-format -#| msgid "Packages that are upgraded: %s" -msgid "Some packages can not be upgraded: %s" -msgstr "Aktualizované balíky: %s" - -#: ../unattended-upgrade:895 +#: ../unattended-upgrade:795 #, fuzzy #| msgid "" #| "No '/usr/bin/mail', can not send mail. You probably want to install the " @@ -64,22 +53,19 @@ "Chýba „/usr/bin/mail“ nie je možné poslať poštu. Pravdepodobne chcete " "nainštalovať balík „mailx“." -#: ../unattended-upgrade:909 -msgid "[reboot required]" -msgstr "" - -#: ../unattended-upgrade:911 -msgid "[package on hold]" -msgstr "" - -#: ../unattended-upgrade:914 -#, fuzzy +#: ../unattended-upgrade:811 +#, fuzzy, python-format #| msgid "[reboot required] unattended-upgrades result for '%s'" -msgid "" -"{hold_flag}{reboot_flag} unattended-upgrades result for '{machine}': {result}" +msgid "[reboot required] unattended-upgrades result for '%s': %s" msgstr "[vyžaduje reštart] výsledok unattended-upgrades pre „%s“" -#: ../unattended-upgrade:918 +#: ../unattended-upgrade:814 +#, fuzzy, python-format +#| msgid "unattended-upgrades result for '%s'" +msgid "unattended-upgrades result for '%s': '%s'" +msgstr "výsledok unattended-upgrades pre „%s“" + +#: ../unattended-upgrade:816 #, python-format msgid "" "Unattended upgrade returned: %s\n" @@ -88,7 +74,7 @@ "Bezobslužná aktualizácia vrátila: %s\n" "\n" -#: ../unattended-upgrade:921 +#: ../unattended-upgrade:819 msgid "" "Warning: A reboot is required to complete this upgrade.\n" "\n" @@ -96,36 +82,36 @@ "Upozornenie: Na dokončenie tejto aktualizácie sa vyžaduje reštart.\n" "\n" -#: ../unattended-upgrade:923 +#: ../unattended-upgrade:821 #, fuzzy #| msgid "Packages that are upgraded:\n" msgid "Packages that were upgraded:\n" msgstr "Aktualizavané balíky:\n" -#: ../unattended-upgrade:925 +#: ../unattended-upgrade:823 #, fuzzy #| msgid "Packages that are upgraded:\n" msgid "Packages that attempted to upgrade:\n" msgstr "Aktualizavané balíky:\n" -#: ../unattended-upgrade:929 +#: ../unattended-upgrade:827 msgid "Packages with upgradable origin but kept back:\n" msgstr "Aktualizovateľné, ale podržané balíky:\n" -#: ../unattended-upgrade:934 +#: ../unattended-upgrade:832 msgid "Package installation log:" msgstr "Záznam inštalácií balíkov:" -#: ../unattended-upgrade:937 +#: ../unattended-upgrade:835 msgid "Unattended-upgrades log:\n" msgstr "Záznam bezobslužných aktualizácií:\n" -#: ../unattended-upgrade:965 +#: ../unattended-upgrade:855 #, python-format msgid "Writing dpkg log to '%s'" msgstr "Zapisuje sa záznam dpkg do „%s“" -#: ../unattended-upgrade:1121 +#: ../unattended-upgrade:987 #, python-format msgid "Found %s, but not rebooting because %s is logged in." msgid_plural "Found %s, but not rebooting because %s are logged in." @@ -133,66 +119,66 @@ msgstr[1] "" msgstr[2] "" -#: ../unattended-upgrade:1175 +#: ../unattended-upgrade:1033 #, python-format msgid "package '%s' upgradable but fails to be marked for upgrade (%s)" msgstr "" "balík „%s“ je aktualizovateľný, ale nedarí sa označiť na aktualizáciu (%s)" -#: ../unattended-upgrade:1250 +#: ../unattended-upgrade:1097 #, python-format msgid "Packages that are auto removed: '%s'" msgstr "Automaticky odstránené balíky: „%s“" -#: ../unattended-upgrade:1256 +#: ../unattended-upgrade:1103 #, fuzzy #| msgid "Packages that are auto removed: '%s'" msgid "Packages were successfully auto-removed" msgstr "Automaticky odstránené balíky: „%s“" -#: ../unattended-upgrade:1258 +#: ../unattended-upgrade:1105 #, fuzzy #| msgid "Installing the upgrades failed!" msgid "Auto-removing the packages failed!" msgstr "Inštalácia aktualizácií zlyhala!" -#: ../unattended-upgrade:1259 +#: ../unattended-upgrade:1106 #, fuzzy, python-format #| msgid "error message: '%s'" msgid "Error message: '%s'" msgstr "chybová správa: „%s“" -#: ../unattended-upgrade:1260 +#: ../unattended-upgrade:1107 #, fuzzy, python-format #| msgid "dpkg returned a error! See '%s' for details" msgid "dpkg returned an error! See '%s' for details" msgstr "dpkg vrátil chybu! Podrobnosti nájdete v „%s“" -#: ../unattended-upgrade:1320 +#: ../unattended-upgrade:1125 #, python-format msgid "Initial blacklisted packages: %s" msgstr "Prvotná čierna listina balíkov: %s" -#: ../unattended-upgrade:1325 +#: ../unattended-upgrade:1130 #, fuzzy, python-format #| msgid "Initial blacklisted packages: %s" msgid "Initial whitelisted packages: %s" msgstr "Prvotná čierna listina balíkov: %s" -#: ../unattended-upgrade:1328 +#: ../unattended-upgrade:1133 msgid "Starting unattended upgrades script" msgstr "Spúšťa sa skript bezobslužných aktualizácií" -#: ../unattended-upgrade:1337 +#: ../unattended-upgrade:1136 #, python-format msgid "Allowed origins are: %s" msgstr "Povolené pôvody sú: %s" -#: ../unattended-upgrade:1353 ../unattended-upgrade:1354 +#: ../unattended-upgrade:1152 ../unattended-upgrade:1153 msgid "Unclean dpkg state detected, trying to correct" msgstr "Bol zistený nečistý stav dpkg, prebieha pokus o nápravu" -#: ../unattended-upgrade:1365 +#: ../unattended-upgrade:1164 #, python-format msgid "" "dpkg --configure -a output:\n" @@ -201,52 +187,52 @@ "výstup dpkg --configure -a:\n" "%s" -#: ../unattended-upgrade:1374 +#: ../unattended-upgrade:1173 msgid "Lock could not be acquired (another package manager running?)" msgstr "Zámok sa nepodarilo získať (beží iný správca balíkov?)" -#: ../unattended-upgrade:1376 +#: ../unattended-upgrade:1175 msgid "Cache lock can not be acquired, exiting" msgstr "Nepodarilo sa získať zámok vyrovnávacej pamäte, program končí" -#: ../unattended-upgrade:1383 ../unattended-upgrade:1384 -#: ../unattended-upgrade:1573 ../unattended-upgrade:1574 +#: ../unattended-upgrade:1182 ../unattended-upgrade:1183 +#: ../unattended-upgrade:1363 ../unattended-upgrade:1364 msgid "Cache has broken packages, exiting" msgstr "Vyrovnávacia pamäť obsahuje poškodené balíky, program končí" -#: ../unattended-upgrade:1433 +#: ../unattended-upgrade:1226 #, python-format msgid "GetArchives() failed: '%s'" msgstr "GetArchives() zlyhalo: „%s“" -#: ../unattended-upgrade:1446 ../unattended-upgrade:1447 +#: ../unattended-upgrade:1236 ../unattended-upgrade:1237 #, fuzzy, python-format #| msgid "An error ocured: '%s'" msgid "An error occurred: '%s'" msgstr "Vyskytla sa chyba: „%s“" -#: ../unattended-upgrade:1449 ../unattended-upgrade:1451 +#: ../unattended-upgrade:1239 ../unattended-upgrade:1241 #, python-format msgid "The URI '%s' failed to download, aborting" msgstr "URI „%s“ sa nepodarilo stiahnuť, program končí" -#: ../unattended-upgrade:1455 +#: ../unattended-upgrade:1245 #, python-format msgid "Download finished, but file '%s' not there?!?" msgstr "Sťahovanie dokončené, ale súbor „%s“ nie je na mieste?!?" -#: ../unattended-upgrade:1471 ../unattended-upgrade:1475 +#: ../unattended-upgrade:1261 ../unattended-upgrade:1265 #, python-format msgid "Package '%s' has conffile prompt and needs to be upgraded manually" msgstr "" "Balík „%s“ obsahuje výzvu konfiguračného súboru a musí sa aktualizovať ručne" -#: ../unattended-upgrade:1503 +#: ../unattended-upgrade:1293 #, python-format msgid "package '%s' not upgraded" msgstr "balík „%s“ nebol aktualizovaný" -#: ../unattended-upgrade:1522 +#: ../unattended-upgrade:1311 #, fuzzy #| msgid "No packages found that can be upgraded unattended" msgid "" @@ -254,72 +240,55 @@ "removals" msgstr "Neboli nájdené žiadne balíky, ktoré možno aktualizovať bezobslužne" -#: ../unattended-upgrade:1550 +#: ../unattended-upgrade:1337 #, fuzzy, python-format #| msgid "Packages that are upgraded: %s" msgid "Packages that will be upgraded: %s" msgstr "Aktualizované balíky: %s" -#: ../unattended-upgrade:1647 +#: ../unattended-upgrade:1406 msgid "print debug messages" msgstr "vypisovať ladiace správy" -#: ../unattended-upgrade:1650 +#: ../unattended-upgrade:1409 #, fuzzy #| msgid "print debug messages" msgid "make apt/libapt print verbose debug messages" msgstr "vypisovať ladiace správy" -#: ../unattended-upgrade:1653 +#: ../unattended-upgrade:1412 #, fuzzy #| msgid "print debug messages" msgid "print info messages" msgstr "vypisovať ladiace správy" -#: ../unattended-upgrade:1656 +#: ../unattended-upgrade:1415 msgid "Simulation, download but do not install" msgstr "Simulácia - sťahovať, ale neinštalovať" -#: ../unattended-upgrade:1659 -#, fuzzy -#| msgid "Simulation, download but do not install" -msgid "Only download, do not even try to install." -msgstr "Simulácia - sťahovať, ale neinštalovať" - -#: ../unattended-upgrade:1662 -msgid "Upgrade in minimal steps (and allow interrupting with SIGTERM" +#: ../unattended-upgrade:1418 +msgid "Upgrade in minimal steps (and allow interrupting with SIGINT" msgstr "" -"Aktualizovať po minimálnych krokoch (a umožniť prerušenie pomocou SIGTERM" +"Aktualizovať po minimálnych krokoch (a umožniť prerušenie pomocou SIGINT" -#: ../unattended-upgrade:1671 +#: ../unattended-upgrade:1427 msgid "You need to be root to run this application" msgstr "Aby ste mohli spustiť túto aplikáciu, musíte byť root" -#: ../unattended-upgrade-shutdown:76 +#: ../unattended-upgrade-shutdown:72 msgid "Unattended-upgrade in progress during shutdown, sleeping for 5s" msgstr "Unattended-upgrade prebieha počas vypínania, čaká sa 5 sekúnd" -#: ../unattended-upgrade-shutdown:139 +#: ../unattended-upgrade-shutdown:125 #, fuzzy #| msgid "unattended-upgrades result for '%s'" msgid "Running unattended-upgrades in shutdown mode" msgstr "výsledok unattended-upgrades pre „%s“" -#: ../unattended-upgrade-shutdown:165 +#: ../unattended-upgrade-shutdown:153 #, python-format msgid "Giving up on lockfile after %s delay" msgstr "Vzdáva sa pokus o získanie zámku po %s" -#: ../unattended-upgrade-shutdown:178 -msgid "" -"Unattended-upgrades stopped. There may be upgrades left to be installed in " -"the next run." -msgstr "" - -#, fuzzy -#~| msgid "unattended-upgrades result for '%s'" -#~ msgid "unattended-upgrades result for '%s': '%s'" -#~ msgstr "výsledok unattended-upgrades pre „%s“" - #~ msgid "Progress: %s %%: (%s)" #~ msgstr "Priebeh: %s %%: (%s)" diff -Nru unattended-upgrades-0.96/po/unattended-upgrades.pot unattended-upgrades-0.93.1ubuntu8/po/unattended-upgrades.pot --- unattended-upgrades-0.96/po/unattended-upgrades.pot 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/po/unattended-upgrades.pot 2016-12-11 11:31:26.000000000 +0100 @@ -9,7 +9,7 @@ "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-02 12:27+0200\n" -"PO-Revision-Date: 2017-08-22 13:11+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" @@ -18,259 +18,236 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: ../unattended-upgrade:182 +#: ../unattended-upgrade:162 #, python-format msgid "Progress: %s %% (%s)" msgstr "" -#: ../unattended-upgrade:376 ../unattended-upgrade:393 -#, python-format -msgid "Unable to parse %s." -msgstr "" - -#: ../unattended-upgrade:479 ../unattended-upgrade:577 -#: ../unattended-upgrade-shutdown:182 +#: ../unattended-upgrade:418 ../unattended-upgrade:501 +#: ../unattended-upgrade-shutdown:161 msgid "All upgrades installed" msgstr "" -#: ../unattended-upgrade:481 ../unattended-upgrade:569 +#: ../unattended-upgrade:420 ../unattended-upgrade:493 msgid "Installing the upgrades failed!" msgstr "" -#: ../unattended-upgrade:482 ../unattended-upgrade:570 +#: ../unattended-upgrade:421 ../unattended-upgrade:494 #, python-format msgid "error message: '%s'" msgstr "" -#: ../unattended-upgrade:483 ../unattended-upgrade:571 +#: ../unattended-upgrade:422 ../unattended-upgrade:495 #, python-format msgid "dpkg returned a error! See '%s' for details" msgstr "" -#: ../unattended-upgrade:541 -#, python-format -msgid "Some packages can not be upgraded: %s" -msgstr "" - -#: ../unattended-upgrade:895 +#: ../unattended-upgrade:795 msgid "" "No '/usr/bin/mail' or '/usr/sbin/sendmail',can not send mail. You probably " "want to install the 'mailx' package." msgstr "" -#: ../unattended-upgrade:909 -msgid "[reboot required]" -msgstr "" - -#: ../unattended-upgrade:911 -msgid "[package on hold]" +#: ../unattended-upgrade:811 +#, python-format +msgid "[reboot required] unattended-upgrades result for '%s': %s" msgstr "" -#: ../unattended-upgrade:914 -msgid "" -"{hold_flag}{reboot_flag} unattended-upgrades result for '{machine}': {result}" +#: ../unattended-upgrade:814 +#, python-format +msgid "unattended-upgrades result for '%s': '%s'" msgstr "" -#: ../unattended-upgrade:918 +#: ../unattended-upgrade:816 #, python-format msgid "" "Unattended upgrade returned: %s\n" "\n" msgstr "" -#: ../unattended-upgrade:921 +#: ../unattended-upgrade:819 msgid "" "Warning: A reboot is required to complete this upgrade.\n" "\n" msgstr "" -#: ../unattended-upgrade:923 +#: ../unattended-upgrade:821 msgid "Packages that were upgraded:\n" msgstr "" -#: ../unattended-upgrade:925 +#: ../unattended-upgrade:823 msgid "Packages that attempted to upgrade:\n" msgstr "" -#: ../unattended-upgrade:929 +#: ../unattended-upgrade:827 msgid "Packages with upgradable origin but kept back:\n" msgstr "" -#: ../unattended-upgrade:934 +#: ../unattended-upgrade:832 msgid "Package installation log:" msgstr "" -#: ../unattended-upgrade:937 +#: ../unattended-upgrade:835 msgid "Unattended-upgrades log:\n" msgstr "" -#: ../unattended-upgrade:965 +#: ../unattended-upgrade:855 #, python-format msgid "Writing dpkg log to '%s'" msgstr "" -#: ../unattended-upgrade:1121 +#: ../unattended-upgrade:987 #, python-format msgid "Found %s, but not rebooting because %s is logged in." msgid_plural "Found %s, but not rebooting because %s are logged in." msgstr[0] "" msgstr[1] "" -#: ../unattended-upgrade:1175 +#: ../unattended-upgrade:1033 #, python-format msgid "package '%s' upgradable but fails to be marked for upgrade (%s)" msgstr "" -#: ../unattended-upgrade:1250 +#: ../unattended-upgrade:1097 #, python-format msgid "Packages that are auto removed: '%s'" msgstr "" -#: ../unattended-upgrade:1256 +#: ../unattended-upgrade:1103 msgid "Packages were successfully auto-removed" msgstr "" -#: ../unattended-upgrade:1258 +#: ../unattended-upgrade:1105 msgid "Auto-removing the packages failed!" msgstr "" -#: ../unattended-upgrade:1259 +#: ../unattended-upgrade:1106 #, python-format msgid "Error message: '%s'" msgstr "" -#: ../unattended-upgrade:1260 +#: ../unattended-upgrade:1107 #, python-format msgid "dpkg returned an error! See '%s' for details" msgstr "" -#: ../unattended-upgrade:1320 +#: ../unattended-upgrade:1125 #, python-format msgid "Initial blacklisted packages: %s" msgstr "" -#: ../unattended-upgrade:1325 +#: ../unattended-upgrade:1130 #, python-format msgid "Initial whitelisted packages: %s" msgstr "" -#: ../unattended-upgrade:1328 +#: ../unattended-upgrade:1133 msgid "Starting unattended upgrades script" msgstr "" -#: ../unattended-upgrade:1337 +#: ../unattended-upgrade:1136 #, python-format msgid "Allowed origins are: %s" msgstr "" -#: ../unattended-upgrade:1353 ../unattended-upgrade:1354 +#: ../unattended-upgrade:1152 ../unattended-upgrade:1153 msgid "Unclean dpkg state detected, trying to correct" msgstr "" -#: ../unattended-upgrade:1365 +#: ../unattended-upgrade:1164 #, python-format msgid "" "dpkg --configure -a output:\n" "%s" msgstr "" -#: ../unattended-upgrade:1374 +#: ../unattended-upgrade:1173 msgid "Lock could not be acquired (another package manager running?)" msgstr "" -#: ../unattended-upgrade:1376 +#: ../unattended-upgrade:1175 msgid "Cache lock can not be acquired, exiting" msgstr "" -#: ../unattended-upgrade:1383 ../unattended-upgrade:1384 -#: ../unattended-upgrade:1573 ../unattended-upgrade:1574 +#: ../unattended-upgrade:1182 ../unattended-upgrade:1183 +#: ../unattended-upgrade:1363 ../unattended-upgrade:1364 msgid "Cache has broken packages, exiting" msgstr "" -#: ../unattended-upgrade:1433 +#: ../unattended-upgrade:1226 #, python-format msgid "GetArchives() failed: '%s'" msgstr "" -#: ../unattended-upgrade:1446 ../unattended-upgrade:1447 +#: ../unattended-upgrade:1236 ../unattended-upgrade:1237 #, python-format msgid "An error occurred: '%s'" msgstr "" -#: ../unattended-upgrade:1449 ../unattended-upgrade:1451 +#: ../unattended-upgrade:1239 ../unattended-upgrade:1241 #, python-format msgid "The URI '%s' failed to download, aborting" msgstr "" -#: ../unattended-upgrade:1455 +#: ../unattended-upgrade:1245 #, python-format msgid "Download finished, but file '%s' not there?!?" msgstr "" -#: ../unattended-upgrade:1471 ../unattended-upgrade:1475 +#: ../unattended-upgrade:1261 ../unattended-upgrade:1265 #, python-format msgid "Package '%s' has conffile prompt and needs to be upgraded manually" msgstr "" -#: ../unattended-upgrade:1503 +#: ../unattended-upgrade:1293 #, python-format msgid "package '%s' not upgraded" msgstr "" -#: ../unattended-upgrade:1522 +#: ../unattended-upgrade:1311 msgid "" "No packages found that can be upgraded unattended and no pending auto-" "removals" msgstr "" -#: ../unattended-upgrade:1550 +#: ../unattended-upgrade:1337 #, python-format msgid "Packages that will be upgraded: %s" msgstr "" -#: ../unattended-upgrade:1647 +#: ../unattended-upgrade:1406 msgid "print debug messages" msgstr "" -#: ../unattended-upgrade:1650 +#: ../unattended-upgrade:1409 msgid "make apt/libapt print verbose debug messages" msgstr "" -#: ../unattended-upgrade:1653 +#: ../unattended-upgrade:1412 msgid "print info messages" msgstr "" -#: ../unattended-upgrade:1656 +#: ../unattended-upgrade:1415 msgid "Simulation, download but do not install" msgstr "" -#: ../unattended-upgrade:1659 -msgid "Only download, do not even try to install." +#: ../unattended-upgrade:1418 +msgid "Upgrade in minimal steps (and allow interrupting with SIGINT" msgstr "" -#: ../unattended-upgrade:1662 -msgid "Upgrade in minimal steps (and allow interrupting with SIGTERM" -msgstr "" - -#: ../unattended-upgrade:1671 +#: ../unattended-upgrade:1427 msgid "You need to be root to run this application" msgstr "" -#: ../unattended-upgrade-shutdown:76 +#: ../unattended-upgrade-shutdown:72 msgid "Unattended-upgrade in progress during shutdown, sleeping for 5s" msgstr "" -#: ../unattended-upgrade-shutdown:139 +#: ../unattended-upgrade-shutdown:125 msgid "Running unattended-upgrades in shutdown mode" msgstr "" -#: ../unattended-upgrade-shutdown:165 +#: ../unattended-upgrade-shutdown:153 #, python-format msgid "Giving up on lockfile after %s delay" msgstr "" - -#: ../unattended-upgrade-shutdown:178 -msgid "" -"Unattended-upgrades stopped. There may be upgrades left to be installed in " -"the next run." -msgstr "" diff -Nru unattended-upgrades-0.96/README.md unattended-upgrades-0.93.1ubuntu8/README.md --- unattended-upgrades-0.96/README.md 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/README.md 2016-12-11 11:31:26.000000000 +0100 @@ -10,7 +10,7 @@ "sudo dpkg-reconfigure -plow unattended-upgrades". It will not install packages that require dependencies that can't be -fetched from allowed origins, and it will check for conffile prompts +fetched from allowed origins and it will check for conffile prompts before the install and holds back any package that requires them. Setup @@ -63,10 +63,10 @@ }; ``` -All operations are logged in /var/log/unattended-upgrades/. This +All operations are be logged in /var/log/unattended-upgrades/. This includes the dpkg output as well. The file /etc/logrotate.d/unattended-upgrades controls how long logfiles are -kept, and how often they are rotated. See the `logrotate` manpage for +kept and how often they are rotated. See the `logrotate` manpage for details. If you want mail support you need to have a mail-transport-agent (e.g @@ -75,14 +75,14 @@ Debugging --------- -If something goes wrong, or if you want to report a bug about the way -the script works, it's a good idea to run: +If something goes wrong or if you want to report a bug about the way +the script works its a good idea to run: ``` $ sudo unattended-upgrade --debug --dry-run ``` and look at the resulting logfile in: /var/log/unattended-upgrades/unattended-upgrades.log -It will also contain additional debug information. +then. It will contain additional debug information. Manual Setup @@ -95,7 +95,7 @@ APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Unattended-Upgrade "1"; ``` -This means that it will check for updates every day, and install them +This means that it will check for upates every day and install them (if that is possible). If you have update-notifier installed, it will setup /etc/apt/apt.conf.d/10periodic. Just edit this file then to fit your needs. If you do not have this file, just create it or @@ -125,8 +125,8 @@ No packages that match the regular expressions in this list will be marked for upgrade. If a package A has a blacklisted package B as a dependency then both packages A and B will not be upgraded. Note - that it's a list of regular expressions, so you may need to escape special - characters like "+" as "\\+". + that its a list of regular expressions so you may need to escape special + charackters like "+" as "\+". Example: ``` @@ -139,7 +139,7 @@ Only packages that match the regular expressions in this list will be marked for upgrade. By default dependencies of whitelisted packages - are allowed. This can be changed to only ever allow whitelisted + are allowed. This can be changed to allow only ever allow whitelisted packages with the `Unattended-Upgrade::Package-Whitelist-Strict` boolean option. @@ -153,8 +153,8 @@ * `Unattended-Upgrade::Package-Whitelist-Strict` - boolean (default:False) When set, allow only packages in `Unattended-Upgrade::Package-Whitelist` - to be upgraded. This means that you also need to list all the dependencies - of a whitelisted package, e.g. if A depends on B and only A is + to be upgraded. This means that you also need to list all dependencies + of a whitelisted packages, e.g. if A depends on B and only A is whitelisted, it will be held back. Example: @@ -168,22 +168,22 @@ detected. This defaults to true to ensure that updates get installed even when the system got interrupted during a previous run. -* `Unattended-Upgrade::MinimalSteps` - boolean (default:True) +* `Unattended-Upgrade::MinimalSteps` - boolean (default:False) Optimize for safety against e.g. power failure by performing the upgrade - in minimal self-contained chunks. This also allows sending a SIGTERM to - unattended-upgrades, and it will stop the upgrade when it finishes the + in minimal self-contained chunks. This also allows sending a SIGINT to + unattended-upgrades and it will stop the upgrade when it finishes the current upgrade step. * `Unattended-Upgrade::InstallOnShutdown` - boolean (default:False) Perform the upgrade when the machine is shutting down instead of - doing it in the background while the machine is running. + doing it in he background while the machine is running. * `Unattended-Upgrade::Mail` - string (default:"") Send an email to this address with information about the packages - upgraded. If empty or unset no email is sent. This option requires + upgraded. If empty or unset no email is send. This option requires a working local mail setup. Example: @@ -202,21 +202,21 @@ * `Unattended-Upgrade::MailOnlyOnError` - boolean (default:False) - Only generate an email if some problem occurred during the + Only generate a email if some problem occured during the unattended-upgrades run. * `Unattended-Upgrade::Remove-Unused-Dependencies` - boolean (default:False) - Remove all unused dependencies after the upgrade has finished. + Remove all unused dependencies after the upgrade finished. * `Unattended-Upgrade::Remove-New-Unused-Dependencies` - boolean (default:True) - Remove any new unused dependencies after the upgrade has finished. + Remove any new unused dependencies after the upgrade finished. * `Unattended-Upgrade::Automatic-Reboot` - boolean (default:False) Automatically reboot *WITHOUT CONFIRMATION* if the file - /var/run/reboot-required is found after the upgrade. + /var/run/reboot-required is found after the upgrade * `Unattended-Upgrade::Automatic-Reboot-WithUsers` - boolean (default:True) @@ -225,12 +225,12 @@ * `Unattended-Upgrade::Keep-Debs-After-Install` - boolean (default:False) Keep the downloaded deb packages after successful installs. By default - these are removed after successful installs. + those are removed after successful installs. * `Acquire::http::Dl-Limit` - integer (default:0) Use apt bandwidth limit feature when fetching the upgrades. The - number is how many kb/sec apt is allowed to use. + number is how many kb/sec apt is allowed to use Example - limit the download to 70kb/sec: ``` @@ -239,14 +239,14 @@ * `Dpkg::Options` - list of strings - Set a dpkg command-line option. This is useful to e.g. force conffile + Set a dpkg commandline option. This is useful to e.g. force conffile handling in dpkg. Example - force dpkg to keep the old configuration files: ``` Dpkg::Options {"--force-confold"}; ``` - Note that unattended-upgrades detects this option, and ensures that + Note that unattended-upgrades detects this options and ensures that packages with configuration prompts will never be held back. * `Unattended-Upgrade::Update-Days` - list of strings (default:empty) @@ -255,9 +255,9 @@ can be specified as localized abbreviated or full names. Or as integers where "0" is Sunday, "1" is Monday etc. - Example - apply updates only on Monday and Friday: + Example - apply updates only on Monday and Friday ``` - Unattended-Upgrade::Update-Days {"Mon";"Fri"}; + Unattended-Upgrade::Update-Days {"Mon","Fri"}; ``` The default is an empty list which means updates are applied every day. @@ -265,24 +265,24 @@ * `Unattended-Upgrade::SyslogEnable` - boolean (default:False) Write events to syslog, which is useful in environments where - syslog messages are sent to a central store. + syslog is shipped to a central store. - Example - Enable writing to syslog: + Example - Enable writing to syslog ``` Unattended-Upgrade::SyslogEnable true; ``` - The default is False - events will not be written to syslog. + The default is False - events will not be written to syslog * `Unattended-Upgrade::SyslogFacility` - string (default:"daemon") - Write events to the specified syslog facility, or the daemon facility if not specified. - Requires the `Unattended-Upgrade::SyslogEnable` option to be set to true. + Write events to the specified facility, or the daemon facility if not specified. + Requires the `Unattended-Upgrade::SyslogEnable` option to be set to true - Example - Use the syslog auth facility: + Example - Use the syslog auth facility ``` Unattended-Upgrade::SyslogFacility "auth"; ``` - The default is the daemon facility. + The default is the daemon facility [travis-image]: https://travis-ci.org/mvo5/unattended-upgrades.svg?branch=debian/sid diff -Nru unattended-upgrades-0.96/spread_tests/simple/task.yaml unattended-upgrades-0.93.1ubuntu8/spread_tests/simple/task.yaml --- unattended-upgrades-0.96/spread_tests/simple/task.yaml 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/spread_tests/simple/task.yaml 1970-01-01 01:00:00.000000000 +0100 @@ -1,4 +0,0 @@ -summary: Run unattended-upgrades and ensure it does something - -execute: | - unattended-upgrades -v | MATCH "Allowed origins" diff -Nru unattended-upgrades-0.96/spread.yaml unattended-upgrades-0.93.1ubuntu8/spread.yaml --- unattended-upgrades-0.96/spread.yaml 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/spread.yaml 1970-01-01 01:00:00.000000000 +0100 @@ -1,24 +0,0 @@ -project: unattended-upgrades - -backends: - qemu: - systems: - - ubuntu-16.04-64: - username: ubuntu - password: ubuntu - lxd: - systems: - - ubuntu-16.04 - -path: /home/ubuntu/unattended-upgrades - -suites: - spread_tests/: - summary: run integration test - prepare: | - echo "deb http://security.ubuntu.com/ubuntu $(lsb_release -c -s)-security main restricted universe" >> /etc/apt/sources.list - apt update - apt install -y fakeroot - apt build-dep -y /home/ubuntu/unattended-upgrades - (cd /home/ubuntu/unattended-upgrades && dpkg-buildpackage) - dpkg -i /home/ubuntu/*.deb diff -Nru unattended-upgrades-0.96/test/.coverage unattended-upgrades-0.93.1ubuntu8/test/.coverage --- unattended-upgrades-0.96/test/.coverage 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/test/.coverage 2017-05-18 01:28:32.000000000 +0200 @@ -1 +1 @@ -!coverage.py: This is a private format, don't read it directly!{"lines": {"/home/rbalint/projects/deb/build-area/unattended-upgrades-0.96/test/test_minimal_partitions.py": [3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 16, 18, 21, 25, 28, 33, 35, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 50, 51, 54, 55, 58, 60, 61, 62, 63, 64, 66, 67, 71, 74, 75, 76, 77], "/home/rbalint/projects/deb/build-area/unattended-upgrades-0.96/test/test_pyflakes.py": [1, 2, 3, 6, 7, 9, 10, 12, 13, 14, 16, 19, 20], "/home/rbalint/projects/deb/build-area/unattended-upgrades-0.96/test/test_reboot.py": [3, 4, 5, 6, 8, 9, 11, 15, 18, 20, 22, 23, 24, 25, 26, 28, 29, 30, 32, 34, 35, 36, 38, 40, 41, 42, 44, 46, 47, 49, 51, 52, 53, 54, 56, 59, 60, 61, 62, 64, 65, 66, 68, 71, 72, 74, 75, 76, 77, 78, 79, 81, 84, 85, 86, 87, 90, 91, 92], "/home/rbalint/projects/deb/build-area/unattended-upgrades-0.96/test/test_conffile.py": [3, 4, 5, 7, 8, 10, 16, 18, 19, 20, 21, 22, 25, 27, 30, 31, 32, 34, 37, 38, 39, 40, 42, 45, 46, 47, 49, 52, 53, 54, 56, 58, 59, 60, 62, 64, 65, 66, 68, 71, 72, 73, 75, 76, 77, 78, 79, 82, 86, 88, 89, 91, 92, 94, 95, 96, 98, 99, 100, 103, 104, 105], "/home/rbalint/projects/deb/build-area/unattended-upgrades-0.96/test/test_origin_pattern.py": [3, 4, 5, 7, 9, 10, 19, 20, 23, 24, 27, 28, 31, 32, 33, 34, 37, 38, 41, 43, 44, 46, 47, 49, 50, 51, 52, 54, 55, 56, 58, 60, 61, 62, 63, 64, 65, 67, 69, 70, 72, 74, 75, 76, 77, 79, 80, 81, 83, 84, 85, 86, 87, 89, 90, 91, 92, 93, 95, 96, 98, 99, 101, 102, 103, 104, 105, 107, 109, 110, 111, 112, 113, 115, 117, 118, 119, 121, 122, 124, 125, 126, 128, 129, 130, 131, 133, 134, 135, 136, 137, 139, 140, 142, 143, 145, 146, 147, 149, 150, 151, 152, 153, 154, 156, 157, 158, 159, 160, 161, 162, 163, 164, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 186, 187, 189, 190, 192, 193, 195, 196, 198, 199, 201, 202, 204, 205, 206, 207, 208, 209, 210, 213, 214, 215], "/home/rbalint/projects/deb/build-area/unattended-upgrades-0.96/test/test_substitute.py": [3, 4, 5, 6, 8, 9, 12, 14, 16, 17, 19, 21, 22, 23, 25, 27, 28, 29, 30, 31, 34, 35, 36], "/home/rbalint/projects/deb/build-area/unattended-upgrades-0.96/test/test_mail.py": [3, 5, 6, 7, 8, 9, 10, 13, 14, 16, 17, 25, 27, 28, 32, 35, 36, 44, 45, 46, 47, 48, 49, 50, 51, 55, 58, 59, 62, 65, 67, 68, 69, 71, 72, 74, 75, 76, 77, 79, 81, 82, 83, 85, 89, 90, 94, 95, 97, 98, 99, 100, 101, 102, 104, 105, 106, 107, 108, 111, 112, 113, 114, 115, 117, 118, 119, 120, 121, 122, 123, 125, 128, 129, 130, 131, 132, 134, 135, 136, 137, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 151, 152, 153, 154, 155, 156, 157, 159, 161, 162, 163, 164, 165, 166, 167, 168, 169, 171, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 189, 191, 192, 193, 195, 196, 197, 199, 200, 201, 202, 203, 204, 205, 206, 209, 211, 212, 213, 215, 216, 217, 220, 223, 225, 226, 227, 229, 230, 231, 234, 235, 237, 238, 239, 241, 243, 244, 245, 246, 251, 254, 256, 257, 258, 259, 262, 264], "/home/rbalint/projects/deb/build-area/unattended-upgrades-0.96/test/test_remove_unused.py": [128, 129, 3, 132, 5, 134, 7, 8, 9, 11, 13, 16, 17, 18, 19, 20, 21, 22, 25, 4, 27, 28, 29, 30, 32, 33, 53, 54, 55, 56, 57, 59, 60, 62, 63, 64, 65, 73, 75, 76, 77, 78, 80, 81, 83, 84, 85, 87, 88, 89, 90, 96, 97, 98, 99, 100, 101, 103, 105, 106, 107, 109, 110, 111, 112, 118, 119, 120, 121, 122, 123, 125, 127], "/home/rbalint/projects/deb/build-area/unattended-upgrades-0.96/test/test_untrusted.py": [3, 4, 6, 7, 8, 10, 12, 15, 16, 17, 18, 19, 20, 21, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 40, 42, 45, 46, 47, 49, 50, 51, 52, 53, 54, 57, 59], "/home/rbalint/projects/deb/build-area/unattended-upgrades-0.96/test/test_pep8.py": [3, 4, 5, 8, 11, 13, 14, 16, 17, 18, 20, 21, 24, 25], "/home/rbalint/projects/deb/build-area/unattended-upgrades-0.96/test/test_log_install_progress.py": [3, 4, 5, 6, 7, 8, 9, 11, 13, 16, 17, 18, 19, 20, 23, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 38, 39, 40], "/home/rbalint/projects/deb/build-area/unattended-upgrades-0.96/test/test_regression.py": [64, 65, 4, 5, 6, 7, 8, 9, 10, 62, 12, 17, 20, 21, 24, 63, 28, 30, 31], "/home/rbalint/projects/deb/build-area/unattended-upgrades-0.96/unattended-upgrade": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 45, 46, 51, 52, 54, 55, 56, 57, 58, 63, 67, 68, 69, 73, 74, 75, 76, 78, 79, 80, 81, 84, 85, 86, 89, 92, 93, 94, 96, 100, 102, 106, 109, 110, 113, 115, 117, 118, 120, 122, 124, 126, 128, 137, 139, 140, 143, 144, 164, 167, 169, 170, 172, 173, 174, 175, 176, 177, 179, 181, 182, 184, 218, 224, 232, 234, 235, 236, 237, 238, 239, 240, 241, 243, 246, 247, 249, 252, 255, 269, 271, 272, 273, 275, 277, 278, 280, 282, 283, 284, 285, 289, 292, 295, 297, 299, 300, 301, 302, 304, 306, 307, 308, 309, 312, 318, 319, 320, 321, 322, 324, 327, 334, 340, 341, 342, 345, 347, 350, 352, 355, 358, 359, 360, 361, 363, 364, 366, 368, 370, 371, 373, 374, 378, 381, 387, 388, 389, 390, 391, 395, 398, 405, 406, 407, 408, 409, 411, 412, 414, 415, 419, 422, 423, 424, 425, 426, 427, 428, 430, 431, 432, 435, 436, 437, 439, 442, 448, 453, 457, 460, 461, 462, 463, 465, 466, 467, 472, 475, 492, 493, 496, 499, 502, 503, 505, 506, 507, 510, 511, 512, 519, 520, 525, 526, 528, 529, 530, 531, 539, 540, 541, 542, 545, 547, 550, 551, 552, 554, 555, 558, 559, 565, 566, 574, 575, 576, 577, 578, 579, 582, 584, 586, 587, 588, 589, 590, 593, 595, 596, 597, 598, 599, 600, 603, 606, 607, 608, 609, 613, 617, 619, 622, 624, 625, 628, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 645, 646, 647, 648, 650, 651, 652, 653, 657, 658, 659, 660, 661, 666, 668, 671, 674, 675, 676, 677, 684, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 699, 701, 702, 705, 706, 707, 708, 709, 710, 711, 712, 713, 717, 718, 719, 720, 721, 722, 723, 727, 728, 730, 731, 734, 735, 736, 737, 738, 741, 743, 747, 749, 750, 751, 752, 754, 759, 760, 761, 762, 763, 766, 767, 769, 770, 773, 774, 779, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 796, 798, 799, 800, 801, 802, 803, 804, 805, 808, 811, 812, 813, 814, 818, 820, 825, 827, 828, 829, 831, 832, 835, 842, 843, 845, 848, 852, 853, 857, 858, 859, 860, 861, 862, 863, 866, 869, 870, 871, 872, 875, 876, 877, 879, 880, 881, 882, 883, 884, 885, 888, 891, 892, 893, 894, 901, 903, 904, 905, 906, 909, 911, 912, 913, 914, 916, 917, 918, 919, 920, 921, 922, 923, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 940, 942, 943, 944, 945, 950, 953, 962, 963, 965, 967, 968, 973, 974, 975, 977, 978, 979, 980, 982, 983, 984, 985, 994, 997, 1000, 1003, 1004, 1005, 1006, 1009, 1010, 1012, 1015, 1017, 1018, 1020, 1021, 1022, 1025, 1029, 1030, 1033, 1034, 1035, 1036, 1037, 1039, 1040, 1041, 1042, 1044, 1045, 1046, 1048, 1049, 1050, 1053, 1054, 1055, 1056, 1057, 1061, 1065, 1066, 1067, 1084, 1087, 1089, 1092, 1094, 1097, 1102, 1103, 1104, 1107, 1110, 1111, 1112, 1113, 1114, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1129, 1130, 1131, 1132, 1135, 1137, 1138, 1140, 1141, 1144, 1153, 1154, 1155, 1156, 1157, 1159, 1163, 1169, 1170, 1171, 1181, 1188, 1189, 1192, 1193, 1194, 1195, 1197, 1198, 1199, 1200, 1201, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1213, 1215, 1216, 1217, 1218, 1219, 1221, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1234, 1236, 1237, 1241, 1243, 1244, 1246, 1247, 1248, 1249, 1250, 1251, 1254, 1255, 1256, 1262, 1265, 1277, 1280, 1281, 1282, 1302, 1305, 1306, 1309, 1312, 1316, 1319, 1320, 1321, 1324, 1325, 1326, 1328, 1331, 1332, 1337, 1340, 1345, 1371, 1372, 1380, 1381, 1382, 1389, 1390, 1392, 1394, 1395, 1396, 1401, 1402, 1405, 1406, 1407, 1408, 1409, 1413, 1416, 1417, 1419, 1420, 1421, 1422, 1423, 1427, 1430, 1431, 1434, 1435, 1437, 1440, 1443, 1444, 1445, 1448, 1454, 1460, 1462, 1483, 1485, 1487, 1508, 1511, 1512, 1513, 1514, 1516, 1519, 1520, 1521, 1535, 1536, 1537, 1544, 1545, 1546, 1549, 1550, 1553, 1554, 1559, 1560, 1562, 1563, 1564, 1565, 1566, 1567, 1570, 1571, 1572, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1586, 1587, 1589, 1590, 1591, 1592, 1593, 1594, 1596, 1597, 1598, 1599, 1602, 1603, 1604, 1605, 1608, 1609, 1610, 1616, 1618, 1620, 1621, 1624, 1625, 1634], "/home/rbalint/projects/deb/build-area/unattended-upgrades-0.96/test/test_rewind.py": [3, 4, 6, 7, 8, 10, 12, 15, 16, 17, 18, 19, 20, 21, 24, 26, 27, 28, 29, 30, 31, 32, 33, 35, 37, 38, 39, 40, 41, 42, 43, 44, 47, 48, 49, 50], "/home/rbalint/projects/deb/build-area/unattended-upgrades-0.96/test/test_logdir.py": [3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 16, 17, 18, 19, 22, 24, 25, 26, 27, 29, 31, 32, 33, 34, 35, 37, 40, 41, 42, 43, 44, 45, 46, 47, 50, 51, 52]}} \ No newline at end of file +!coverage.py: This is a private format, don't read it directly!{"lines": {"/home/egon/devel/unattended-upgrades/build-area/unattended-upgrades-0.93.1/test/test_conffile.py": [3, 4, 5, 7, 9, 15, 17, 18, 19, 20, 21, 24, 26, 29, 30, 31, 33, 36, 37, 38, 39, 41, 44, 45, 46, 48, 51, 52, 53, 55, 57, 58, 59, 61, 63, 64, 65, 67, 70, 71, 72, 74, 75, 76, 77, 78, 81, 85, 87, 88, 90, 91, 93, 94, 95, 97, 98, 99, 102, 103, 104], "/home/egon/devel/unattended-upgrades/build-area/unattended-upgrades-0.93.1/test/test_pep8.py": [3, 4, 5, 8, 11, 13, 14, 16, 17, 18, 20, 21, 24, 25], "/home/bdmurray/source-trees/unattended-upgrades/unattended-upgrades-0.93.1ubuntu6/test/test_dev_release.py": [3, 4, 6, 8, 10, 13, 14, 15, 16, 17, 18, 21, 23, 24, 25, 26, 27, 29, 30, 32, 33, 34, 35, 36, 39, 40, 41, 43, 44, 45, 46, 47, 50, 52], "/home/bdmurray/source-trees/unattended-upgrades/unattended-upgrades-0.93.1ubuntu6/test/test_rewind.py": [3, 4, 6, 8, 10, 13, 14, 15, 16, 17, 18, 21, 23, 24, 25, 26, 27, 28, 29, 30, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 46, 47], "/home/egon/devel/unattended-upgrades/build-area/unattended-upgrades-0.93.1/test/test_mail.py": [3, 5, 6, 7, 8, 9, 10, 13, 15, 16, 24, 26, 27, 31, 34, 35, 43, 44, 45, 46, 47, 48, 49, 50, 54, 57, 58, 61, 64, 66, 67, 68, 70, 71, 73, 74, 75, 76, 78, 80, 81, 82, 84, 88, 89, 93, 94, 96, 97, 98, 99, 100, 101, 103, 104, 105, 106, 107, 110, 111, 112, 113, 114, 116, 117, 118, 119, 120, 121, 122, 124, 127, 128, 129, 130, 131, 133, 134, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 150, 151, 152, 153, 154, 155, 156, 158, 160, 161, 162, 164, 165, 166, 168, 169, 170, 171, 172, 173, 174, 175, 178, 180, 181, 182, 184, 185, 186, 189, 192, 194, 195, 196, 198, 199, 200, 203, 204, 206, 207, 208, 210, 212, 213, 214, 215, 220, 223, 225, 226, 227, 228, 231, 233], "/home/egon/devel/unattended-upgrades/build-area/unattended-upgrades-0.93.1/test/test_rewind.py": [3, 4, 6, 8, 10, 13, 14, 15, 16, 17, 18, 21, 23, 24, 25, 26, 27, 28, 29, 30, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 46, 47], "/home/egon/devel/unattended-upgrades/build-area/unattended-upgrades-0.93.1/test/test_reboot.py": [3, 4, 5, 6, 8, 10, 14, 17, 19, 21, 22, 23, 24, 25, 27, 28, 29, 31, 33, 34, 35, 37, 39, 40, 41, 43, 45, 46, 48, 50, 51, 52, 53, 55, 58, 59, 60, 61, 63, 64, 65, 67, 70, 71, 73, 74, 75, 76, 77, 78, 80, 83, 84, 85, 86, 89, 90, 91], "/home/bdmurray/source-trees/unattended-upgrades/unattended-upgrades-0.93.1ubuntu6/test/test_untrusted.py": [3, 4, 6, 8, 10, 13, 14, 15, 16, 17, 18, 21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 37, 38, 39, 40, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 59, 60, 61, 62], "/home/bdmurray/source-trees/unattended-upgrades/unattended-upgrades-0.93.1ubuntu6/test/test_conffile.py": [3, 4, 5, 7, 9, 15, 17, 18, 19, 20, 21, 24, 26, 29, 30, 31, 33, 36, 37, 38, 39, 41, 44, 45, 46, 48, 51, 52, 53, 55, 57, 58, 59, 61, 63, 64, 65, 67, 70, 71, 72, 74, 75, 76, 77, 78, 81, 85, 87, 88, 90, 91, 93, 94, 95, 97, 98, 99, 102, 103, 104], "/home/bdmurray/source-trees/unattended-upgrades/unattended-upgrades-0.93.1ubuntu6/test/test_remove_unused.py": [129, 3, 4, 5, 7, 9, 11, 14, 15, 16, 17, 18, 19, 22, 24, 25, 26, 27, 29, 30, 50, 51, 52, 53, 54, 56, 57, 59, 60, 61, 62, 117, 70, 72, 73, 74, 75, 77, 78, 80, 81, 82, 84, 85, 86, 87, 94, 95, 96, 97, 98, 100, 102, 103, 104, 106, 107, 108, 109, 116, 131, 118, 119, 120, 122, 124, 125, 126], "/home/egon/devel/unattended-upgrades/build-area/unattended-upgrades-0.93.1/test/test_remove_unused.py": [129, 3, 4, 5, 7, 9, 11, 14, 15, 16, 17, 18, 19, 22, 24, 25, 26, 27, 29, 30, 50, 51, 52, 53, 54, 56, 57, 59, 60, 61, 62, 70, 72, 73, 74, 75, 77, 78, 80, 81, 82, 84, 85, 86, 87, 93, 94, 95, 96, 97, 99, 101, 102, 103, 105, 106, 107, 108, 114, 115, 116, 117, 118, 120, 122, 123, 124, 127], "/home/bdmurray/source-trees/unattended-upgrades/unattended-upgrades-0.93.1ubuntu6/test/test_pep8.py": [3, 4, 5, 8, 11, 13, 14, 16, 17, 18, 20, 21, 24, 25], "/home/egon/devel/unattended-upgrades/build-area/unattended-upgrades-0.93.1/test/test_untrusted.py": [3, 4, 6, 8, 10, 13, 14, 15, 16, 17, 18, 21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 37, 39, 42, 43, 45, 46, 47, 48, 49, 50, 53, 55], "/home/bdmurray/source-trees/unattended-upgrades/unattended-upgrades-0.93.1ubuntu6/unattended-upgrade": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 45, 46, 47, 48, 49, 54, 58, 59, 60, 64, 65, 66, 67, 69, 70, 71, 72, 73, 74, 77, 78, 81, 84, 85, 86, 88, 91, 93, 96, 99, 100, 103, 105, 106, 107, 109, 111, 112, 114, 116, 124, 126, 127, 130, 131, 151, 154, 156, 157, 158, 159, 160, 161, 162, 163, 165, 166, 167, 169, 202, 207, 214, 215, 216, 217, 218, 219, 220, 221, 222, 224, 226, 227, 229, 231, 234, 246, 247, 248, 249, 251, 252, 253, 255, 256, 257, 258, 259, 263, 266, 269, 271, 272, 273, 274, 275, 277, 278, 279, 280, 281, 284, 289, 290, 291, 292, 293, 295, 298, 304, 309, 310, 311, 314, 315, 318, 319, 322, 324, 325, 326, 327, 329, 330, 332, 334, 336, 337, 339, 340, 344, 347, 352, 353, 354, 355, 356, 360, 363, 369, 370, 371, 372, 373, 375, 376, 378, 379, 383, 386, 387, 388, 389, 390, 391, 392, 394, 395, 396, 399, 400, 401, 404, 407, 410, 414, 417, 418, 419, 420, 422, 423, 424, 429, 432, 433, 434, 435, 441, 445, 537, 538, 540, 541, 542, 543, 544, 547, 548, 549, 550, 551, 552, 555, 557, 558, 559, 560, 564, 568, 569, 572, 574, 575, 578, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 595, 596, 597, 598, 600, 601, 602, 603, 607, 608, 609, 610, 611, 616, 618, 621, 623, 624, 625, 626, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 647, 648, 649, 652, 653, 654, 655, 656, 657, 658, 659, 660, 664, 665, 666, 667, 668, 669, 670, 674, 675, 677, 678, 681, 682, 683, 684, 685, 688, 690, 694, 696, 697, 698, 699, 701, 706, 707, 708, 709, 710, 713, 714, 716, 717, 720, 721, 726, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 743, 744, 745, 746, 747, 748, 749, 750, 751, 754, 756, 757, 758, 759, 763, 764, 769, 770, 771, 772, 774, 775, 778, 784, 785, 787, 790, 793, 794, 798, 799, 800, 801, 802, 803, 804, 807, 809, 810, 811, 812, 815, 816, 817, 819, 820, 821, 822, 823, 824, 825, 828, 830, 831, 832, 833, 840, 842, 843, 844, 845, 848, 850, 851, 852, 853, 855, 856, 857, 858, 859, 860, 861, 862, 864, 865, 866, 867, 871, 872, 873, 874, 875, 876, 877, 879, 881, 882, 883, 884, 889, 892, 895, 896, 898, 900, 901, 906, 907, 908, 910, 911, 912, 913, 924, 925, 931, 934, 936, 939, 940, 941, 942, 945, 946, 948, 951, 952, 953, 955, 956, 957, 960, 962, 963, 966, 967, 968, 969, 970, 972, 973, 974, 975, 977, 978, 979, 981, 982, 983, 986, 987, 988, 989, 990, 994, 998, 999, 1000, 1016, 1019, 1020, 1023, 1024, 1027, 1031, 1032, 1033, 1036, 1038, 1039, 1040, 1041, 1042, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1057, 1058, 1059, 1061, 1062, 1065, 1066, 1067, 1069, 1070, 1073, 1076, 1077, 1078, 1079, 1080, 1082, 1086, 1092, 1093, 1094, 1104, 1106, 1107, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1129, 1130, 1131, 1132, 1133, 1134, 1136, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1149, 1150, 1151, 1155, 1156, 1157, 1159, 1160, 1161, 1162, 1163, 1164, 1167, 1168, 1169, 1175, 1178, 1189, 1191, 1192, 1193, 1213, 1215, 1216, 1219, 1222, 1226, 1227, 1228, 1229, 1231, 1234, 1235, 1236, 1239, 1240, 1241, 1243, 1246, 1249, 1254, 1280, 1281, 1289, 1290, 1291, 1298, 1299, 1301, 1303, 1304, 1305, 1310, 1311, 1314, 1315, 1316, 1317, 1318, 1322, 1325, 1326, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1337, 1338, 1340, 1343, 1344, 1345, 1348, 1354, 1360, 1362, 1383, 1385, 1387, 1408, 1411, 1412, 1413, 1414, 1416, 1419, 1420, 1421, 1434, 1435, 1436, 1442, 1443, 1444, 1447, 1448, 1451, 1452, 1457, 1458, 1459, 1462, 1464, 1465, 1466, 1467, 1468, 1469, 1472, 1473, 1474, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1488, 1489, 1491, 1492, 1493, 1494, 1495, 1496, 1498, 1499, 1500, 1501, 1504, 1505, 1506, 1507, 1510, 1511, 1512, 1518, 1521, 1522, 1525], "/home/egon/devel/unattended-upgrades/build-area/unattended-upgrades-0.93.1/test/test_regression.py": [4, 5, 6, 7, 8, 60, 10, 61, 15, 18, 19, 22, 26, 59, 28, 29, 62], "/home/egon/devel/unattended-upgrades/build-area/unattended-upgrades-0.93.1/test/test_minimal_partitions.py": [3, 4, 5, 6, 7, 8, 10, 13, 17, 20, 25, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 41, 42, 45, 46, 49, 51, 52, 53, 54, 55, 57, 58, 62, 65, 66, 67, 68], "/home/bdmurray/source-trees/unattended-upgrades/unattended-upgrades-0.93.1ubuntu6/test/test_regression.py": [4, 5, 6, 7, 8, 28, 10, 29, 15, 18, 19, 22, 26, 59, 60, 61, 62], "/home/egon/devel/unattended-upgrades/build-area/unattended-upgrades-0.93.1/test/test_log_install_progress.py": [3, 4, 5, 6, 7, 8, 10, 12, 15, 16, 17, 18, 19, 22, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 37, 38, 39], "/home/bdmurray/source-trees/unattended-upgrades/unattended-upgrades-0.93.1ubuntu6/test/test_origin_pattern.py": [3, 4, 5, 7, 8, 17, 18, 21, 22, 25, 26, 29, 30, 31, 32, 35, 36, 39, 41, 42, 44, 45, 47, 48, 49, 50, 52, 53, 54, 56, 58, 59, 60, 61, 62, 63, 65, 67, 68, 70, 72, 73, 74, 75, 77, 78, 79, 81, 82, 83, 84, 85, 87, 88, 89, 90, 91, 93, 94, 96, 97, 99, 100, 101, 102, 103, 105, 107, 108, 109, 110, 111, 113, 115, 116, 117, 119, 120, 122, 123, 124, 126, 127, 128, 129, 131, 132, 133, 134, 135, 137, 138, 140, 141, 143, 144, 145, 147, 148, 149, 150, 151, 152, 154, 155, 156, 157, 158, 159, 160, 161, 162, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 179, 180, 181, 182, 184, 185, 187, 188, 190, 191, 193, 194, 196, 197, 199, 200, 202, 203, 205, 206, 207, 208, 209, 212, 213, 214], "/home/egon/devel/unattended-upgrades/build-area/unattended-upgrades-0.93.1/test/test_origin_pattern.py": [3, 4, 5, 7, 8, 17, 18, 21, 22, 25, 26, 29, 30, 31, 32, 35, 36, 39, 41, 42, 44, 45, 47, 48, 49, 50, 52, 53, 54, 56, 58, 59, 60, 61, 62, 63, 65, 67, 68, 70, 72, 73, 74, 75, 77, 78, 79, 81, 82, 83, 84, 85, 87, 88, 89, 90, 91, 93, 94, 96, 97, 99, 100, 101, 102, 103, 105, 107, 108, 109, 110, 111, 113, 115, 116, 117, 119, 120, 122, 123, 124, 126, 127, 128, 129, 131, 132, 133, 134, 135, 137, 138, 140, 141, 143, 144, 145, 147, 148, 149, 150, 151, 153, 154, 155, 156, 157, 158, 159, 160, 161, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 178, 179, 180, 181, 183, 184, 186, 187, 189, 190, 192, 193, 195, 196, 198, 199, 201, 202, 204, 205, 206, 207, 208, 211, 212, 213], "/home/bdmurray/source-trees/unattended-upgrades/unattended-upgrades-0.93.1ubuntu6/test/test_pyflakes.py": [1, 2, 3, 6, 7, 9, 10, 12, 13, 14, 16, 19, 20], "/home/bdmurray/source-trees/unattended-upgrades/unattended-upgrades-0.93.1ubuntu6/test/test_mail.py": [3, 5, 6, 7, 8, 9, 10, 13, 15, 16, 24, 26, 27, 31, 34, 35, 43, 44, 45, 46, 47, 48, 49, 50, 54, 57, 58, 61, 64, 66, 67, 68, 70, 71, 73, 74, 75, 76, 78, 80, 81, 82, 84, 88, 89, 93, 94, 96, 97, 98, 99, 100, 101, 103, 104, 105, 106, 107, 110, 111, 112, 113, 114, 116, 117, 118, 119, 120, 121, 122, 124, 127, 128, 129, 130, 131, 133, 134, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 150, 151, 152, 153, 154, 155, 156, 158, 160, 161, 162, 164, 165, 166, 168, 169, 170, 171, 172, 173, 174, 175, 178, 180, 181, 182, 184, 185, 186, 189, 192, 194, 195, 196, 198, 199, 200, 203, 204, 206, 207, 208, 210, 212, 213, 214, 215, 220, 223, 225, 226, 227, 228, 231, 233], "/home/bdmurray/source-trees/unattended-upgrades/unattended-upgrades-0.93.1ubuntu6/test/test_substitute.py": [3, 4, 5, 7, 8, 11, 13, 15, 16, 18, 20, 21, 22, 24, 26, 27, 28, 29, 30, 33, 34, 35], "/home/bdmurray/source-trees/unattended-upgrades/unattended-upgrades-0.93.1ubuntu6/test/test_log_install_progress.py": [3, 4, 5, 6, 7, 8, 10, 12, 15, 16, 17, 18, 19, 22, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 37, 38, 39], "/home/egon/devel/unattended-upgrades/build-area/unattended-upgrades-0.93.1/test/test_substitute.py": [3, 4, 5, 7, 8, 11, 13, 15, 16, 18, 20, 21, 22, 24, 26, 27, 28, 29, 30, 33, 34, 35], "/home/egon/devel/unattended-upgrades/build-area/unattended-upgrades-0.93.1/unattended-upgrade": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 45, 46, 47, 48, 49, 54, 58, 59, 60, 64, 65, 66, 67, 69, 70, 71, 72, 75, 76, 79, 82, 83, 84, 86, 89, 91, 94, 97, 98, 101, 103, 104, 105, 107, 109, 110, 112, 114, 122, 124, 125, 128, 129, 149, 152, 154, 155, 156, 157, 158, 159, 160, 161, 163, 164, 165, 167, 200, 205, 212, 213, 214, 215, 216, 217, 218, 219, 220, 222, 224, 225, 227, 229, 232, 244, 245, 246, 247, 249, 250, 251, 253, 254, 255, 256, 257, 261, 264, 267, 269, 270, 271, 272, 273, 275, 276, 277, 278, 279, 282, 287, 288, 289, 290, 291, 293, 296, 302, 307, 308, 309, 312, 313, 316, 317, 320, 322, 323, 325, 326, 328, 330, 332, 333, 335, 336, 337, 340, 345, 346, 347, 348, 351, 357, 358, 359, 360, 361, 363, 364, 366, 367, 371, 374, 375, 376, 377, 378, 379, 380, 382, 383, 384, 387, 388, 389, 392, 395, 398, 402, 405, 406, 407, 408, 410, 411, 412, 417, 420, 421, 422, 423, 429, 433, 435, 436, 439, 442, 445, 446, 448, 449, 450, 453, 454, 455, 456, 457, 462, 463, 464, 466, 467, 482, 483, 484, 485, 522, 525, 526, 528, 529, 530, 531, 532, 535, 536, 537, 538, 539, 540, 543, 545, 546, 547, 548, 552, 555, 556, 558, 559, 562, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 579, 580, 581, 582, 584, 585, 586, 587, 591, 592, 593, 594, 595, 599, 602, 604, 605, 606, 607, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 628, 629, 630, 633, 634, 635, 636, 637, 638, 639, 640, 641, 645, 646, 647, 648, 649, 650, 651, 655, 656, 658, 659, 662, 663, 664, 665, 666, 669, 671, 675, 677, 678, 679, 680, 682, 687, 688, 689, 690, 691, 694, 695, 697, 698, 701, 702, 707, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 724, 725, 726, 727, 728, 729, 730, 731, 732, 735, 737, 738, 739, 740, 744, 745, 750, 751, 752, 753, 755, 756, 759, 765, 766, 768, 771, 774, 775, 779, 780, 781, 782, 783, 784, 785, 788, 790, 791, 792, 793, 796, 797, 798, 800, 801, 802, 803, 804, 805, 806, 809, 811, 812, 813, 814, 821, 823, 824, 825, 826, 829, 831, 832, 833, 834, 836, 837, 838, 839, 840, 841, 842, 843, 845, 846, 847, 848, 852, 853, 854, 855, 856, 857, 858, 860, 862, 863, 864, 865, 870, 873, 876, 877, 879, 881, 882, 887, 888, 889, 891, 892, 893, 894, 905, 906, 912, 915, 917, 920, 921, 922, 923, 926, 927, 929, 932, 933, 934, 936, 937, 938, 941, 943, 944, 947, 948, 949, 950, 951, 953, 954, 955, 956, 958, 959, 960, 962, 963, 964, 967, 968, 969, 970, 971, 975, 979, 980, 981, 997, 1000, 1001, 1004, 1005, 1008, 1012, 1013, 1014, 1017, 1019, 1020, 1021, 1022, 1023, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1038, 1039, 1040, 1042, 1043, 1046, 1047, 1048, 1050, 1051, 1054, 1057, 1058, 1059, 1060, 1062, 1066, 1072, 1073, 1074, 1084, 1086, 1087, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1109, 1110, 1111, 1112, 1113, 1114, 1116, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1129, 1130, 1131, 1134, 1135, 1136, 1138, 1139, 1140, 1141, 1142, 1145, 1146, 1147, 1153, 1156, 1167, 1169, 1170, 1171, 1191, 1193, 1194, 1197, 1200, 1204, 1207, 1208, 1209, 1212, 1213, 1214, 1216, 1219, 1222, 1227, 1253, 1254, 1262, 1263, 1264, 1271, 1272, 1274, 1276, 1277, 1278, 1283, 1284, 1287, 1288, 1289, 1290, 1291, 1295, 1298, 1299, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1310, 1311, 1313, 1316, 1317, 1318, 1321, 1327, 1333, 1335, 1356, 1358, 1360, 1381, 1384, 1385, 1386, 1387, 1389, 1392, 1393, 1394, 1407, 1408, 1409, 1415, 1416, 1417, 1420, 1421, 1424, 1425, 1430, 1431, 1432, 1435, 1437, 1438, 1439, 1440, 1441, 1442, 1445, 1446, 1447, 1453, 1454, 1455, 1456, 1457, 1458, 1460, 1461, 1463, 1464, 1465, 1466, 1467, 1469, 1470, 1471, 1472, 1475, 1476, 1477, 1478, 1481, 1482, 1483, 1489, 1492, 1493, 1496], "/home/bdmurray/source-trees/unattended-upgrades/unattended-upgrades-0.93.1ubuntu6/test/test_logdir.py": [3, 4, 5, 6, 7, 8, 10, 11, 14, 15, 16, 17, 18, 21, 23, 24, 25, 26, 28, 30, 31, 32, 33, 34, 36, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 51], "/home/egon/devel/unattended-upgrades/build-area/unattended-upgrades-0.93.1/test/test_pyflakes.py": [1, 2, 3, 6, 7, 9, 10, 12, 13, 14, 16, 19, 20], "/home/bdmurray/source-trees/unattended-upgrades/unattended-upgrades-0.93.1ubuntu6/test/test_reboot.py": [3, 4, 5, 6, 8, 10, 14, 17, 19, 21, 22, 23, 24, 25, 27, 28, 29, 31, 33, 34, 35, 37, 39, 40, 41, 43, 45, 46, 48, 50, 51, 52, 53, 55, 58, 59, 60, 61, 63, 64, 65, 67, 70, 71, 73, 74, 75, 76, 77, 78, 80, 83, 84, 85, 86, 89, 90, 91], "/home/egon/devel/unattended-upgrades/build-area/unattended-upgrades-0.93.1/test/test_logdir.py": [3, 4, 5, 6, 7, 8, 10, 11, 14, 15, 16, 17, 18, 21, 23, 24, 25, 26, 28, 30, 31, 32, 33, 34, 36, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 51]}} \ No newline at end of file Binary files /tmp/nV3mHYBZgD/unattended-upgrades-0.96/test/root.rewind/var/cache/apt/pkgcache.bin and /tmp/xrPmdk79kD/unattended-upgrades-0.93.1ubuntu8/test/root.rewind/var/cache/apt/pkgcache.bin differ Binary files /tmp/nV3mHYBZgD/unattended-upgrades-0.96/test/root.rewind/var/cache/apt/srcpkgcache.bin and /tmp/xrPmdk79kD/unattended-upgrades-0.93.1ubuntu8/test/root.rewind/var/cache/apt/srcpkgcache.bin differ diff -Nru unattended-upgrades-0.96/test/root.untrusted/etc/apt/apt.conf unattended-upgrades-0.93.1ubuntu8/test/root.untrusted/etc/apt/apt.conf --- unattended-upgrades-0.96/test/root.untrusted/etc/apt/apt.conf 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/test/root.untrusted/etc/apt/apt.conf 2017-05-18 01:28:32.000000000 +0200 @@ -1,3 +1,4 @@ Unattended-Upgrade::Allowed-Origins { - "Ubuntu:lucid-security"; +"Ubuntu:lucid-security"; }; +Unattended-Upgrade::DevRelease "true"; Binary files /tmp/nV3mHYBZgD/unattended-upgrades-0.96/test/root.untrusted/var/cache/apt/pkgcache.bin and /tmp/xrPmdk79kD/unattended-upgrades-0.93.1ubuntu8/test/root.untrusted/var/cache/apt/pkgcache.bin differ Binary files /tmp/nV3mHYBZgD/unattended-upgrades-0.96/test/root.untrusted/var/cache/apt/srcpkgcache.bin and /tmp/xrPmdk79kD/unattended-upgrades-0.93.1ubuntu8/test/root.untrusted/var/cache/apt/srcpkgcache.bin differ diff -Nru unattended-upgrades-0.96/test/root.unused-deps/etc/apt/apt.conf unattended-upgrades-0.93.1ubuntu8/test/root.unused-deps/etc/apt/apt.conf --- unattended-upgrades-0.96/test/root.unused-deps/etc/apt/apt.conf 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/test/root.unused-deps/etc/apt/apt.conf 2017-05-18 01:28:32.000000000 +0200 @@ -4,3 +4,4 @@ "Ubuntu:lucid-security"; }; Unattended-Upgrade::Remove-New-Unused-Dependencies "true"; +Unattended-Upgrade::DevRelease "true"; Binary files /tmp/nV3mHYBZgD/unattended-upgrades-0.96/test/root.unused-deps/var/cache/apt/pkgcache.bin and /tmp/xrPmdk79kD/unattended-upgrades-0.93.1ubuntu8/test/root.unused-deps/var/cache/apt/pkgcache.bin differ Binary files /tmp/nV3mHYBZgD/unattended-upgrades-0.96/test/root.unused-deps/var/cache/apt/srcpkgcache.bin and /tmp/xrPmdk79kD/unattended-upgrades-0.93.1ubuntu8/test/root.unused-deps/var/cache/apt/srcpkgcache.bin differ diff -Nru unattended-upgrades-0.96/test/root.unused-deps/var/lib/apt/extended_states unattended-upgrades-0.93.1ubuntu8/test/root.unused-deps/var/lib/apt/extended_states --- unattended-upgrades-0.96/test/root.unused-deps/var/lib/apt/extended_states 1970-01-01 01:00:00.000000000 +0100 +++ unattended-upgrades-0.93.1ubuntu8/test/root.unused-deps/var/lib/apt/extended_states 2017-05-18 01:28:32.000000000 +0200 @@ -0,0 +1,4 @@ +Package: old-unused-dependency +Architecture: amd64 +Auto-Installed: 1 + diff -Nru unattended-upgrades-0.96/test/root.unused-deps/var/lib/dpkg/status unattended-upgrades-0.93.1ubuntu8/test/root.unused-deps/var/lib/dpkg/status --- unattended-upgrades-0.96/test/root.unused-deps/var/lib/dpkg/status 1970-01-01 01:00:00.000000000 +0100 +++ unattended-upgrades-0.93.1ubuntu8/test/root.unused-deps/var/lib/dpkg/status 2017-05-18 01:28:32.000000000 +0200 @@ -0,0 +1,19 @@ +Package: test-package +Status: install ok installed +Architecture: all +Version: 2.0.test.pkg + +Package: test-package-dependency +Status: install ok installed +Architecture: all +Version: 1.0 + +Package: z-package +Status: install ok installed +Architecture: all +Version: 1.0 + +Package: old-unused-dependency +Status: install ok installed +Architecture: all +Version: 1.0 Binary files /tmp/nV3mHYBZgD/unattended-upgrades-0.96/test/root.unused-deps/var/log/apt/eipp.log.xz and /tmp/xrPmdk79kD/unattended-upgrades-0.93.1ubuntu8/test/root.unused-deps/var/log/apt/eipp.log.xz differ diff -Nru unattended-upgrades-0.96/test/root.unused-deps/var/log/apt/history.log unattended-upgrades-0.93.1ubuntu8/test/root.unused-deps/var/log/apt/history.log --- unattended-upgrades-0.96/test/root.unused-deps/var/log/apt/history.log 1970-01-01 01:00:00.000000000 +0100 +++ unattended-upgrades-0.93.1ubuntu8/test/root.unused-deps/var/log/apt/history.log 2017-05-18 01:28:32.000000000 +0200 @@ -0,0 +1,128 @@ + +Start-Date: 2016-12-11 11:45:02 +Upgrade: test-package:amd64 (1.0.test.pkg, 2.0.test.pkg) +End-Date: 2016-12-11 11:45:02 + +Start-Date: 2016-12-11 11:45:02 +Remove: test-package-dependency:amd64 (1.0), old-unused-dependency:amd64 (1.0) +End-Date: 2016-12-11 11:45:02 + +Start-Date: 2016-12-11 11:45:03 +Upgrade: test-package:amd64 (1.0.test.pkg, 2.0.test.pkg) +End-Date: 2016-12-11 11:45:03 + +Start-Date: 2016-12-11 11:45:03 +Remove: test-package-dependency:amd64 (1.0) +End-Date: 2016-12-11 11:45:03 + +Start-Date: 2016-12-11 11:45:03 +Upgrade: test-package:amd64 (1.0.test.pkg, 2.0.test.pkg) +End-Date: 2016-12-11 11:45:04 + +Start-Date: 2016-12-11 11:45:04 +Remove: test-package-dependency:amd64 (1.0), old-unused-dependency:amd64 (1.0) +End-Date: 2016-12-11 11:45:04 + +Start-Date: 2016-12-11 11:45:04 +Upgrade: test-package:amd64 (1.0.test.pkg, 2.0.test.pkg) +End-Date: 2016-12-11 11:45:04 + +Start-Date: 2016-12-11 11:45:04 +Remove: test-package-dependency:amd64 (1.0) +End-Date: 2016-12-11 11:45:04 + +Start-Date: 2017-05-18 09:11:48 +Upgrade: test-package:amd64 (1.0.test.pkg, 2.0.test.pkg) +End-Date: 2017-05-18 09:11:48 + +Start-Date: 2017-05-18 09:11:48 +Remove: test-package-dependency:amd64 (1.0), old-unused-dependency:amd64 (1.0) +End-Date: 2017-05-18 09:11:48 + +Start-Date: 2017-05-18 09:11:49 +Upgrade: test-package:amd64 (1.0.test.pkg, 2.0.test.pkg) +End-Date: 2017-05-18 09:11:49 + +Start-Date: 2017-05-18 09:11:49 +Remove: test-package-dependency:amd64 (1.0) +End-Date: 2017-05-18 09:11:50 + +Start-Date: 2017-05-18 09:11:51 +Upgrade: test-package:amd64 (1.0.test.pkg, 2.0.test.pkg) +End-Date: 2017-05-18 09:11:51 + +Start-Date: 2017-05-18 09:11:52 +Remove: test-package-dependency:amd64 (1.0), old-unused-dependency:amd64 (1.0) +End-Date: 2017-05-18 09:11:52 + +Start-Date: 2017-05-18 09:11:53 +Upgrade: test-package:amd64 (1.0.test.pkg, 2.0.test.pkg) +End-Date: 2017-05-18 09:11:53 + +Start-Date: 2017-05-18 09:11:53 +Remove: test-package-dependency:amd64 (1.0) +End-Date: 2017-05-18 09:11:53 + +Start-Date: 2017-05-18 09:17:43 +Upgrade: test-package:amd64 (1.0.test.pkg, 2.0.test.pkg) +End-Date: 2017-05-18 09:17:43 + +Start-Date: 2017-05-18 09:17:43 +Remove: test-package-dependency:amd64 (1.0), old-unused-dependency:amd64 (1.0) +End-Date: 2017-05-18 09:17:43 + +Start-Date: 2017-05-18 09:17:44 +Upgrade: test-package:amd64 (1.0.test.pkg, 2.0.test.pkg) +End-Date: 2017-05-18 09:17:44 + +Start-Date: 2017-05-18 09:17:45 +Remove: test-package-dependency:amd64 (1.0) +End-Date: 2017-05-18 09:17:45 + +Start-Date: 2017-05-18 09:17:47 +Upgrade: test-package:amd64 (1.0.test.pkg, 2.0.test.pkg) +End-Date: 2017-05-18 09:17:47 + +Start-Date: 2017-05-18 09:17:47 +Remove: test-package-dependency:amd64 (1.0), old-unused-dependency:amd64 (1.0) +End-Date: 2017-05-18 09:17:47 + +Start-Date: 2017-05-18 09:17:48 +Upgrade: test-package:amd64 (1.0.test.pkg, 2.0.test.pkg) +End-Date: 2017-05-18 09:17:48 + +Start-Date: 2017-05-18 09:17:49 +Remove: test-package-dependency:amd64 (1.0) +End-Date: 2017-05-18 09:17:49 + +Start-Date: 2017-05-18 09:48:24 +Upgrade: test-package:amd64 (1.0.test.pkg, 2.0.test.pkg) +End-Date: 2017-05-18 09:48:24 + +Start-Date: 2017-05-18 09:48:25 +Remove: test-package-dependency:amd64 (1.0), old-unused-dependency:amd64 (1.0) +End-Date: 2017-05-18 09:48:25 + +Start-Date: 2017-05-18 09:48:26 +Upgrade: test-package:amd64 (1.0.test.pkg, 2.0.test.pkg) +End-Date: 2017-05-18 09:48:26 + +Start-Date: 2017-05-18 09:48:26 +Remove: test-package-dependency:amd64 (1.0) +End-Date: 2017-05-18 09:48:26 + +Start-Date: 2017-05-18 09:48:28 +Upgrade: test-package:amd64 (1.0.test.pkg, 2.0.test.pkg) +End-Date: 2017-05-18 09:48:28 + +Start-Date: 2017-05-18 09:48:28 +Remove: test-package-dependency:amd64 (1.0), old-unused-dependency:amd64 (1.0) +End-Date: 2017-05-18 09:48:28 + +Start-Date: 2017-05-18 09:48:29 +Upgrade: test-package:amd64 (1.0.test.pkg, 2.0.test.pkg) +End-Date: 2017-05-18 09:48:29 + +Start-Date: 2017-05-18 09:48:30 +Remove: test-package-dependency:amd64 (1.0) +End-Date: 2017-05-18 09:48:30 diff -Nru unattended-upgrades-0.96/test/root.unused-deps/var/log/apt/term.log unattended-upgrades-0.93.1ubuntu8/test/root.unused-deps/var/log/apt/term.log --- unattended-upgrades-0.96/test/root.unused-deps/var/log/apt/term.log 1970-01-01 01:00:00.000000000 +0100 +++ unattended-upgrades-0.93.1ubuntu8/test/root.unused-deps/var/log/apt/term.log 2017-05-18 01:28:32.000000000 +0200 @@ -0,0 +1,96 @@ + +Log started: 2016-12-11 11:45:02 +Log ended: 2016-12-11 11:45:02 + +Log started: 2016-12-11 11:45:02 +Log ended: 2016-12-11 11:45:02 + +Log started: 2016-12-11 11:45:03 +Log ended: 2016-12-11 11:45:03 + +Log started: 2016-12-11 11:45:03 +Log ended: 2016-12-11 11:45:03 + +Log started: 2016-12-11 11:45:03 +Log ended: 2016-12-11 11:45:04 + +Log started: 2016-12-11 11:45:04 +Log ended: 2016-12-11 11:45:04 + +Log started: 2016-12-11 11:45:04 +Log ended: 2016-12-11 11:45:04 + +Log started: 2016-12-11 11:45:04 +Log ended: 2016-12-11 11:45:04 + +Log started: 2017-05-18 09:11:48 +Log ended: 2017-05-18 09:11:48 + +Log started: 2017-05-18 09:11:48 +Log ended: 2017-05-18 09:11:48 + +Log started: 2017-05-18 09:11:49 +Log ended: 2017-05-18 09:11:49 + +Log started: 2017-05-18 09:11:49 +Log ended: 2017-05-18 09:11:50 + +Log started: 2017-05-18 09:11:51 +Log ended: 2017-05-18 09:11:51 + +Log started: 2017-05-18 09:11:52 +Log ended: 2017-05-18 09:11:52 + +Log started: 2017-05-18 09:11:53 +Log ended: 2017-05-18 09:11:53 + +Log started: 2017-05-18 09:11:53 +Log ended: 2017-05-18 09:11:53 + +Log started: 2017-05-18 09:17:43 +Log ended: 2017-05-18 09:17:43 + +Log started: 2017-05-18 09:17:43 +Log ended: 2017-05-18 09:17:43 + +Log started: 2017-05-18 09:17:44 +Log ended: 2017-05-18 09:17:44 + +Log started: 2017-05-18 09:17:45 +Log ended: 2017-05-18 09:17:45 + +Log started: 2017-05-18 09:17:47 +Log ended: 2017-05-18 09:17:47 + +Log started: 2017-05-18 09:17:47 +Log ended: 2017-05-18 09:17:47 + +Log started: 2017-05-18 09:17:48 +Log ended: 2017-05-18 09:17:48 + +Log started: 2017-05-18 09:17:49 +Log ended: 2017-05-18 09:17:49 + +Log started: 2017-05-18 09:48:24 +Log ended: 2017-05-18 09:48:24 + +Log started: 2017-05-18 09:48:25 +Log ended: 2017-05-18 09:48:25 + +Log started: 2017-05-18 09:48:26 +Log ended: 2017-05-18 09:48:26 + +Log started: 2017-05-18 09:48:26 +Log ended: 2017-05-18 09:48:26 + +Log started: 2017-05-18 09:48:28 +Log ended: 2017-05-18 09:48:28 + +Log started: 2017-05-18 09:48:28 +Log ended: 2017-05-18 09:48:28 + +Log started: 2017-05-18 09:48:29 +Log ended: 2017-05-18 09:48:29 + +Log started: 2017-05-18 09:48:30 +Log ended: 2017-05-18 09:48:30 diff -Nru unattended-upgrades-0.96/test/root.unused-deps/var/log/unattended-upgrades/unattended-upgrades-dpkg.log unattended-upgrades-0.93.1ubuntu8/test/root.unused-deps/var/log/unattended-upgrades/unattended-upgrades-dpkg.log --- unattended-upgrades-0.96/test/root.unused-deps/var/log/unattended-upgrades/unattended-upgrades-dpkg.log 1970-01-01 01:00:00.000000000 +0100 +++ unattended-upgrades-0.93.1ubuntu8/test/root.unused-deps/var/log/unattended-upgrades/unattended-upgrades-dpkg.log 2017-05-18 01:28:32.000000000 +0200 @@ -0,0 +1,140 @@ +Log started: 2016-12-11 11:45:02 +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2016-12-11 11:45:02 + +Log started: 2016-12-11 11:45:02 +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2016-12-11 11:45:02 + +Log started: 2016-12-11 11:45:02 +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2016-12-11 11:45:03 + +Log started: 2016-12-11 11:45:03 +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2016-12-11 11:45:03 + +Log started: 2016-12-11 11:45:03 +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2016-12-11 11:45:04 + +Log started: 2016-12-11 11:45:04 +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2016-12-11 11:45:04 + +Log started: 2016-12-11 11:45:04 +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2016-12-11 11:45:04 + +Log started: 2016-12-11 11:45:04 +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2016-12-11 11:45:04 + +Log started: 2017-05-18 09:11:47 +apt-listchanges: Database /var/lib/apt/listchanges.db failed to load: [Errno 13] Permission denied +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2017-05-18 09:11:48 + +Log started: 2017-05-18 09:11:48 +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2017-05-18 09:11:48 + +Log started: 2017-05-18 09:11:48 +apt-listchanges: Database /var/lib/apt/listchanges.db failed to load: [Errno 13] Permission denied +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2017-05-18 09:11:49 + +Log started: 2017-05-18 09:11:49 +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2017-05-18 09:11:50 + +Log started: 2017-05-18 09:11:51 +apt-listchanges: Database /var/lib/apt/listchanges.db failed to load: [Errno 13] Permission denied +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2017-05-18 09:11:52 + +Log started: 2017-05-18 09:11:52 +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2017-05-18 09:11:52 + +Log started: 2017-05-18 09:11:52 +apt-listchanges: Database /var/lib/apt/listchanges.db failed to load: [Errno 13] Permission denied +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2017-05-18 09:11:53 + +Log started: 2017-05-18 09:11:53 +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2017-05-18 09:11:53 + +Log started: 2017-05-18 09:17:42 +apt-listchanges: Database /var/lib/apt/listchanges.db failed to load: [Errno 13] Permission denied +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2017-05-18 09:17:43 + +Log started: 2017-05-18 09:17:43 +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2017-05-18 09:17:44 + +Log started: 2017-05-18 09:17:44 +apt-listchanges: Database /var/lib/apt/listchanges.db failed to load: [Errno 13] Permission denied +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2017-05-18 09:17:44 + +Log started: 2017-05-18 09:17:44 +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2017-05-18 09:17:45 + +Log started: 2017-05-18 09:17:46 +apt-listchanges: Database /var/lib/apt/listchanges.db failed to load: [Errno 13] Permission denied +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2017-05-18 09:17:47 + +Log started: 2017-05-18 09:17:47 +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2017-05-18 09:17:47 + +Log started: 2017-05-18 09:17:47 +apt-listchanges: Database /var/lib/apt/listchanges.db failed to load: [Errno 13] Permission denied +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2017-05-18 09:17:48 + +Log started: 2017-05-18 09:17:48 +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2017-05-18 09:17:49 + +Log started: 2017-05-18 09:48:23 +apt-listchanges: Database /var/lib/apt/listchanges.db failed to load: [Errno 13] Permission denied +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2017-05-18 09:48:24 + +Log started: 2017-05-18 09:48:24 +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2017-05-18 09:48:25 + +Log started: 2017-05-18 09:48:25 +apt-listchanges: Database /var/lib/apt/listchanges.db failed to load: [Errno 13] Permission denied +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2017-05-18 09:48:26 + +Log started: 2017-05-18 09:48:26 +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2017-05-18 09:48:26 + +Log started: 2017-05-18 09:48:27 +apt-listchanges: Database /var/lib/apt/listchanges.db failed to load: [Errno 13] Permission denied +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2017-05-18 09:48:28 + +Log started: 2017-05-18 09:48:28 +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2017-05-18 09:48:29 + +Log started: 2017-05-18 09:48:29 +apt-listchanges: Database /var/lib/apt/listchanges.db failed to load: [Errno 13] Permission denied +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2017-05-18 09:48:29 + +Log started: 2017-05-18 09:48:29 +debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied +Log ended: 2017-05-18 09:48:30 + diff -Nru unattended-upgrades-0.96/test/root.unused-deps/var/log/unattended-upgrades/unattended-upgrades.log unattended-upgrades-0.93.1ubuntu8/test/root.unused-deps/var/log/unattended-upgrades/unattended-upgrades.log --- unattended-upgrades-0.96/test/root.unused-deps/var/log/unattended-upgrades/unattended-upgrades.log 1970-01-01 01:00:00.000000000 +0100 +++ unattended-upgrades-0.93.1ubuntu8/test/root.unused-deps/var/log/unattended-upgrades/unattended-upgrades.log 2017-05-18 01:28:32.000000000 +0200 @@ -0,0 +1,9 @@ +2017-05-18 09:48:29,017 INFO Initial blacklisted packages: +2017-05-18 09:48:29,018 INFO Initial whitelisted packages: +2017-05-18 09:48:29,018 INFO Starting unattended upgrades script +2017-05-18 09:48:29,018 INFO Allowed origins are: ['o=Ubuntu,a=lucid-security'] +2017-05-18 09:48:29,111 INFO Packages that will be upgraded: test-package +2017-05-18 09:48:29,111 INFO Writing dpkg log to './root.unused-deps/var/log/unattended-upgrades/unattended-upgrades-dpkg.log' +2017-05-18 09:48:29,917 INFO All upgrades installed +2017-05-18 09:48:29,948 INFO Packages that are auto removed: 'test-package-dependency' +2017-05-18 09:48:30,342 INFO Packages were successfully auto-removed diff -Nru unattended-upgrades-0.96/test/root.unused-deps/var/run/unattended-upgrades.progress unattended-upgrades-0.93.1ubuntu8/test/root.unused-deps/var/run/unattended-upgrades.progress --- unattended-upgrades-0.96/test/root.unused-deps/var/run/unattended-upgrades.progress 1970-01-01 01:00:00.000000000 +0100 +++ unattended-upgrades-0.93.1ubuntu8/test/root.unused-deps/var/run/unattended-upgrades.progress 2017-05-18 01:28:32.000000000 +0200 @@ -0,0 +1 @@ +Progress: 0.0 % (dpkg-exec) \ No newline at end of file diff -Nru unattended-upgrades-0.96/test/test_against_real_archive.py unattended-upgrades-0.93.1ubuntu8/test/test_against_real_archive.py --- unattended-upgrades-0.96/test/test_against_real_archive.py 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/test/test_against_real_archive.py 2016-12-11 11:31:26.000000000 +0100 @@ -5,9 +5,8 @@ network access, and it fails in some situations (unclear which). """ -import apt_pkg -apt_pkg.config.set("Dir", "./aptroot") import apt +import apt_pkg import glob import logging import os diff -Nru unattended-upgrades-0.96/test/test_clean.py unattended-upgrades-0.93.1ubuntu8/test/test_clean.py --- unattended-upgrades-0.96/test/test_clean.py 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/test/test_clean.py 2016-12-11 11:31:26.000000000 +0100 @@ -6,20 +6,12 @@ import tempfile import unittest -import apt_pkg -apt_pkg.config.set("Dir", "./aptroot") import apt import unattended_upgrade -try: - from typing import List - List # pyflaks -except ImportError: - pass - class MockFetcher: - items = [] # type: List[MockAcquireItem] + items = [] class MockAcquireItem: diff -Nru unattended-upgrades-0.96/test/test_conffile.py unattended-upgrades-0.93.1ubuntu8/test/test_conffile.py --- unattended-upgrades-0.96/test/test_conffile.py 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/test/test_conffile.py 2016-12-11 11:31:26.000000000 +0100 @@ -5,7 +5,6 @@ import unittest import apt_pkg -apt_pkg.config.set("Dir", "./aptroot") from unattended_upgrade import ( conffile_prompt, diff -Nru unattended-upgrades-0.96/test/test_dev_release.py unattended-upgrades-0.93.1ubuntu8/test/test_dev_release.py --- unattended-upgrades-0.96/test/test_dev_release.py 1970-01-01 01:00:00.000000000 +0100 +++ unattended-upgrades-0.93.1ubuntu8/test/test_dev_release.py 2017-05-18 01:28:32.000000000 +0200 @@ -0,0 +1,52 @@ +#!/usr/bin/python + +import os +import unittest + +import apt + +import unattended_upgrade + +apt.apt_pkg.config.set("APT::Architecture", "amd64") + + +class MockOptions(object): + debug = True + verbose = False + dry_run = True + apt_debug = False + minimal_upgrade_steps = False + + +class TestUntrusted(unittest.TestCase): + + def setUp(self): + self.rootdir = os.path.abspath("./root.untrusted") + self.log = os.path.join( + self.rootdir, "var", "log", "unattended-upgrades", + "unattended-upgrades.log") + + def tearDown(self): + os.remove(self.log) + + def test_do_not_run_on_devrelease(self): + apt_conf = os.path.join(self.rootdir, "etc", "apt", "apt.conf") + with open(apt_conf, "w") as fp: + fp.write("""Unattended-Upgrade::DevRelease "false"; +""") + + # run it + options = MockOptions() + unattended_upgrade.DISTRO_DESC = "Artful Aardvark (development branch)" + unattended_upgrade.main(options, rootdir=self.rootdir) + # read the log to see what happend + with open(self.log) as f: + needle = "Not running on the development release." + haystack = f.read() + self.assertTrue(needle in haystack, + "Can not find '%s' in '%s'" % (needle, haystack)) + + +if __name__ == "__main__": + # do not setup logging in here or the test will break + unittest.main() diff -Nru unattended-upgrades-0.96/test/test_in_chroot.py unattended-upgrades-0.93.1ubuntu8/test/test_in_chroot.py --- unattended-upgrades-0.96/test/test_in_chroot.py 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/test/test_in_chroot.py 2017-08-01 00:28:34.000000000 +0200 @@ -1,7 +1,5 @@ #!/usr/bin/python3 -import apt_pkg -apt_pkg.config.set("Dir", "./aptroot") import apt import logging import glob diff -Nru unattended-upgrades-0.96/test/test_logdir.py unattended-upgrades-0.93.1ubuntu8/test/test_logdir.py --- unattended-upgrades-0.96/test/test_logdir.py 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/test/test_logdir.py 2016-12-11 11:31:26.000000000 +0100 @@ -1,7 +1,6 @@ #!/usr/bin/python3 import apt_pkg -apt_pkg.config.set("Dir", "./aptroot") import logging import os import sys diff -Nru unattended-upgrades-0.96/test/test_log_install_progress.py unattended-upgrades-0.93.1ubuntu8/test/test_log_install_progress.py --- unattended-upgrades-0.96/test/test_log_install_progress.py 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/test/test_log_install_progress.py 2016-12-11 11:31:26.000000000 +0100 @@ -1,7 +1,6 @@ #!/usr/bin/python import apt_pkg -apt_pkg.config.set("Dir", "./aptroot") import logging import os import sys diff -Nru unattended-upgrades-0.96/test/test_mail.py unattended-upgrades-0.93.1ubuntu8/test/test_mail.py --- unattended-upgrades-0.96/test/test_mail.py 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/test/test_mail.py 2016-12-11 11:31:26.000000000 +0100 @@ -11,7 +11,6 @@ import apt_pkg -apt_pkg.config.set("Dir", "./aptroot") import unattended_upgrade from unattended_upgrade import ( @@ -80,7 +79,7 @@ """ return input tuple for send_summary_mail """ pkgs = "\n".join(["2vcard"]) res = successful - pkgs_kept_back = ["linux-image"] + pkgs_kept_back = [] # include some unicode chars here for good measure mem_log = StringIO("""mem_log text üöä Allowed origins are: ['o=Debian,n=wheezy', 'o=Debian,n=wheezy-updates',\ @@ -156,36 +155,6 @@ send_summary_mail(pkgs, res, pkgs_kept_back, mem_log, logf_dpkg) self.assertTrue(os.path.exists("mail.txt")) - def test_summary_mail_blacklisted(self): - # Test that blacklisted packages are mentioned in the mail message. - send_summary_mail(*self._return_mock_data()) - self.assertTrue(os.path.exists("mail.txt")) - with open("mail.txt", "rb") as fp: - mail_txt = fp.read().decode("utf-8") - self.assertTrue("[package on hold]" in mail_txt) - self._verify_common_mail_content(mail_txt) - self.assertTrue( - "Packages with upgradable origin but kept back:\n linux-image" - in mail_txt) - - def test_summary_mail_blacklisted_only(self): - # Test that when only blacklisted packages are available, they - # are still mentioned in the mail message. - pkgs, res, pkgs_kept_back, mem_log, logf_dpkg = self._return_mock_data( - successful=True) - pkgs = "" - send_summary_mail(pkgs, res, pkgs_kept_back, mem_log, logf_dpkg) - self.assertTrue(os.path.exists("mail.txt")) - with open("mail.txt", "rb") as fp: - mail_txt = fp.read().decode("utf-8") - self.assertTrue("[package on hold]" in mail_txt) - self._verify_common_mail_content(mail_txt) - self.assertTrue( - "Packages with upgradable origin but kept back:\n linux-image" - in mail_txt) - self.assertFalse( - "Packages that attempted to upgrade:\n 2vcard" in mail_txt) - def test_apt_listchanges(self): # test with sendmail available unattended_upgrade.SENDMAIL_BINARY = "/bin/true" diff -Nru unattended-upgrades-0.96/test/test_minimal_partitions.py unattended-upgrades-0.93.1ubuntu8/test/test_minimal_partitions.py --- unattended-upgrades-0.96/test/test_minimal_partitions.py 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/test/test_minimal_partitions.py 2016-12-11 11:31:26.000000000 +0100 @@ -1,20 +1,12 @@ #!/usr/bin/python3 -import apt_pkg -apt_pkg.config.set("Dir", "./aptroot") import apt +import apt_pkg import os import shutil import tempfile import unittest -try: - from typing import List, Tuple - List # pyflaks - Tuple # pyflakes -except ImportError: - pass - import unattended_upgrade @@ -22,7 +14,7 @@ # klass data so that we can verify in the test as the actual # object is destroyed - DATA = [] # type: List[Tuple[str, float]] + DATA = [] # overwrite to log the data def status_change(self, pkg, percent, status): @@ -34,7 +26,6 @@ def setUp(self): # setup dry-run mode for apt - apt_pkg.config.set("Dir", "./aptroot") apt_pkg.config.set("Dir::Cache", "/tmp") apt_pkg.config.set("Debug::NoLocking", "1") apt_pkg.config.set("Debug::pkgDPkgPM", "1") diff -Nru unattended-upgrades-0.96/test/test_origin_pattern.py unattended-upgrades-0.93.1ubuntu8/test/test_origin_pattern.py --- unattended-upgrades-0.96/test/test_origin_pattern.py 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/test/test_origin_pattern.py 2017-02-24 22:15:30.000000000 +0100 @@ -4,8 +4,6 @@ import logging import unittest -apt_pkg.config.set("Dir", "./aptroot") - import unattended_upgrade from unattended_upgrade import ( check_changes_for_sanity, @@ -202,7 +200,8 @@ ("http\://foo.bar:stable", ("http://foo.bar", "stable")), # space as separator ("Ubuntu lucid-security", ("Ubuntu", "lucid-security")), - ("http\://baz.mee stable", ("http://baz.mee", "stable"))): + ("http\://baz.mee stable", ("http://baz.mee", "stable")), + ): apt_pkg.config.clear("Unattended-Upgrade::Allowed-Origins") apt_pkg.config.set("Unattended-Upgrade::Allowed-Origins::", cfg) li = unattended_upgrade.get_allowed_origins_legacy() diff -Nru unattended-upgrades-0.96/test/test_pep484.py unattended-upgrades-0.93.1ubuntu8/test/test_pep484.py --- unattended-upgrades-0.96/test/test_pep484.py 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/test/test_pep484.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,29 +0,0 @@ -#!/usr/bin/python - -import os -import subprocess -import unittest - - -def hasMyPy(): - try: - subprocess.check_call(["mypy", "--version"]) - except Exception: - return False - return True - - -class PackagePep484TestCase(unittest.TestCase): - - @unittest.skipIf(not hasMyPy(), "no mypy available") - def test_pep484_clean(self): - top_src_dir = os.path.join(os.path.dirname(__file__), "..") - # FIXME: add pyi file for python-apt to get rid of the - # --ignore-missing-imports - self.assertEqual( - subprocess.call( - ["mypy", "--ignore-missing-imports", top_src_dir]), 0) - - -if __name__ == "__main__": - unittest.main() diff -Nru unattended-upgrades-0.96/test/test_reboot.py unattended-upgrades-0.93.1ubuntu8/test/test_reboot.py --- unattended-upgrades-0.96/test/test_reboot.py 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/test/test_reboot.py 2016-12-11 11:31:26.000000000 +0100 @@ -6,7 +6,6 @@ import unittest import apt_pkg -apt_pkg.config.set("Dir", "./aptroot") from mock import ( patch, diff -Nru unattended-upgrades-0.96/test/test_regression.py unattended-upgrades-0.93.1ubuntu8/test/test_regression.py --- unattended-upgrades-0.96/test/test_regression.py 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/test/test_regression.py 2016-12-11 11:31:26.000000000 +0100 @@ -1,8 +1,6 @@ #!/usr/bin/python3 # -*- coding: utf-8 -*- -import apt_pkg -apt_pkg.config.set("Dir", "./aptroot") import io import os import sys @@ -46,7 +44,6 @@ # mock options options = Mock() options.minimal_upgrade_steps = False - apt_pkg.config.set("Unattended-Upgrade::MinimalSteps", "False") do_install(cache=MockCache(), pkgs_to_upgrade=[pkg], blacklisted_pkgs=[], whitelisted_pkgs=[], options=options, diff -Nru unattended-upgrades-0.96/test/test_remove_unused.py unattended-upgrades-0.93.1ubuntu8/test/test_remove_unused.py --- unattended-upgrades-0.96/test/test_remove_unused.py 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/test/test_remove_unused.py 2017-08-01 00:28:34.000000000 +0200 @@ -4,8 +4,6 @@ import subprocess import unittest -import apt_pkg -apt_pkg.config.set("Dir", "./aptroot") import apt import unattended_upgrade @@ -95,7 +93,7 @@ Unattended-Upgrade::Remove-Unused-Dependencies "true"; """) options = MockOptions() - unattended_upgrade.LOCK_FILE = "./u-u.lock" + unattended_upgrade.DISTRO_DESC = "Ubuntu 10.04" unattended_upgrade.main( options, rootdir="./root.unused-deps") with open(self.log) as f: @@ -117,7 +115,7 @@ Unattended-Upgrade::Remove-New-Unused-Dependencies "true"; """) options = MockOptions() - unattended_upgrade.LOCK_FILE = "./u-u.lock" + unattended_upgrade.DISTRO_DESC = "Ubuntu 10.04" unattended_upgrade.main( options, rootdir="./root.unused-deps") with open(self.log) as f: diff -Nru unattended-upgrades-0.96/test/test_rewind.py unattended-upgrades-0.93.1ubuntu8/test/test_rewind.py --- unattended-upgrades-0.96/test/test_rewind.py 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/test/test_rewind.py 2017-08-01 00:28:34.000000000 +0200 @@ -3,8 +3,6 @@ import os import unittest -import apt_pkg -apt_pkg.config.set("Dir", "./aptroot") import apt import unattended_upgrade diff -Nru unattended-upgrades-0.96/test/test_substitute.py unattended-upgrades-0.93.1ubuntu8/test/test_substitute.py --- unattended-upgrades-0.96/test/test_substitute.py 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/test/test_substitute.py 2016-12-11 11:31:26.000000000 +0100 @@ -1,7 +1,6 @@ #!/usr/bin/python3 import apt_pkg -apt_pkg.config.set("Dir", "./aptroot") import logging import unittest diff -Nru unattended-upgrades-0.96/test/test_untrusted.py unattended-upgrades-0.93.1ubuntu8/test/test_untrusted.py --- unattended-upgrades-0.96/test/test_untrusted.py 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/test/test_untrusted.py 2017-08-01 00:28:34.000000000 +0200 @@ -3,8 +3,6 @@ import os import unittest -import apt_pkg -apt_pkg.config.set("Dir", "./aptroot") import apt import unattended_upgrade @@ -38,12 +36,18 @@ os.remove(self.log) def test_untrusted_check_without_conffile_check(self): + apt_conf = os.path.join(self.rootdir, "etc", "apt", "apt.conf") + with open(apt_conf, "w") as fp: + fp.write("""Unattended-Upgrade::Allowed-Origins { +"Ubuntu:lucid-security"; +}; +""") # ensure there is no conffile_prompt check apt.apt_pkg.config.set("DPkg::Options::", "--force-confold") # run it options = MockOptions() - unattended_upgrade.LOCK_FILE = "./u-u.lock" + unattended_upgrade.DISTRO_DESC = "Ubuntu 10.04" unattended_upgrade.main(options, rootdir=self.rootdir) # read the log to see what happend with open(self.log) as f: diff -Nru unattended-upgrades-0.96/test/unattended_upgrade.py unattended-upgrades-0.93.1ubuntu8/test/unattended_upgrade.py --- unattended-upgrades-0.96/test/unattended_upgrade.py 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/test/unattended_upgrade.py 2017-08-01 00:28:34.000000000 +0200 @@ -21,7 +21,6 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -import atexit import copy import datetime import errno @@ -42,14 +41,6 @@ import subprocess import sys -try: - from typing import AbstractSet, Iterable, List, Tuple - AbstractSet # pyflakes - Iterable # pyflakes - List # pyflakes - Tuple # pyflakes -except ImportError: - pass from datetime import date from email.message import Message @@ -76,14 +67,15 @@ USERS = "/usr/bin/users" # no py3 lsb_release in debian :/ DISTRO_CODENAME = subprocess.check_output( - ["lsb_release", "-c", "-s"], universal_newlines=True).strip() # type: str + ["lsb_release", "-c", "-s"], universal_newlines=True).strip() +DISTRO_DESC = subprocess.check_output( + ["lsb_release", "-d", "-s"], universal_newlines=True).strip() DISTRO_ID = subprocess.check_output( - ["lsb_release", "-i", "-s"], universal_newlines=True).strip() # type: str + ["lsb_release", "-i", "-s"], universal_newlines=True).strip() # progress information is written here PROGRESS_LOG = "/var/run/unattended-upgrades.progress" PID_FILE = "/var/run/unattended-upgrades.pid" -LOCK_FILE = "/var/run/unattended-upgrades.lock" # set from the sigint signal handler SIGNAL_STOP_REQUEST = False @@ -95,13 +87,11 @@ @classmethod def as_string(cls): - # type: () -> str """Return the current date and time as LOG_DATE_TIME_FMT string""" return datetime.datetime.now().strftime(cls.LOG_DATE_TIME_FMT) @classmethod def from_string(cls, logstr): - # type: (str) -> datetime.datetime """Take a LOG_DATE_TIME_FMT string and return datetime object""" return datetime.datetime.strptime(logstr, cls.LOG_DATE_TIME_FMT) @@ -113,20 +103,17 @@ class UnattendedUpgradesCache(apt.Cache): def __init__(self, rootdir, allowed_origins): - # type: (str, List[str]) -> None apt.Cache.__init__(self, rootdir=rootdir) self.allowed_origins = allowed_origins # ensure we update the candidate versions self.adjust_candidate_versions() def clear(self): - # type: () -> None apt.Cache.clear(self) # ensure we update the candidate versions self.adjust_candidate_versions() def adjust_candidate_versions(self): - # type: () -> None """ Adjust candidate versions to match highest allowed origin This adjusts the origin even if the candidate has a higher @@ -168,21 +155,18 @@ def __init__(self, logfile_dpkg, verbose=False, progress_log="var/run/unattended-upgrades.progress"): - # type: (str, bool, str) -> None apt.progress.base.InstallProgress.__init__(self) self.logfile_dpkg = logfile_dpkg self.progress_log = os.path.join(apt_pkg.config.find_dir("Dir"), progress_log) self.verbose = verbose - self.output_logfd = None # type: int + self.output_logfd = None def status_change(self, pkg, percent, status): - # type: (str, float, str) -> None with open(self.progress_log, "w") as f: f.write(_("Progress: %s %% (%s)") % (percent, pkg)) def _fixup_fds(self): - # () -> None required_fds = [0, 1, 2, # stdin, stdout, stderr self.writefd, self.write_stream.fileno(), @@ -216,13 +200,11 @@ print("ERROR: os.close(%s): %s" % (fd, e)) def _redirect_stdin(self): - # type: () -> None REDIRECT_INPUT = os.devnull fd = os.open(REDIRECT_INPUT, os.O_RDWR) os.dup2(fd, 0) def _redirect_output(self): - # type: () -> None # do not create log in dry-run mode, just output to stdout/stderr if not apt_pkg.config.find_b("Debug::pkgDPkgPM", False): logfd = self._get_logfile_dpkg_fd() @@ -230,7 +212,6 @@ os.dup2(logfd, 2) def _get_logfile_dpkg_fd(self): - # type: () -> int logfd = os.open( self.logfile_dpkg, os.O_RDWR | os.O_APPEND | os.O_CREAT, 0o640) try: @@ -241,13 +222,11 @@ return logfd def update_interface(self): - # type: () -> None # call super class first apt.progress.base.InstallProgress.update_interface(self) self._do_verbose_output_if_needed() def _do_verbose_output_if_needed(self): - # type: () -> None # if we are in debug mode, nothing to be more verbose about if apt_pkg.config.find_b("Debug::pkgDPkgPM", False): return @@ -258,27 +237,22 @@ os.lseek(self.output_logfd, 0, os.SEEK_END) try: select.select([self.output_logfd], [], [], 0) - # FIXME: this should be OSError, but in py2.7 it is still - # select.error except select.error as e: - if e.errno != errno.EINTR: # type: ignore + if e.errno != errno.EINTR: logging.exception("select failed") # output to stdout in verbose mode only os.write(1, os.read(self.output_logfd, 1024)) def _log_in_dpkg_log(self, msg): - # type: (str) -> None logfd = self._get_logfile_dpkg_fd() os.write(logfd, msg.encode("utf-8")) os.close(logfd) def finish_update(self): - # type: () -> None self._log_in_dpkg_log("Log ended: %s\n\n" % LoggingDateTime.as_string()) def fork(self): - # type: () -> int self._log_in_dpkg_log("Log started: %s\n" % LoggingDateTime.as_string()) pid = os.fork() @@ -295,14 +269,12 @@ """ def __enter__(self): - # type: () -> None try: apt_pkg.pkgsystem_unlock() except Exception: pass def __exit__(self, exc_type, exc_value, exc_tb): - # type: (object, object, object) -> None try: apt_pkg.pkgsystem_unlock() except Exception: @@ -310,7 +282,6 @@ def is_dpkg_journal_dirty(): - # type: () -> bool """ Return True if the dpkg journal is dirty (similar to debSystem::CheckUpdates) @@ -325,14 +296,12 @@ def signal_handler(signal, frame): - # type: (int, object) -> None - logging.warning("SIGTERM received, will stop") + logging.warning("SIGUSR1 received, will stop") global SIGNAL_STOP_REQUEST SIGNAL_STOP_REQUEST = True def substitute(line): - # type: (str) -> str """ substitude known mappings and return a new string Currently supported ${distro-release} @@ -343,19 +312,16 @@ def get_distro_codename(): - # type: () -> str return DISTRO_CODENAME def get_distro_id(): - # type: () -> str return DISTRO_ID def get_allowed_origins_legacy(): - # type: () -> List[str] """ legacy support for old Allowed-Origins var """ - allowed_origins = [] # type: List[str] + allowed_origins = [] key = "Unattended-Upgrade::Allowed-Origins" try: for s in apt_pkg.config.value_list(key): @@ -379,7 +345,6 @@ def get_allowed_origins(): - # type: () -> List[str] """ return a list of allowed origins from apt.conf This will take substitutions (like distro_id) into account. @@ -396,7 +361,6 @@ def match_whitelist_string(whitelist, origin): - # type: (str, apt.package.Origin) -> bool """ take a whitelist string in the form "origin=Debian,label=Debian-Security" and match against the given python-apt origin. A empty whitelist string @@ -420,34 +384,27 @@ # first char is apt-cache policy output, send is the name # in the Release file if what in ("o", "origin"): - match = fnmatch.fnmatch(origin.origin, value) + res &= fnmatch.fnmatch(origin.origin, value) elif what in ("l", "label"): - match = fnmatch.fnmatch(origin.label, value) + res &= fnmatch.fnmatch(origin.label, value) elif what in ("a", "suite", "archive"): - match = fnmatch.fnmatch(origin.archive, value) + res &= fnmatch.fnmatch(origin.archive, value) elif what in ("c", "component"): - match = fnmatch.fnmatch(origin.component, value) + res &= fnmatch.fnmatch(origin.component, value) elif what in ("site",): - match = fnmatch.fnmatch(origin.site, value) + res &= fnmatch.fnmatch(origin.site, value) elif what in ("n", "codename",): - match = fnmatch.fnmatch(origin.codename, value) + res &= fnmatch.fnmatch(origin.codename, value) else: raise UnknownMatcherError( - "Unknown whitelist entry for matcher '%s' (token '%s')" % ( + "Unknown whitelist entry for macher '%s' (token '%s')" % ( what, token)) - # update res - res = res and match # logging.debug("matching '%s'='%s' against '%s'" % ( # what, value, origin)) return res -def cache_commit(cache, # type: apt.Cache - logfile_dpkg, # type: str - verbose, # type: bool - iprogress=None, # type: apt.progress.base.InstallProgress - ): - # type: (...) -> Tuple[bool, Exception] +def cache_commit(cache, logfile_dpkg, verbose, iprogress=None): """Commit the changes from the given cache to the system""" # set debconf to NON_INTERACTIVE, redirect output os.putenv("DEBIAN_FRONTEND", "noninteractive") @@ -473,7 +430,6 @@ def upgrade_normal(cache, logfile_dpkg, verbose): - # type: (apt.Cache, str, bool) -> bool res, error = cache_commit(cache, logfile_dpkg, verbose) if res: logging.info(_("All upgrades installed")) @@ -485,15 +441,14 @@ return res -def upgrade_in_minimal_steps(cache, # type: apt.Cache - pkgs_to_upgrade, # type: List[str] - blacklist, # type: List[str] - whitelist, # type: List[str] - logfile_dpkg="", # type: str - verbose=False, # type: bool - ): - # type: (...) -> bool +def upgrade_in_minimal_steps(cache, pkgs_to_upgrade, blacklist, + whitelist, logfile_dpkg="", verbose=False): + install_log = LogInstallProgress(logfile_dpkg, verbose) + install_log.progress_log += ".minimal-steps" + + # setup signal handler + signal.signal(signal.SIGUSR1, signal_handler) # double check any changes we do allowed_origins = get_allowed_origins() @@ -502,7 +457,7 @@ to_upgrade = set(pkgs_to_upgrade) while True: # find smallest set - smallest_partition = [] # type: List[str] + smallest_partition = set() for pkgname in to_upgrade: if SIGNAL_STOP_REQUEST: logging.warning("SIGNAL received, stopping") @@ -580,7 +535,6 @@ def is_allowed_origin(ver, allowed_origins): - # type: (apt.package.Version, List[str]) -> bool if not ver: return False for origin in ver.origins: @@ -590,18 +544,15 @@ return False -def is_pkgname_in_blacklist(pkgname, blacklist, pkgs_kept_back): - # type: (str, List[str], List[str]) -> bool +def is_pkgname_in_blacklist(pkgname, blacklist): for blacklist_regexp in blacklist: if re.match(blacklist_regexp, pkgname): logging.debug("skipping blacklisted package '%s'" % pkgname) - pkgs_kept_back.append(pkgname) return True return False def is_pkgname_in_whitelist(pkgname, whitelist): - # type: (str, List[str]) -> bool # a empty whitelist means the user does not want to use this feature if not whitelist: return True @@ -615,7 +566,6 @@ def check_changes_for_sanity(cache, allowed_origins, blacklist, whitelist, desired_pkg=None): - # type: (apt.Cache, List[str], List[str], List[str], apt.Package) -> bool if cache._depcache.broken_count != 0: return False # If there are no packages to be installed they were kept back @@ -634,7 +584,7 @@ if not is_allowed_origin(pkg.candidate, allowed_origins): logging.debug("pkg '%s' not in allowed origin" % pkg.name) return False - if is_pkgname_in_blacklist(pkg.name, blacklist, []): + if is_pkgname_in_blacklist(pkg.name, blacklist): logging.debug("pkg '%s' package has been blacklisted" % pkg.name) return False @@ -669,7 +619,6 @@ def pkgname_from_deb(debfile): - # type: (str) -> str # FIXME: add error checking here try: control = apt_inst.DebFile(debfile).control.extractdata("control") @@ -682,7 +631,6 @@ def get_md5sum_for_file_in_deb(deb_file, conf_file): - # type: (str, str) -> str dpkg_cmd = ["dpkg-deb", "--fsys-tarfile", deb_file] tar_cmd = ["tar", "-x", "-O", "-f", "-", "." + conf_file] md5_cmd = ["md5sum"] @@ -697,7 +645,6 @@ # prefix is *only* needed for the build-in tests def conffile_prompt(destFile, prefix=""): - # type: (str, str) -> bool logging.debug("check_conffile_prompt('%s')" % destFile) pkgname = pkgname_from_deb(destFile) @@ -794,7 +741,6 @@ def dpkg_conffile_prompt(): - # type: () -> bool if "DPkg::Options" not in apt_pkg.config: return True options = apt_pkg.config.value_list("DPkg::Options") @@ -806,7 +752,6 @@ def rewind_cache(cache, pkgs_to_upgrade): - # type: (apt.Cache, List[apt.Package]) -> None """ set the cache back to the state with packages_to_upgrade """ cache.clear() for pkg2 in pkgs_to_upgrade: @@ -816,14 +761,12 @@ def host(): - # type: () -> str return os.uname()[1] # *sigh* textwrap is nice, but it breaks "linux-image" into two # seperate lines def wrap(t, width=70, subsequent_indent=""): - # type: (str, int, str) -> str out = "" for s in t.split(): if (len(out) - out.rfind("\n")) + len(s) > width: @@ -833,7 +776,6 @@ def setup_apt_listchanges(conf="/etc/apt/listchanges.conf"): - # type: (str) -> None """ deal with apt-listchanges """ # apt-listchanges will always send a mail if there is a mail address # set in the config regardless of the frontend used, so set it to @@ -846,7 +788,6 @@ def _send_mail_using_mailx(from_address, to_address, subject, body): - # type: (str, str, str, str) -> int # ensure that the body is a byte stream and that we do not # break on encoding errors (the default error mode is "strict") encoded_body = body.encode( @@ -864,7 +805,6 @@ def _send_mail_using_sendmail(from_address, to_address, subject, body): - # type: (str, str, str, str) -> int # format as a proper mail msg = Message() msg['Subject'] = subject @@ -873,7 +813,7 @@ # order is important here, Message() first, then Charset() # then msg.set_charset() charset = email.charset.Charset("utf-8") - charset.body_encoding = email.charset.QP # type: ignore + charset.body_encoding = email.charset.QP msg.set_payload(body, charset) # and send it away sendmail = subprocess.Popen( @@ -886,7 +826,6 @@ def send_summary_mail(pkgs, res, pkgs_kept_back, mem_log, dpkg_log_content): - # type: (str, bool, List[str], StringIO, str) -> None """ send mail (if configured in Unattended-Upgrade::Mail) """ to_email = apt_pkg.config.find("Unattended-Upgrade::Mail", "") if not to_email: @@ -950,14 +889,8 @@ logging.debug("mail returned: %s", ret) -def do_install(cache, # type: apt.Cache - pkgs_to_upgrade, # type: List[apt.Package] - blacklisted_pkgs, # type: List[str] - whitelisted_pkgs, # type: List[str] - options, # type: Options - logfile_dpkg, # type: str - ): - # type: (...) -> bool +def do_install(cache, pkgs_to_upgrade, blacklisted_pkgs, whitelisted_pkgs, + options, logfile_dpkg): # set debconf to NON_INTERACTIVE, redirect output os.putenv("DEBIAN_FRONTEND", "noninteractive") setup_apt_listchanges() @@ -974,10 +907,14 @@ try: if (options.minimal_upgrade_steps or # COMPAT with the mispelling - (apt_pkg.config.find_b( - "Unattended-Upgrades::MinimalSteps", True) and - apt_pkg.config.find_b( - "Unattended-Upgrade::MinimalSteps", True))): + apt_pkg.config.find_b( + "Unattended-Upgrades::MinimalSteps", False) or + apt_pkg.config.find_b( + "Unattended-Upgrade::MinimalSteps", False)): + pidf = os.path.join(apt_pkg.config.find_dir("Dir"), + "var", "run", "unattended-upgrades.pid") + with open(pidf, "w") as fp: + fp.write("%s" % os.getpid()) # try upgrade all "pkgs" in minimal steps pkg_install_success = upgrade_in_minimal_steps( cache, [pkg.name for pkg in pkgs_to_upgrade], @@ -995,7 +932,6 @@ def _setup_alternative_rootdir(rootdir): - # type: (str) -> None # clear system unattended-upgrade stuff apt_pkg.config.clear("Unattended-Upgrade") # read rootdir (taken from apt.Cache, but we need to run it @@ -1013,7 +949,6 @@ def _get_logdir(): - # type: () -> str logdir = apt_pkg.config.find_dir( "Unattended-Upgrade::LogDir", # COMPAT only @@ -1023,11 +958,9 @@ def _setup_logging(options): - # type: (Options) -> StringIO - # ensure this is run only once if len(logging.root.handlers) > 0: - return None + return # init the logging logdir = _get_logdir() @@ -1073,8 +1006,7 @@ facility=syslogFacility) syslogHandler.setFormatter( logging.Formatter("unattended-upgrade: %(message)s")) - known = syslogHandler.facility_names.keys() # type: ignore - if syslogFacility.lower() in known: + if syslogFacility.lower() in syslogHandler.facility_names.keys(): logger.addHandler(syslogHandler) logging.info("Enabled logging to syslog via %s facility " % syslogFacility) @@ -1085,17 +1017,14 @@ def get_blacklisted_pkgs(): - # type: () -> List[str] return apt_pkg.config.value_list("Unattended-Upgrade::Package-Blacklist") def get_whitelisted_pkgs(): - # type: () -> List[str] return apt_pkg.config.value_list("Unattended-Upgrade::Package-Whitelist") def logged_in_users(): - # type: () -> AbstractSet[str] """Return a list of logged in users""" # the "users" command always returns a single line with: # "user1, user1, user2" @@ -1104,8 +1033,7 @@ return set(users.split()) -def reboot_if_requested_and_needed(): - # type: () -> None +def reboot_if_requested_and_needed(shutdown_lock=0): """auto-reboot (if required and the config for this is set)""" if not os.path.exists(REBOOT_REQUIRED_FILE): return @@ -1128,12 +1056,13 @@ # reboot at the specified time when = apt_pkg.config.find( "Unattended-Upgrade::Automatic-Reboot-Time", "now") + if shutdown_lock > 0: + os.close(shutdown_lock) logging.warning("Found %s, rebooting" % REBOOT_REQUIRED_FILE) subprocess.call(["/sbin/shutdown", "-r", when]) def write_stamp_file(): - # type: () -> None statedir = os.path.join(apt_pkg.config.find_dir("Dir::State"), "periodic") if not os.path.exists(statedir): os.makedirs(statedir) @@ -1141,15 +1070,9 @@ pass -def try_to_upgrade(pkg, # type: apt.Package - pkgs_to_upgrade, # type: List[apt.Package] - pkgs_kept_back, # type: List[str] - cache, # type: apt.Cache - allowed_origins, # type: List[str] - blacklisted_pkgs, # type: List[str] - whitelisted_pkgs, # type: List[str] - ): - # type: (...) -> None +def try_to_upgrade(pkg, pkgs_to_upgrade, pkgs_kept_back, cache, + allowed_origins, blacklisted_pkgs, whitelisted_pkgs): + try: pkg.mark_upgrade(from_user=not pkg.is_auto_installed) if check_changes_for_sanity(cache, allowed_origins, @@ -1178,25 +1101,18 @@ pkgs_kept_back.append(pkg.name) -def calculate_upgradable_pkgs(cache, # type: apt.Cache - options, # type: Options - allowed_origins, # type: List[str] - blacklisted_pkgs, # type: List[str] - whitelisted_pkgs, # type: List[str] - ): - # type: (...) -> Tuple[List[apt.Package], List[str]] - pkgs_to_upgrade = [] # type: List[apt.Package] - pkgs_kept_back = [] # type: List[str] +def calculate_upgradable_pkgs(cache, options, allowed_origins, + blacklisted_pkgs, whitelisted_pkgs): + pkgs_to_upgrade = [] + pkgs_kept_back = [] # now do the actual upgrade for pkg in cache: if options.debug and pkg.is_upgradable: logging.debug("Checking: %s (%s)" % ( pkg.name, getattr(pkg.candidate, "origins", []))) - if (pkg.is_upgradable and - not is_pkgname_in_blacklist(pkg.name, blacklisted_pkgs, - pkgs_kept_back) and + not is_pkgname_in_blacklist(pkg.name, blacklisted_pkgs) and is_pkgname_in_whitelist(pkg.name, whitelisted_pkgs) and is_allowed_origin(pkg.candidate, allowed_origins)): @@ -1211,7 +1127,6 @@ def get_dpkg_log_content(logfile_dpkg, install_start_time): - # type: (str, datetime.datetime) -> str logging.debug("Extracting content from '%s' since '%s'" % ( logfile_dpkg, install_start_time)) content = [] @@ -1232,14 +1147,12 @@ def get_auto_removable(cache): - # type: (apt.Cache) -> AbstractSet[str] return set([pkg.name for pkg in cache if pkg.is_auto_removable]) def do_auto_remove(cache, auto_removable, logfile_dpkg, verbose=False, dry_run=False): - # type: (apt.Cache, Iterable[str], str, bool, bool) -> bool if not auto_removable: return True @@ -1263,7 +1176,6 @@ def clean_downloaded_packages(fetcher): - # type: (apt_pkg.Acquire) -> None archivedir = os.path.dirname( apt_pkg.config.find_dir("Dir::Cache::archives")) for item in fetcher.items: @@ -1275,7 +1187,6 @@ def is_update_day(): - # type: () -> bool # check if patch days are configured patch_days = apt_pkg.config.value_list("Unattended-Upgrade::Update-Days") if not patch_days: @@ -1300,7 +1211,6 @@ def main(options, rootdir=""): - # type: (Options, str) -> None # useful for testing if rootdir: _setup_alternative_rootdir(rootdir) @@ -1312,6 +1222,11 @@ if not is_update_day(): return + # check to see if want to auto-upgrade the devel release + if "(development branch)" in DISTRO_DESC and not\ + apt_pkg.config.find_b("Unattended-Upgrade::DevRelease", False): + logging.info(_("Not running on the development release.")) + return # format (origin, archive), e.g. ("Ubuntu","dapper-security") allowed_origins = get_allowed_origins() @@ -1327,12 +1242,6 @@ logging.info(_("Starting unattended upgrades script")) - # lock for the shutdown check - shutdown_lock = apt_pkg.get_lock(LOCK_FILE) - if shutdown_lock < 0: - logging.error("Lock file is already taken, exiting") - sys.exit(1) - # display available origin logging.info(_("Allowed origins are: %s"), allowed_origins) @@ -1421,12 +1330,6 @@ list.read_main_list() recs = cache._records pm = apt_pkg.PackageManager(cache._depcache) - # don't start downloading during shutdown - # TODO: download files one by one and check for stop request after each of - # them - if SIGNAL_STOP_REQUEST: - logging.warning("SIGNAL received, stopping") - return try: pm.get_archives(fetcher, list, recs) except SystemError as e: @@ -1513,7 +1416,7 @@ "Unattended-Upgrade::Remove-Unused-Dependencies", False): pending_autoremovals = previous_autoremovals else: - pending_autoremovals = set() + pending_autoremovals = [] # exit if there is nothing to do and nothing to report if (len(pending_autoremovals) == 0 and @@ -1525,7 +1428,6 @@ write_stamp_file() # check if we couldn't reboot on previous run because # a user was logged-in at this time - os.close(shutdown_lock) reboot_if_requested_and_needed() return @@ -1537,7 +1439,6 @@ "Unattended-Upgrade::InstallOnShutdown", False)): logger = logging.getLogger() logger.debug("Configured to install on shutdown, so exiting now") - os.close(shutdown_lock) return # check if we are in dry-run mode @@ -1557,7 +1458,11 @@ # only perform install step if we actually have packages to install pkg_install_success = True + shutdown_lock = -1 if len(pkgs_to_upgrade) > 0: + # lock for the shutdown check - its fine if the system + # is shutdown while downloading but not so much while installing + shutdown_lock = apt_pkg.get_lock("/var/run/unattended-upgrades.lock") # do install pkg_install_success = do_install(cache, pkgs_to_upgrade, @@ -1578,7 +1483,7 @@ if apt_pkg.config.find_b( "Unattended-Upgrade::Remove-Unused-Dependencies", False): auto_removals = get_auto_removable(cache) - pkg_install_success = pkg_install_success and do_auto_remove( + pkg_install_success &= do_auto_remove( cache, auto_removals, logfile_dpkg, options.verbose or options.debug, options.dry_run) @@ -1588,7 +1493,7 @@ # calculate the new auto-removals new_pending_autoremovals = get_auto_removable(cache) auto_removals = new_pending_autoremovals - previous_autoremovals - pkg_install_success = pkg_install_success and do_auto_remove( + pkg_install_success &= do_auto_remove( cache, auto_removals, logfile_dpkg, options.verbose or options.debug, options.dry_run) @@ -1615,20 +1520,9 @@ # write timestamp file write_stamp_file() - os.close(shutdown_lock) # check if the user wants a reboot if not options.dry_run: - reboot_if_requested_and_needed() - - -class Options: - def __init__(self): - self.download_only = False - self.dry_run = False - self.debug = False - self.apt_debug = False - self.verbose = False - self.minimal_upgrade_steps = False + reboot_if_requested_and_needed(shutdown_lock) if __name__ == "__main__": @@ -1660,12 +1554,12 @@ parser.add_option("", "--minimal-upgrade-steps", action="store_true", default=False, help=_("Upgrade in minimal steps (and allow " - "interrupting with SIGTERM")) + "interrupting with SIGINT")) parser.add_option("", "--minimal_upgrade_steps", action="store_true", help=SUPPRESS_HELP, default=False) - (options, args) = parser.parse_args() # type: ignore + (options, args) = parser.parse_args() if os.getuid() != 0: print(_("You need to be root to run this application")) @@ -1675,16 +1569,5 @@ # shutdown signal.signal(signal.SIGHUP, signal.SIG_IGN) - # setup signal handler for graceful stopping - signal.signal(signal.SIGTERM, signal_handler) - - # write pid to let other processes find this one - pidf = os.path.join(apt_pkg.config.find_dir("Dir"), - "var", "run", "unattended-upgrades.pid") - # clean up pid file on exit - with open(pidf, "w") as fp: - fp.write("%s" % os.getpid()) - atexit.register(os.remove, pidf) - # run the main code main(options) diff -Nru unattended-upgrades-0.96/.travis.yml unattended-upgrades-0.93.1ubuntu8/.travis.yml --- unattended-upgrades-0.96/.travis.yml 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/.travis.yml 2016-12-11 11:31:26.000000000 +0100 @@ -11,10 +11,6 @@ - sudo apt-get update - sudo apt-get install -y python python3-distutils-extra python3-setuptools python-dev python3-dev python-coverage pep8 pyflakes python-apt python3-apt python-mock python3-mock lsb-release dh-systemd - which python3 - - sudo apt-get install python3-pip - - sudo python3 -m pip install -U mypy # travis is "funny" it has a non-distro python3 that will not find # python modules installed via apt-get -script: - - (cd test ; PATH=/usr/bin:/usr/local/bin:$PATH make) - - sudo unattended-upgrades -v +script: (cd test ; PATH=/usr/bin:$PATH make) diff -Nru unattended-upgrades-0.96/unattended-upgrade unattended-upgrades-0.93.1ubuntu8/unattended-upgrade --- unattended-upgrades-0.96/unattended-upgrade 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/unattended-upgrade 2017-08-01 00:28:34.000000000 +0200 @@ -21,7 +21,6 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -import atexit import copy import datetime import errno @@ -42,14 +41,6 @@ import subprocess import sys -try: - from typing import AbstractSet, Iterable, List, Tuple - AbstractSet # pyflakes - Iterable # pyflakes - List # pyflakes - Tuple # pyflakes -except ImportError: - pass from datetime import date from email.message import Message @@ -76,14 +67,15 @@ USERS = "/usr/bin/users" # no py3 lsb_release in debian :/ DISTRO_CODENAME = subprocess.check_output( - ["lsb_release", "-c", "-s"], universal_newlines=True).strip() # type: str + ["lsb_release", "-c", "-s"], universal_newlines=True).strip() +DISTRO_DESC = subprocess.check_output( + ["lsb_release", "-d", "-s"], universal_newlines=True).strip() DISTRO_ID = subprocess.check_output( - ["lsb_release", "-i", "-s"], universal_newlines=True).strip() # type: str + ["lsb_release", "-i", "-s"], universal_newlines=True).strip() # progress information is written here PROGRESS_LOG = "/var/run/unattended-upgrades.progress" PID_FILE = "/var/run/unattended-upgrades.pid" -LOCK_FILE = "/var/run/unattended-upgrades.lock" # set from the sigint signal handler SIGNAL_STOP_REQUEST = False @@ -95,13 +87,11 @@ @classmethod def as_string(cls): - # type: () -> str """Return the current date and time as LOG_DATE_TIME_FMT string""" return datetime.datetime.now().strftime(cls.LOG_DATE_TIME_FMT) @classmethod def from_string(cls, logstr): - # type: (str) -> datetime.datetime """Take a LOG_DATE_TIME_FMT string and return datetime object""" return datetime.datetime.strptime(logstr, cls.LOG_DATE_TIME_FMT) @@ -113,20 +103,17 @@ class UnattendedUpgradesCache(apt.Cache): def __init__(self, rootdir, allowed_origins): - # type: (str, List[str]) -> None apt.Cache.__init__(self, rootdir=rootdir) self.allowed_origins = allowed_origins # ensure we update the candidate versions self.adjust_candidate_versions() def clear(self): - # type: () -> None apt.Cache.clear(self) # ensure we update the candidate versions self.adjust_candidate_versions() def adjust_candidate_versions(self): - # type: () -> None """ Adjust candidate versions to match highest allowed origin This adjusts the origin even if the candidate has a higher @@ -168,21 +155,18 @@ def __init__(self, logfile_dpkg, verbose=False, progress_log="var/run/unattended-upgrades.progress"): - # type: (str, bool, str) -> None apt.progress.base.InstallProgress.__init__(self) self.logfile_dpkg = logfile_dpkg self.progress_log = os.path.join(apt_pkg.config.find_dir("Dir"), progress_log) self.verbose = verbose - self.output_logfd = None # type: int + self.output_logfd = None def status_change(self, pkg, percent, status): - # type: (str, float, str) -> None with open(self.progress_log, "w") as f: f.write(_("Progress: %s %% (%s)") % (percent, pkg)) def _fixup_fds(self): - # () -> None required_fds = [0, 1, 2, # stdin, stdout, stderr self.writefd, self.write_stream.fileno(), @@ -216,13 +200,11 @@ print("ERROR: os.close(%s): %s" % (fd, e)) def _redirect_stdin(self): - # type: () -> None REDIRECT_INPUT = os.devnull fd = os.open(REDIRECT_INPUT, os.O_RDWR) os.dup2(fd, 0) def _redirect_output(self): - # type: () -> None # do not create log in dry-run mode, just output to stdout/stderr if not apt_pkg.config.find_b("Debug::pkgDPkgPM", False): logfd = self._get_logfile_dpkg_fd() @@ -230,7 +212,6 @@ os.dup2(logfd, 2) def _get_logfile_dpkg_fd(self): - # type: () -> int logfd = os.open( self.logfile_dpkg, os.O_RDWR | os.O_APPEND | os.O_CREAT, 0o640) try: @@ -241,13 +222,11 @@ return logfd def update_interface(self): - # type: () -> None # call super class first apt.progress.base.InstallProgress.update_interface(self) self._do_verbose_output_if_needed() def _do_verbose_output_if_needed(self): - # type: () -> None # if we are in debug mode, nothing to be more verbose about if apt_pkg.config.find_b("Debug::pkgDPkgPM", False): return @@ -258,27 +237,22 @@ os.lseek(self.output_logfd, 0, os.SEEK_END) try: select.select([self.output_logfd], [], [], 0) - # FIXME: this should be OSError, but in py2.7 it is still - # select.error except select.error as e: - if e.errno != errno.EINTR: # type: ignore + if e.errno != errno.EINTR: logging.exception("select failed") # output to stdout in verbose mode only os.write(1, os.read(self.output_logfd, 1024)) def _log_in_dpkg_log(self, msg): - # type: (str) -> None logfd = self._get_logfile_dpkg_fd() os.write(logfd, msg.encode("utf-8")) os.close(logfd) def finish_update(self): - # type: () -> None self._log_in_dpkg_log("Log ended: %s\n\n" % LoggingDateTime.as_string()) def fork(self): - # type: () -> int self._log_in_dpkg_log("Log started: %s\n" % LoggingDateTime.as_string()) pid = os.fork() @@ -295,14 +269,12 @@ """ def __enter__(self): - # type: () -> None try: apt_pkg.pkgsystem_unlock() except Exception: pass def __exit__(self, exc_type, exc_value, exc_tb): - # type: (object, object, object) -> None try: apt_pkg.pkgsystem_unlock() except Exception: @@ -310,7 +282,6 @@ def is_dpkg_journal_dirty(): - # type: () -> bool """ Return True if the dpkg journal is dirty (similar to debSystem::CheckUpdates) @@ -325,14 +296,12 @@ def signal_handler(signal, frame): - # type: (int, object) -> None - logging.warning("SIGTERM received, will stop") + logging.warning("SIGUSR1 received, will stop") global SIGNAL_STOP_REQUEST SIGNAL_STOP_REQUEST = True def substitute(line): - # type: (str) -> str """ substitude known mappings and return a new string Currently supported ${distro-release} @@ -343,19 +312,16 @@ def get_distro_codename(): - # type: () -> str return DISTRO_CODENAME def get_distro_id(): - # type: () -> str return DISTRO_ID def get_allowed_origins_legacy(): - # type: () -> List[str] """ legacy support for old Allowed-Origins var """ - allowed_origins = [] # type: List[str] + allowed_origins = [] key = "Unattended-Upgrade::Allowed-Origins" try: for s in apt_pkg.config.value_list(key): @@ -379,7 +345,6 @@ def get_allowed_origins(): - # type: () -> List[str] """ return a list of allowed origins from apt.conf This will take substitutions (like distro_id) into account. @@ -396,7 +361,6 @@ def match_whitelist_string(whitelist, origin): - # type: (str, apt.package.Origin) -> bool """ take a whitelist string in the form "origin=Debian,label=Debian-Security" and match against the given python-apt origin. A empty whitelist string @@ -420,34 +384,27 @@ # first char is apt-cache policy output, send is the name # in the Release file if what in ("o", "origin"): - match = fnmatch.fnmatch(origin.origin, value) + res &= fnmatch.fnmatch(origin.origin, value) elif what in ("l", "label"): - match = fnmatch.fnmatch(origin.label, value) + res &= fnmatch.fnmatch(origin.label, value) elif what in ("a", "suite", "archive"): - match = fnmatch.fnmatch(origin.archive, value) + res &= fnmatch.fnmatch(origin.archive, value) elif what in ("c", "component"): - match = fnmatch.fnmatch(origin.component, value) + res &= fnmatch.fnmatch(origin.component, value) elif what in ("site",): - match = fnmatch.fnmatch(origin.site, value) + res &= fnmatch.fnmatch(origin.site, value) elif what in ("n", "codename",): - match = fnmatch.fnmatch(origin.codename, value) + res &= fnmatch.fnmatch(origin.codename, value) else: raise UnknownMatcherError( - "Unknown whitelist entry for matcher '%s' (token '%s')" % ( + "Unknown whitelist entry for macher '%s' (token '%s')" % ( what, token)) - # update res - res = res and match # logging.debug("matching '%s'='%s' against '%s'" % ( # what, value, origin)) return res -def cache_commit(cache, # type: apt.Cache - logfile_dpkg, # type: str - verbose, # type: bool - iprogress=None, # type: apt.progress.base.InstallProgress - ): - # type: (...) -> Tuple[bool, Exception] +def cache_commit(cache, logfile_dpkg, verbose, iprogress=None): """Commit the changes from the given cache to the system""" # set debconf to NON_INTERACTIVE, redirect output os.putenv("DEBIAN_FRONTEND", "noninteractive") @@ -473,7 +430,6 @@ def upgrade_normal(cache, logfile_dpkg, verbose): - # type: (apt.Cache, str, bool) -> bool res, error = cache_commit(cache, logfile_dpkg, verbose) if res: logging.info(_("All upgrades installed")) @@ -485,15 +441,14 @@ return res -def upgrade_in_minimal_steps(cache, # type: apt.Cache - pkgs_to_upgrade, # type: List[str] - blacklist, # type: List[str] - whitelist, # type: List[str] - logfile_dpkg="", # type: str - verbose=False, # type: bool - ): - # type: (...) -> bool +def upgrade_in_minimal_steps(cache, pkgs_to_upgrade, blacklist, + whitelist, logfile_dpkg="", verbose=False): + install_log = LogInstallProgress(logfile_dpkg, verbose) + install_log.progress_log += ".minimal-steps" + + # setup signal handler + signal.signal(signal.SIGUSR1, signal_handler) # double check any changes we do allowed_origins = get_allowed_origins() @@ -502,7 +457,7 @@ to_upgrade = set(pkgs_to_upgrade) while True: # find smallest set - smallest_partition = [] # type: List[str] + smallest_partition = set() for pkgname in to_upgrade: if SIGNAL_STOP_REQUEST: logging.warning("SIGNAL received, stopping") @@ -580,7 +535,6 @@ def is_allowed_origin(ver, allowed_origins): - # type: (apt.package.Version, List[str]) -> bool if not ver: return False for origin in ver.origins: @@ -590,18 +544,15 @@ return False -def is_pkgname_in_blacklist(pkgname, blacklist, pkgs_kept_back): - # type: (str, List[str], List[str]) -> bool +def is_pkgname_in_blacklist(pkgname, blacklist): for blacklist_regexp in blacklist: if re.match(blacklist_regexp, pkgname): logging.debug("skipping blacklisted package '%s'" % pkgname) - pkgs_kept_back.append(pkgname) return True return False def is_pkgname_in_whitelist(pkgname, whitelist): - # type: (str, List[str]) -> bool # a empty whitelist means the user does not want to use this feature if not whitelist: return True @@ -615,7 +566,6 @@ def check_changes_for_sanity(cache, allowed_origins, blacklist, whitelist, desired_pkg=None): - # type: (apt.Cache, List[str], List[str], List[str], apt.Package) -> bool if cache._depcache.broken_count != 0: return False # If there are no packages to be installed they were kept back @@ -634,7 +584,7 @@ if not is_allowed_origin(pkg.candidate, allowed_origins): logging.debug("pkg '%s' not in allowed origin" % pkg.name) return False - if is_pkgname_in_blacklist(pkg.name, blacklist, []): + if is_pkgname_in_blacklist(pkg.name, blacklist): logging.debug("pkg '%s' package has been blacklisted" % pkg.name) return False @@ -669,7 +619,6 @@ def pkgname_from_deb(debfile): - # type: (str) -> str # FIXME: add error checking here try: control = apt_inst.DebFile(debfile).control.extractdata("control") @@ -682,7 +631,6 @@ def get_md5sum_for_file_in_deb(deb_file, conf_file): - # type: (str, str) -> str dpkg_cmd = ["dpkg-deb", "--fsys-tarfile", deb_file] tar_cmd = ["tar", "-x", "-O", "-f", "-", "." + conf_file] md5_cmd = ["md5sum"] @@ -697,7 +645,6 @@ # prefix is *only* needed for the build-in tests def conffile_prompt(destFile, prefix=""): - # type: (str, str) -> bool logging.debug("check_conffile_prompt('%s')" % destFile) pkgname = pkgname_from_deb(destFile) @@ -794,7 +741,6 @@ def dpkg_conffile_prompt(): - # type: () -> bool if "DPkg::Options" not in apt_pkg.config: return True options = apt_pkg.config.value_list("DPkg::Options") @@ -806,7 +752,6 @@ def rewind_cache(cache, pkgs_to_upgrade): - # type: (apt.Cache, List[apt.Package]) -> None """ set the cache back to the state with packages_to_upgrade """ cache.clear() for pkg2 in pkgs_to_upgrade: @@ -816,14 +761,12 @@ def host(): - # type: () -> str return os.uname()[1] # *sigh* textwrap is nice, but it breaks "linux-image" into two # seperate lines def wrap(t, width=70, subsequent_indent=""): - # type: (str, int, str) -> str out = "" for s in t.split(): if (len(out) - out.rfind("\n")) + len(s) > width: @@ -833,7 +776,6 @@ def setup_apt_listchanges(conf="/etc/apt/listchanges.conf"): - # type: (str) -> None """ deal with apt-listchanges """ # apt-listchanges will always send a mail if there is a mail address # set in the config regardless of the frontend used, so set it to @@ -846,7 +788,6 @@ def _send_mail_using_mailx(from_address, to_address, subject, body): - # type: (str, str, str, str) -> int # ensure that the body is a byte stream and that we do not # break on encoding errors (the default error mode is "strict") encoded_body = body.encode( @@ -864,7 +805,6 @@ def _send_mail_using_sendmail(from_address, to_address, subject, body): - # type: (str, str, str, str) -> int # format as a proper mail msg = Message() msg['Subject'] = subject @@ -873,7 +813,7 @@ # order is important here, Message() first, then Charset() # then msg.set_charset() charset = email.charset.Charset("utf-8") - charset.body_encoding = email.charset.QP # type: ignore + charset.body_encoding = email.charset.QP msg.set_payload(body, charset) # and send it away sendmail = subprocess.Popen( @@ -886,7 +826,6 @@ def send_summary_mail(pkgs, res, pkgs_kept_back, mem_log, dpkg_log_content): - # type: (str, bool, List[str], StringIO, str) -> None """ send mail (if configured in Unattended-Upgrade::Mail) """ to_email = apt_pkg.config.find("Unattended-Upgrade::Mail", "") if not to_email: @@ -950,14 +889,8 @@ logging.debug("mail returned: %s", ret) -def do_install(cache, # type: apt.Cache - pkgs_to_upgrade, # type: List[apt.Package] - blacklisted_pkgs, # type: List[str] - whitelisted_pkgs, # type: List[str] - options, # type: Options - logfile_dpkg, # type: str - ): - # type: (...) -> bool +def do_install(cache, pkgs_to_upgrade, blacklisted_pkgs, whitelisted_pkgs, + options, logfile_dpkg): # set debconf to NON_INTERACTIVE, redirect output os.putenv("DEBIAN_FRONTEND", "noninteractive") setup_apt_listchanges() @@ -974,10 +907,14 @@ try: if (options.minimal_upgrade_steps or # COMPAT with the mispelling - (apt_pkg.config.find_b( - "Unattended-Upgrades::MinimalSteps", True) and - apt_pkg.config.find_b( - "Unattended-Upgrade::MinimalSteps", True))): + apt_pkg.config.find_b( + "Unattended-Upgrades::MinimalSteps", False) or + apt_pkg.config.find_b( + "Unattended-Upgrade::MinimalSteps", False)): + pidf = os.path.join(apt_pkg.config.find_dir("Dir"), + "var", "run", "unattended-upgrades.pid") + with open(pidf, "w") as fp: + fp.write("%s" % os.getpid()) # try upgrade all "pkgs" in minimal steps pkg_install_success = upgrade_in_minimal_steps( cache, [pkg.name for pkg in pkgs_to_upgrade], @@ -995,7 +932,6 @@ def _setup_alternative_rootdir(rootdir): - # type: (str) -> None # clear system unattended-upgrade stuff apt_pkg.config.clear("Unattended-Upgrade") # read rootdir (taken from apt.Cache, but we need to run it @@ -1013,7 +949,6 @@ def _get_logdir(): - # type: () -> str logdir = apt_pkg.config.find_dir( "Unattended-Upgrade::LogDir", # COMPAT only @@ -1023,11 +958,9 @@ def _setup_logging(options): - # type: (Options) -> StringIO - # ensure this is run only once if len(logging.root.handlers) > 0: - return None + return # init the logging logdir = _get_logdir() @@ -1073,8 +1006,7 @@ facility=syslogFacility) syslogHandler.setFormatter( logging.Formatter("unattended-upgrade: %(message)s")) - known = syslogHandler.facility_names.keys() # type: ignore - if syslogFacility.lower() in known: + if syslogFacility.lower() in syslogHandler.facility_names.keys(): logger.addHandler(syslogHandler) logging.info("Enabled logging to syslog via %s facility " % syslogFacility) @@ -1085,17 +1017,14 @@ def get_blacklisted_pkgs(): - # type: () -> List[str] return apt_pkg.config.value_list("Unattended-Upgrade::Package-Blacklist") def get_whitelisted_pkgs(): - # type: () -> List[str] return apt_pkg.config.value_list("Unattended-Upgrade::Package-Whitelist") def logged_in_users(): - # type: () -> AbstractSet[str] """Return a list of logged in users""" # the "users" command always returns a single line with: # "user1, user1, user2" @@ -1104,8 +1033,7 @@ return set(users.split()) -def reboot_if_requested_and_needed(): - # type: () -> None +def reboot_if_requested_and_needed(shutdown_lock=0): """auto-reboot (if required and the config for this is set)""" if not os.path.exists(REBOOT_REQUIRED_FILE): return @@ -1128,12 +1056,13 @@ # reboot at the specified time when = apt_pkg.config.find( "Unattended-Upgrade::Automatic-Reboot-Time", "now") + if shutdown_lock > 0: + os.close(shutdown_lock) logging.warning("Found %s, rebooting" % REBOOT_REQUIRED_FILE) subprocess.call(["/sbin/shutdown", "-r", when]) def write_stamp_file(): - # type: () -> None statedir = os.path.join(apt_pkg.config.find_dir("Dir::State"), "periodic") if not os.path.exists(statedir): os.makedirs(statedir) @@ -1141,15 +1070,9 @@ pass -def try_to_upgrade(pkg, # type: apt.Package - pkgs_to_upgrade, # type: List[apt.Package] - pkgs_kept_back, # type: List[str] - cache, # type: apt.Cache - allowed_origins, # type: List[str] - blacklisted_pkgs, # type: List[str] - whitelisted_pkgs, # type: List[str] - ): - # type: (...) -> None +def try_to_upgrade(pkg, pkgs_to_upgrade, pkgs_kept_back, cache, + allowed_origins, blacklisted_pkgs, whitelisted_pkgs): + try: pkg.mark_upgrade(from_user=not pkg.is_auto_installed) if check_changes_for_sanity(cache, allowed_origins, @@ -1178,25 +1101,18 @@ pkgs_kept_back.append(pkg.name) -def calculate_upgradable_pkgs(cache, # type: apt.Cache - options, # type: Options - allowed_origins, # type: List[str] - blacklisted_pkgs, # type: List[str] - whitelisted_pkgs, # type: List[str] - ): - # type: (...) -> Tuple[List[apt.Package], List[str]] - pkgs_to_upgrade = [] # type: List[apt.Package] - pkgs_kept_back = [] # type: List[str] +def calculate_upgradable_pkgs(cache, options, allowed_origins, + blacklisted_pkgs, whitelisted_pkgs): + pkgs_to_upgrade = [] + pkgs_kept_back = [] # now do the actual upgrade for pkg in cache: if options.debug and pkg.is_upgradable: logging.debug("Checking: %s (%s)" % ( pkg.name, getattr(pkg.candidate, "origins", []))) - if (pkg.is_upgradable and - not is_pkgname_in_blacklist(pkg.name, blacklisted_pkgs, - pkgs_kept_back) and + not is_pkgname_in_blacklist(pkg.name, blacklisted_pkgs) and is_pkgname_in_whitelist(pkg.name, whitelisted_pkgs) and is_allowed_origin(pkg.candidate, allowed_origins)): @@ -1211,7 +1127,6 @@ def get_dpkg_log_content(logfile_dpkg, install_start_time): - # type: (str, datetime.datetime) -> str logging.debug("Extracting content from '%s' since '%s'" % ( logfile_dpkg, install_start_time)) content = [] @@ -1232,14 +1147,12 @@ def get_auto_removable(cache): - # type: (apt.Cache) -> AbstractSet[str] return set([pkg.name for pkg in cache if pkg.is_auto_removable]) def do_auto_remove(cache, auto_removable, logfile_dpkg, verbose=False, dry_run=False): - # type: (apt.Cache, Iterable[str], str, bool, bool) -> bool if not auto_removable: return True @@ -1263,7 +1176,6 @@ def clean_downloaded_packages(fetcher): - # type: (apt_pkg.Acquire) -> None archivedir = os.path.dirname( apt_pkg.config.find_dir("Dir::Cache::archives")) for item in fetcher.items: @@ -1275,7 +1187,6 @@ def is_update_day(): - # type: () -> bool # check if patch days are configured patch_days = apt_pkg.config.value_list("Unattended-Upgrade::Update-Days") if not patch_days: @@ -1300,7 +1211,6 @@ def main(options, rootdir=""): - # type: (Options, str) -> None # useful for testing if rootdir: _setup_alternative_rootdir(rootdir) @@ -1312,6 +1222,11 @@ if not is_update_day(): return + # check to see if want to auto-upgrade the devel release + if "(development branch)" in DISTRO_DESC and not\ + apt_pkg.config.find_b("Unattended-Upgrade::DevRelease", False): + logging.info(_("Not running on the development release.")) + return # format (origin, archive), e.g. ("Ubuntu","dapper-security") allowed_origins = get_allowed_origins() @@ -1327,12 +1242,6 @@ logging.info(_("Starting unattended upgrades script")) - # lock for the shutdown check - shutdown_lock = apt_pkg.get_lock(LOCK_FILE) - if shutdown_lock < 0: - logging.error("Lock file is already taken, exiting") - sys.exit(1) - # display available origin logging.info(_("Allowed origins are: %s"), allowed_origins) @@ -1421,12 +1330,6 @@ list.read_main_list() recs = cache._records pm = apt_pkg.PackageManager(cache._depcache) - # don't start downloading during shutdown - # TODO: download files one by one and check for stop request after each of - # them - if SIGNAL_STOP_REQUEST: - logging.warning("SIGNAL received, stopping") - return try: pm.get_archives(fetcher, list, recs) except SystemError as e: @@ -1513,7 +1416,7 @@ "Unattended-Upgrade::Remove-Unused-Dependencies", False): pending_autoremovals = previous_autoremovals else: - pending_autoremovals = set() + pending_autoremovals = [] # exit if there is nothing to do and nothing to report if (len(pending_autoremovals) == 0 and @@ -1525,7 +1428,6 @@ write_stamp_file() # check if we couldn't reboot on previous run because # a user was logged-in at this time - os.close(shutdown_lock) reboot_if_requested_and_needed() return @@ -1537,7 +1439,6 @@ "Unattended-Upgrade::InstallOnShutdown", False)): logger = logging.getLogger() logger.debug("Configured to install on shutdown, so exiting now") - os.close(shutdown_lock) return # check if we are in dry-run mode @@ -1557,7 +1458,11 @@ # only perform install step if we actually have packages to install pkg_install_success = True + shutdown_lock = -1 if len(pkgs_to_upgrade) > 0: + # lock for the shutdown check - its fine if the system + # is shutdown while downloading but not so much while installing + shutdown_lock = apt_pkg.get_lock("/var/run/unattended-upgrades.lock") # do install pkg_install_success = do_install(cache, pkgs_to_upgrade, @@ -1578,7 +1483,7 @@ if apt_pkg.config.find_b( "Unattended-Upgrade::Remove-Unused-Dependencies", False): auto_removals = get_auto_removable(cache) - pkg_install_success = pkg_install_success and do_auto_remove( + pkg_install_success &= do_auto_remove( cache, auto_removals, logfile_dpkg, options.verbose or options.debug, options.dry_run) @@ -1588,7 +1493,7 @@ # calculate the new auto-removals new_pending_autoremovals = get_auto_removable(cache) auto_removals = new_pending_autoremovals - previous_autoremovals - pkg_install_success = pkg_install_success and do_auto_remove( + pkg_install_success &= do_auto_remove( cache, auto_removals, logfile_dpkg, options.verbose or options.debug, options.dry_run) @@ -1615,20 +1520,9 @@ # write timestamp file write_stamp_file() - os.close(shutdown_lock) # check if the user wants a reboot if not options.dry_run: - reboot_if_requested_and_needed() - - -class Options: - def __init__(self): - self.download_only = False - self.dry_run = False - self.debug = False - self.apt_debug = False - self.verbose = False - self.minimal_upgrade_steps = False + reboot_if_requested_and_needed(shutdown_lock) if __name__ == "__main__": @@ -1660,12 +1554,12 @@ parser.add_option("", "--minimal-upgrade-steps", action="store_true", default=False, help=_("Upgrade in minimal steps (and allow " - "interrupting with SIGTERM")) + "interrupting with SIGINT")) parser.add_option("", "--minimal_upgrade_steps", action="store_true", help=SUPPRESS_HELP, default=False) - (options, args) = parser.parse_args() # type: ignore + (options, args) = parser.parse_args() if os.getuid() != 0: print(_("You need to be root to run this application")) @@ -1675,16 +1569,5 @@ # shutdown signal.signal(signal.SIGHUP, signal.SIG_IGN) - # setup signal handler for graceful stopping - signal.signal(signal.SIGTERM, signal_handler) - - # write pid to let other processes find this one - pidf = os.path.join(apt_pkg.config.find_dir("Dir"), - "var", "run", "unattended-upgrades.pid") - # clean up pid file on exit - with open(pidf, "w") as fp: - fp.write("%s" % os.getpid()) - atexit.register(os.remove, pidf) - # run the main code main(options) diff -Nru unattended-upgrades-0.96/unattended-upgrade-shutdown unattended-upgrades-0.93.1ubuntu8/unattended-upgrade-shutdown --- unattended-upgrades-0.96/unattended-upgrade-shutdown 2017-08-29 18:54:04.000000000 +0200 +++ unattended-upgrades-0.93.1ubuntu8/unattended-upgrade-shutdown 2017-07-01 00:35:52.000000000 +0200 @@ -47,7 +47,6 @@ def do_usplash(msg): - # type: (str) -> None if os.path.exists("/sbin/usplash_write"): logging.debug("Running usplash_write") subprocess.call(["/sbin/usplash_write", "TEXT", msg]) @@ -55,14 +54,12 @@ def do_plymouth(msg): - # type: (str) -> None if os.path.exists("/bin/plymouth"): logging.debug("Running plymouth --text") subprocess.call(["/bin/plymouth", "message", "--text", msg]) def log_msg(msg, level=logging.WARN): - # type: (str, int) -> None """ helper that will print msg to usplash, plymouth, console """ logging.log(level, msg) do_plymouth(msg) @@ -70,7 +67,6 @@ def log_progress(): - # type: () -> None """ helper to log the install progress (if any) """ # wait a some seconds and try again msg = _("Unattended-upgrade in progress during shutdown, " @@ -83,15 +79,6 @@ log_msg(msg) -def signal_stop_unattended_upgrade(): - """ send SIGTERM to running unattended-upgrade if there is any """ - pidfile = "/var/run/unattended-upgrades.pid" - if os.path.exists(pidfile): - pid = int(open(pidfile).read()) - logging.debug("found running unattended-upgrades pid %s" % pid) - os.kill(pid, signal.SIGTERM) - - if __name__ == "__main__": # setup gettext localesApp = "unattended-upgrades" @@ -103,7 +90,7 @@ parser.add_option("", "--debug", action="store_true", dest="debug", default=False, help="print debug messages") - parser.add_option("", "--delay", default=25, type="int", + parser.add_option("", "--delay", default=10, type="int", help="delay in minutes to wait for unattended-upgrades") parser.add_option("", "--lock-file", default="/var/run/unattended-upgrades.lock", @@ -128,10 +115,9 @@ # check if we need to run unattended-upgrades on shutdown and if so, # run it + p = None apt_pkg.init_config() - shutdown_mode = apt_pkg.config.find_b( - "Unattended-Upgrade::InstallOnShutdown", False) - if shutdown_mode: + if apt_pkg.config.find_b("Unattended-Upgrade::InstallOnShutdown", False): env = copy.copy(os.environ) env["UNATTENDED_UPGRADES_FORCE_INSTALL_ON_SHUTDOWN"] = "1" logging.debug("starting unattended-upgrades in shutdown mode") @@ -146,7 +132,6 @@ # run the monitoring loop and keep the "UI" updated start_time = time.time() lock_was_taken = False - signal_sent = False while True: res = apt_pkg.get_lock(options.lock_file) logging.debug("get_lock returned %i" % res) @@ -155,29 +140,23 @@ logging.debug("lock not taken") break lock_was_taken = True - if not shutdown_mode: - signal_stop_unattended_upgrade() - signal_sent = True + # signal unattended-upgrades to stop + p = "/var/run/unattended-upgrades.pid" + if os.path.exists(p): + pid = int(open(p).read()) + logging.debug("found running unattended-upgrades pid %s" % pid) + os.kill(pid, signal.SIGUSR1) # show log log_progress() time.sleep(5) if (time.time() - start_time) > options.delay * 60: logging.warning(_("Giving up on lockfile after %s delay"), options.delay) - if shutdown_mode: - # unattended-upgrade did not finish in time, but stopping - # it gracefully is better than waiting for it to be killed - signal_stop_unattended_upgrade() - signal_sent = True sys.exit(1) # add finished info to the log/terminal to help tracking down # LP: #434835 if lock_was_taken: - if signal_sent: - log_msg(_("Unattended-upgrades stopped. There may be upgrades" - " left to be installed in the next run."), logging.INFO) - else: - # re-use existing string - log_msg(_("All upgrades installed"), logging.INFO) + # re-use existing string + log_msg(_("All upgrades installed"), logging.INFO) sys.exit(0)