From 7918f5868c08909050aa083eeb819d110f2d160d Mon Sep 17 00:00:00 2001 From: Alex Bradley Date: Tue, 2 Oct 2012 23:22:54 -0700 Subject: Don't prepend "^Inst" or append a space to the "include", "exclude", or "critical" regular expressions. Instead, check for lines beginning with "Inst" using strncmp and apply the regular expressions only when such lines are found. Fixes Debian bug #522812, along the lines suggested by the bug submitter, Justin T Pryzby. diff --git a/plugins/check_apt.c b/plugins/check_apt.c index 7efa596..26499ae 100644 --- a/plugins/check_apt.c +++ b/plugins/check_apt.c @@ -49,6 +49,8 @@ typedef enum { UPGRADE, DIST_UPGRADE, NO_UPGRADE } upgrade_type; #ifndef PATH_TO_APTGET # define PATH_TO_APTGET "/usr/bin/apt-get" #endif /* PATH_TO_APTGET */ +/* String found at the beginning of the apt output lines we're interested in */ +#define PKGINST_PREFIX "Inst " /* the RE that catches security updates */ #define SECURITY_RE "^[^\\(]*\\([^ ]* (Debian-Security:|Ubuntu:[^/]*/[^-]*-security)" @@ -211,22 +213,18 @@ int run_upgrade(int *pkgcount, int *secpkgcount){ struct output chld_out, chld_err; regex_t ireg, ereg, sreg; char *cmdline=NULL, rerrbuf[64]; - const char *include_ptr=NULL, *crit_ptr=NULL; if(upgrade==NO_UPGRADE) return STATE_OK; /* compile the regexps */ - if(do_include!=NULL) include_ptr=do_include; - else include_ptr="^Inst"; - if(do_critical!=NULL) crit_ptr=do_critical; - else crit_ptr=SECURITY_RE; - - regres=regcomp(&ireg, include_ptr, REG_EXTENDED); - if(regres!=0) { - regerror(regres, &ireg, rerrbuf, 64); - die(STATE_UNKNOWN, _("%s: Error compiling regexp: %s"), progname, rerrbuf); + if (do_include != NULL) { + regres=regcomp(&ireg, do_include, REG_EXTENDED); + if (regres!=0) { + regerror(regres, &ireg, rerrbuf, 64); + die(STATE_UNKNOWN, _("%s: Error compiling regexp: %s"), progname, rerrbuf); + } } - + if(do_exclude!=NULL){ regres=regcomp(&ereg, do_exclude, REG_EXTENDED); if(regres!=0) { @@ -235,6 +233,8 @@ int run_upgrade(int *pkgcount, int *secpkgcount){ progname, rerrbuf); } } + + const char *crit_ptr = (do_critical != NULL) ? do_critical : SECURITY_RE; regres=regcomp(&sreg, crit_ptr, REG_EXTENDED); if(regres!=0) { regerror(regres, &ereg, rerrbuf, 64); @@ -269,7 +269,8 @@ int run_upgrade(int *pkgcount, int *secpkgcount){ printf("%s\n", chld_out.line[i]); } /* if it is a package we care about */ - if(regexec(&ireg, chld_out.line[i], 0, NULL, 0)==0){ + if (strncmp(PKGINST_PREFIX, chld_out.line[i], strlen(PKGINST_PREFIX)) == 0 && + (do_include == NULL || regexec(&ireg, chld_out.line[i], 0, NULL, 0) == 0)) { /* if we're not excluding, or it's not in the * list of stuff to exclude */ if(do_exclude==NULL || @@ -298,7 +299,7 @@ int run_upgrade(int *pkgcount, int *secpkgcount){ } } } - regfree(&ireg); + if (do_include != NULL) regfree(&ireg); regfree(&sreg); if(do_exclude!=NULL) regfree(&ereg); free(cmdline); @@ -348,15 +349,15 @@ char* add_to_regexp(char *expr, const char *next){ char *re=NULL; if(expr==NULL){ - re=malloc(sizeof(char)*(strlen("^Inst () ")+strlen(next)+1)); + re=malloc(sizeof(char)*(strlen("()")+strlen(next)+1)); if(!re) die(STATE_UNKNOWN, "malloc failed!\n"); - sprintf(re, "^Inst (%s) ", next); + sprintf(re, "(%s)", next); } else { /* resize it, adding an extra char for the new '|' separator */ - re=realloc(expr, sizeof(char)*strlen(expr)+1+strlen(next)+1); + re=realloc(expr, sizeof(char)*(strlen(expr)+1+strlen(next)+1)); if(!re) die(STATE_UNKNOWN, "realloc failed!\n"); /* append it starting at ')' in the old re */ - sprintf((char*)(re+strlen(re)-2), "|%s) ", next); + sprintf((char*)(re+strlen(re)-1), "|%s)", next); } return re; -- cgit v0.10-9-g596f From 09c25be0d1c95ce1deba7d9ee046b343cbd7ab93 Mon Sep 17 00:00:00 2001 From: Alex Bradley Date: Wed, 3 Oct 2012 01:38:35 -0700 Subject: Fix SourceForge bug 1904965 - check_apt: SECURITY_RE is not correct For the default security upgrade detection regular expression, match "Debian-Security" in package description when it's anywhere after the first parenthesis (not just the second space-delimited word). For example: ... (4.0.1-5.4 Debian:6.0.6/stable, Debian-Security:6.0/stable ... diff --git a/plugins/check_apt.c b/plugins/check_apt.c index 26499ae..a1176cf 100644 --- a/plugins/check_apt.c +++ b/plugins/check_apt.c @@ -52,7 +52,7 @@ typedef enum { UPGRADE, DIST_UPGRADE, NO_UPGRADE } upgrade_type; /* String found at the beginning of the apt output lines we're interested in */ #define PKGINST_PREFIX "Inst " /* the RE that catches security updates */ -#define SECURITY_RE "^[^\\(]*\\([^ ]* (Debian-Security:|Ubuntu:[^/]*/[^-]*-security)" +#define SECURITY_RE "^[^\\(]*\\(.* (Debian-Security:|Ubuntu:[^/]*/[^-]*-security)" /* some standard functions */ int process_arguments(int, char **); -- cgit v0.10-9-g596f From 13e85a0f4f9d1ede624e1135f1646c64ecc052a4 Mon Sep 17 00:00:00 2001 From: Alex Bradley Date: Wed, 3 Oct 2012 15:54:24 -0700 Subject: Tests for check_apt Add a hidden "--input-file" option to check_apt (modelled on check_procs) so that it can take files with sample apt output as input. Add tests for my SECURITY_RE fix (debian3) and for the include, exclude and critical options. diff --git a/plugins/check_apt.c b/plugins/check_apt.c index a1176cf..cf18661 100644 --- a/plugins/check_apt.c +++ b/plugins/check_apt.c @@ -41,6 +41,8 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net"; /* some constants */ typedef enum { UPGRADE, DIST_UPGRADE, NO_UPGRADE } upgrade_type; +/* Character for hidden input file option (for testing). */ +#define INPUT_FILE_OPT CHAR_MAX+1 /* the default opts can be overridden via the cmdline */ #define UPGRADE_DEFAULT_OPTS "-o 'Debug::NoLocking=true' -s -qq" #define UPDATE_DEFAULT_OPTS "-q" @@ -77,6 +79,7 @@ static char *update_opts = NULL; /* options to override defaults for update */ static char *do_include = NULL; /* regexp to only include certain packages */ static char *do_exclude = NULL; /* regexp to only exclude certain packages */ static char *do_critical = NULL; /* regexp specifying critical packages */ +static char *input_filename = NULL; /* input filename for testing */ /* other global variables */ static int stderr_warning = 0; /* if a cmd issued output on stderr */ @@ -143,6 +146,7 @@ int process_arguments (int argc, char **argv) { {"include", required_argument, 0, 'i'}, {"exclude", required_argument, 0, 'e'}, {"critical", required_argument, 0, 'c'}, + {"input-file", required_argument, 0, INPUT_FILE_OPT}, {0, 0, 0, 0} }; @@ -197,6 +201,9 @@ int process_arguments (int argc, char **argv) { case 'c': do_critical=add_to_regexp(do_critical, optarg); break; + case INPUT_FILE_OPT: + input_filename = optarg; + break; default: /* print short usage statement if args not parsable */ usage5(); @@ -243,8 +250,14 @@ int run_upgrade(int *pkgcount, int *secpkgcount){ } cmdline=construct_cmdline(upgrade, upgrade_opts); - /* run the upgrade */ - result = np_runcmd(cmdline, &chld_out, &chld_err, 0); + if (input_filename != NULL) { + /* read input from a file for testing */ + result = cmd_file_read(input_filename, &chld_out, 0); + } else { + /* run the upgrade */ + result = np_runcmd(cmdline, &chld_out, &chld_err, 0); + } + /* apt-get upgrade only changes exit status if there is an * internal error when run in dry-run mode. therefore we will * treat such an error as UNKNOWN */ @@ -290,7 +303,7 @@ int run_upgrade(int *pkgcount, int *secpkgcount){ *secpkgcount=spc; /* If we get anything on stderr, at least set warning */ - if(chld_err.buflen){ + if (input_filename == NULL && chld_err.buflen) { stderr_warning=1; result = max_state(result, STATE_WARNING); if(verbose){ diff --git a/plugins/t/check_apt.t b/plugins/t/check_apt.t new file mode 100644 index 0000000..7123097 --- /dev/null +++ b/plugins/t/check_apt.t @@ -0,0 +1,90 @@ +#!/usr/bin/perl -w -I .. +# +# Test check_apt using input files. +# Contributed by Alex Bradley, October 2012 +# + +use strict; +use Test::More; +use NPTest; + +sub make_result_regexp { + my ($warning, $critical) = @_; + my $status; + if ($warning == 0 && $critical == 0) { + $status = "OK"; + } elsif ($critical == 0) { + $status = "WARNING"; + } else { + $status = "CRITICAL"; + } + return sprintf('/^APT %s: %d packages available for upgrade \(%d critical updates\).\s*$/', + $status, $warning, $critical); +} + +if (-x "./check_apt") { + plan tests => 28; +} else { + plan skip_all => "No check_apt compiled"; +} + +my $result; + +my $testfile_command = "./check_apt %s --input-file=t/check_apt_input/%s"; + +$result = NPTest->testCmd( sprintf($testfile_command, "", "debian1") ); +is( $result->return_code, 0, "No upgrades" ); +like( $result->output, make_result_regexp(0, 0), "Output correct" ); + +$result = NPTest->testCmd( sprintf($testfile_command, "", "debian2") ); +is( $result->return_code, 1, "Debian apt output, warning" ); +like( $result->output, make_result_regexp(13, 0), "Output correct" ); + +$result = NPTest->testCmd( sprintf($testfile_command, "", "debian3") ); +is( $result->return_code, 2, "Debian apt output, some critical" ); +like( $result->output, make_result_regexp(19, 4), "Output correct" ); + +$result = NPTest->testCmd( sprintf($testfile_command, "-c '^[^\\(]*\\(.* (Debian-Security:|Ubuntu:[^/]*/[^-]*-security)'", "debian3") ); +is( $result->return_code, 2, "Debian apt output - should have same result when default security regexp specified via -c" ); +like( $result->output, make_result_regexp(19, 4), "Output correct" ); + +$result = NPTest->testCmd( sprintf($testfile_command, "-i libc6", "debian3") ); +is( $result->return_code, 1, "Debian apt output, filter for libc6" ); +like( $result->output, make_result_regexp(3, 0), "Output correct" ); + +$result = NPTest->testCmd( sprintf($testfile_command, "-i libc6 -i xen", "debian3") ); +is( $result->return_code, 2, "Debian apt output, filter for libc6 and xen" ); +like( $result->output, make_result_regexp(9, 4), "Output correct" ); + +$result = NPTest->testCmd( sprintf($testfile_command, "-i libc6 -i xen -i linux", "debian3") ); +is( $result->return_code, 2, "Debian apt output, filter for libc6, xen, linux" ); +like( $result->output, make_result_regexp(12, 4), "Output correct" ); + +$result = NPTest->testCmd( sprintf($testfile_command, "-e libc6", "debian3") ); +is( $result->return_code, 2, "Debian apt output, filter out libc6" ); +like( $result->output, make_result_regexp(16, 4), "Output correct" ); + +$result = NPTest->testCmd( sprintf($testfile_command, "-e libc6 -e xen", "debian3") ); +is( $result->return_code, 1, "Debian apt output, filter out libc6 and xen" ); +like( $result->output, make_result_regexp(10, 0), "Output correct" ); + +$result = NPTest->testCmd( sprintf($testfile_command, "-e libc6 -e xen -e linux", "debian3") ); +is( $result->return_code, 1, "Debian apt output, filter out libc6, xen, linux" ); +like( $result->output, make_result_regexp(7, 0), "Output correct" ); + +$result = NPTest->testCmd( sprintf($testfile_command, "-c Debian-Security -c linux", "debian3") ); +is( $result->return_code, 2, "Debian apt output, critical on Debian-Security or linux" ); +like( $result->output, make_result_regexp(19, 9), "Output correct" ); + +$result = NPTest->testCmd( sprintf($testfile_command, "-i lib -i linux -e gc1c -c linux-image", "debian3") ); +is( $result->return_code, 2, "Debian apt output, include lib and linux, exclude gc1c, critical on linux-image" ); +like( $result->output, make_result_regexp(10, 2), "Output correct" ); + +$result = NPTest->testCmd( sprintf($testfile_command, "", "ubuntu1") ); +is( $result->return_code, 1, "Ubuntu apt output, warning" ); +like( $result->output, make_result_regexp(5, 0), "Output correct" ); + +$result = NPTest->testCmd( sprintf($testfile_command, "", "ubuntu2") ); +is( $result->return_code, 2, "Ubuntu apt output, some critical" ); +like( $result->output, make_result_regexp(25, 14), "Output correct" ); + diff --git a/plugins/t/check_apt_input/debian1 b/plugins/t/check_apt_input/debian1 new file mode 100644 index 0000000..317e7ea --- /dev/null +++ b/plugins/t/check_apt_input/debian1 @@ -0,0 +1,4 @@ +NOTE: This is only a simulation! + apt-get needs root privileges for real execution. + Keep also in mind that locking is deactivated, + so don't depend on the relevance to the real current situation! diff --git a/plugins/t/check_apt_input/debian2 b/plugins/t/check_apt_input/debian2 new file mode 100644 index 0000000..effd155 --- /dev/null +++ b/plugins/t/check_apt_input/debian2 @@ -0,0 +1,37 @@ +NOTE: This is only a simulation! + apt-get needs root privileges for real execution. + Keep also in mind that locking is deactivated, + so don't depend on the relevance to the real current situation! +Reading package lists... Done +Building dependency tree +Reading state information... Done +The following packages will be upgraded: + base-files debian-archive-keyring dpkg firmware-linux-free libc-bin libc-dev-bin libc6 libc6-dev linux-base + linux-image-2.6.32-5-xen-amd64 linux-libc-dev locales lockfile-progs +13 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. +Inst base-files [6.0squeeze5] (6.0squeeze6 Debian:6.0.6/stable [amd64]) +Conf base-files (6.0squeeze6 Debian:6.0.6/stable [amd64]) +Inst dpkg [1.15.8.12] (1.15.8.13 Debian:6.0.6/stable [amd64]) +Conf dpkg (1.15.8.13 Debian:6.0.6/stable [amd64]) +Inst linux-base [2.6.32-45] (2.6.32-46 Debian:6.0.6/stable [all]) +Inst linux-image-2.6.32-5-xen-amd64 [2.6.32-45] (2.6.32-46 Debian:6.0.6/stable [amd64]) +Inst debian-archive-keyring [2010.08.28] (2010.08.28+squeeze1 Debian:6.0.6/stable [all]) +Conf debian-archive-keyring (2010.08.28+squeeze1 Debian:6.0.6/stable [all]) +Inst libc6-dev [2.11.3-3] (2.11.3-4 Debian:6.0.6/stable [amd64]) [] +Inst libc-dev-bin [2.11.3-3] (2.11.3-4 Debian:6.0.6/stable [amd64]) [] +Inst linux-libc-dev [2.6.32-45] (2.6.32-46 Debian:6.0.6/stable [amd64]) [] +Inst libc-bin [2.11.3-3] (2.11.3-4 Debian:6.0.6/stable [amd64]) [libc6:amd64 ] +Conf libc-bin (2.11.3-4 Debian:6.0.6/stable [amd64]) [libc6:amd64 ] +Inst libc6 [2.11.3-3] (2.11.3-4 Debian:6.0.6/stable [amd64]) +Conf libc6 (2.11.3-4 Debian:6.0.6/stable [amd64]) +Inst locales [2.11.3-3] (2.11.3-4 Debian:6.0.6/stable [all]) +Inst firmware-linux-free [2.6.32-45] (2.6.32-46 Debian:6.0.6/stable [all]) +Inst lockfile-progs [0.1.15] (0.1.15+squeeze1 Debian:6.0.6/stable [amd64]) +Conf linux-base (2.6.32-46 Debian:6.0.6/stable [all]) +Conf linux-image-2.6.32-5-xen-amd64 (2.6.32-46 Debian:6.0.6/stable [amd64]) +Conf libc-dev-bin (2.11.3-4 Debian:6.0.6/stable [amd64]) +Conf linux-libc-dev (2.6.32-46 Debian:6.0.6/stable [amd64]) +Conf libc6-dev (2.11.3-4 Debian:6.0.6/stable [amd64]) +Conf locales (2.11.3-4 Debian:6.0.6/stable [all]) +Conf firmware-linux-free (2.6.32-46 Debian:6.0.6/stable [all]) +Conf lockfile-progs (0.1.15+squeeze1 Debian:6.0.6/stable [amd64]) diff --git a/plugins/t/check_apt_input/debian3 b/plugins/t/check_apt_input/debian3 new file mode 100644 index 0000000..719dce9 --- /dev/null +++ b/plugins/t/check_apt_input/debian3 @@ -0,0 +1,42 @@ +NOTE: This is only a simulation! + apt-get needs root privileges for real execution. + Keep also in mind that locking is deactivated, + so don't depend on the relevance to the real current situation! +Inst base-files [6.0squeeze5] (6.0squeeze6 Debian:6.0.6/stable [amd64]) +Conf base-files (6.0squeeze6 Debian:6.0.6/stable [amd64]) +Inst dpkg [1.15.8.12] (1.15.8.13 Debian:6.0.6/stable [amd64]) +Conf dpkg (1.15.8.13 Debian:6.0.6/stable [amd64]) +Inst linux-base [2.6.32-45] (2.6.32-46 Debian:6.0.6/stable [all]) +Inst linux-image-2.6.32-5-amd64 [2.6.32-45] (2.6.32-46 Debian:6.0.6/stable [amd64]) +Inst xen-hypervisor-4.0-amd64 [4.0.1-5.3] (4.0.1-5.4 Debian:6.0.6/stable, Debian-Security:6.0/stable [amd64]) +Inst xen-linux-system-2.6.32-5-xen-amd64 [2.6.32-45] (2.6.32-46 Debian:6.0.6/stable [amd64]) [] +Inst linux-image-2.6.32-5-xen-amd64 [2.6.32-45] (2.6.32-46 Debian:6.0.6/stable [amd64]) +Inst debian-archive-keyring [2010.08.28] (2010.08.28+squeeze1 Debian:6.0.6/stable [all]) +Conf debian-archive-keyring (2010.08.28+squeeze1 Debian:6.0.6/stable [all]) +Inst libc6-i386 [2.11.3-3] (2.11.3-4 Debian:6.0.6/stable [amd64]) [] +Inst libc-bin [2.11.3-3] (2.11.3-4 Debian:6.0.6/stable [amd64]) [libc6:amd64 ] +Conf libc-bin (2.11.3-4 Debian:6.0.6/stable [amd64]) [libc6:amd64 ] +Inst libc6 [2.11.3-3] (2.11.3-4 Debian:6.0.6/stable [amd64]) +Conf libc6 (2.11.3-4 Debian:6.0.6/stable [amd64]) +Inst libgc1c2 [1:6.8-1.2] (1:6.8-2 Debian:6.0.6/stable [amd64]) +Inst locales [2.11.3-3] (2.11.3-4 Debian:6.0.6/stable [all]) +Inst firmware-linux-free [2.6.32-45] (2.6.32-46 Debian:6.0.6/stable [all]) +Inst libxenstore3.0 [4.0.1-5.3] (4.0.1-5.4 Debian:6.0.6/stable, Debian-Security:6.0/stable [amd64]) +Inst lockfile-progs [0.1.15] (0.1.15+squeeze1 Debian:6.0.6/stable [amd64]) +Inst xen-utils-4.0 [4.0.1-5.3] (4.0.1-5.4 Debian:6.0.6/stable, Debian-Security:6.0/stable [amd64]) +Inst xenstore-utils [4.0.1-5.3] (4.0.1-5.4 Debian:6.0.6/stable, Debian-Security:6.0/stable [amd64]) +Inst libconfig-inifiles-perl [2.52-1] (2.52-1+squeeze1 Debian:6.0.6/stable [all]) +Conf linux-base (2.6.32-46 Debian:6.0.6/stable [all]) +Conf linux-image-2.6.32-5-amd64 (2.6.32-46 Debian:6.0.6/stable [amd64]) +Conf xen-hypervisor-4.0-amd64 (4.0.1-5.4 Debian:6.0.6/stable, Debian-Security:6.0/stable [amd64]) +Conf linux-image-2.6.32-5-xen-amd64 (2.6.32-46 Debian:6.0.6/stable [amd64]) +Conf xen-linux-system-2.6.32-5-xen-amd64 (2.6.32-46 Debian:6.0.6/stable [amd64]) +Conf libc6-i386 (2.11.3-4 Debian:6.0.6/stable [amd64]) +Conf libgc1c2 (1:6.8-2 Debian:6.0.6/stable [amd64]) +Conf locales (2.11.3-4 Debian:6.0.6/stable [all]) +Conf firmware-linux-free (2.6.32-46 Debian:6.0.6/stable [all]) +Conf libxenstore3.0 (4.0.1-5.4 Debian:6.0.6/stable, Debian-Security:6.0/stable [amd64]) +Conf lockfile-progs (0.1.15+squeeze1 Debian:6.0.6/stable [amd64]) +Conf xen-utils-4.0 (4.0.1-5.4 Debian:6.0.6/stable, Debian-Security:6.0/stable [amd64]) +Conf xenstore-utils (4.0.1-5.4 Debian:6.0.6/stable, Debian-Security:6.0/stable [amd64]) +Conf libconfig-inifiles-perl (2.52-1+squeeze1 Debian:6.0.6/stable [all]) diff --git a/plugins/t/check_apt_input/ubuntu1 b/plugins/t/check_apt_input/ubuntu1 new file mode 100644 index 0000000..2f61c30 --- /dev/null +++ b/plugins/t/check_apt_input/ubuntu1 @@ -0,0 +1,14 @@ +NOTE: This is only a simulation! + apt-get needs root privileges for real execution. + Also keep in mind that locking is deactivated, + so don't depend on the relevance to the real current situation! +Inst grub-pc [1.99-21ubuntu3.1] (1.99-21ubuntu3.4 Ubuntu:12.04/precise-updates [amd64]) [] +Inst grub-pc-bin [1.99-21ubuntu3.1] (1.99-21ubuntu3.4 Ubuntu:12.04/precise-updates [amd64]) [] +Inst grub2-common [1.99-21ubuntu3.1] (1.99-21ubuntu3.4 Ubuntu:12.04/precise-updates [amd64]) [] +Inst grub-efi-amd64-bin [1.99-21ubuntu3.1] (1.99-21ubuntu3.4 Ubuntu:12.04/precise-updates [amd64]) [] +Inst grub-common [1.99-21ubuntu3.1] (1.99-21ubuntu3.4 Ubuntu:12.04/precise-updates [amd64]) +Conf grub-common (1.99-21ubuntu3.4 Ubuntu:12.04/precise-updates [amd64]) +Conf grub2-common (1.99-21ubuntu3.4 Ubuntu:12.04/precise-updates [amd64]) +Conf grub-pc-bin (1.99-21ubuntu3.4 Ubuntu:12.04/precise-updates [amd64]) +Conf grub-pc (1.99-21ubuntu3.4 Ubuntu:12.04/precise-updates [amd64]) +Conf grub-efi-amd64-bin (1.99-21ubuntu3.4 Ubuntu:12.04/precise-updates [amd64]) diff --git a/plugins/t/check_apt_input/ubuntu2 b/plugins/t/check_apt_input/ubuntu2 new file mode 100644 index 0000000..29a14a0 --- /dev/null +++ b/plugins/t/check_apt_input/ubuntu2 @@ -0,0 +1,54 @@ +NOTE: This is only a simulation! + apt-get needs root privileges for real execution. + Also keep in mind that locking is deactivated, + so don't depend on the relevance to the real current situation! +Inst libc6-dev [2.15-0ubuntu10] (2.15-0ubuntu10.2 Ubuntu:12.04/precise-security [amd64]) [] +Inst libc-dev-bin [2.15-0ubuntu10] (2.15-0ubuntu10.2 Ubuntu:12.04/precise-security [amd64]) [] +Inst linux-libc-dev [3.2.0-29.46] (3.2.0-31.50 Ubuntu:12.04/precise-security [amd64]) [] +Inst tzdata [2012e-0ubuntu0.12.04] (2012e-0ubuntu0.12.04.1 Ubuntu:12.04/precise-security [all]) [] +Conf tzdata (2012e-0ubuntu0.12.04.1 Ubuntu:12.04/precise-security [all]) [] +Inst libc-bin [2.15-0ubuntu10] (2.15-0ubuntu10.2 Ubuntu:12.04/precise-security [amd64]) [libc6:amd64 ] +Conf libc-bin (2.15-0ubuntu10.2 Ubuntu:12.04/precise-security [amd64]) [libc6:amd64 ] +Inst libc6 [2.15-0ubuntu10] (2.15-0ubuntu10.2 Ubuntu:12.04/precise-security [amd64]) +Conf libc6 (2.15-0ubuntu10.2 Ubuntu:12.04/precise-security [amd64]) +Inst libapt-pkg4.12 [0.8.16~exp12ubuntu10.2] (0.8.16~exp12ubuntu10.3 Ubuntu:12.04/precise-updates [amd64]) +Conf libapt-pkg4.12 (0.8.16~exp12ubuntu10.3 Ubuntu:12.04/precise-updates [amd64]) +Inst ubuntu-keyring [2011.11.21] (2011.11.21.1 Ubuntu:12.04/precise-updates [all]) +Conf ubuntu-keyring (2011.11.21.1 Ubuntu:12.04/precise-updates [all]) +Inst gpgv [1.4.11-3ubuntu2] (1.4.11-3ubuntu2.1 Ubuntu:12.04/precise-security [amd64]) +Conf gpgv (1.4.11-3ubuntu2.1 Ubuntu:12.04/precise-security [amd64]) +Inst gnupg [1.4.11-3ubuntu2] (1.4.11-3ubuntu2.1 Ubuntu:12.04/precise-security [amd64]) +Conf gnupg (1.4.11-3ubuntu2.1 Ubuntu:12.04/precise-security [amd64]) +Inst apt [0.8.16~exp12ubuntu10.2] (0.8.16~exp12ubuntu10.3 Ubuntu:12.04/precise-updates [amd64]) +Conf apt (0.8.16~exp12ubuntu10.3 Ubuntu:12.04/precise-updates [amd64]) +Inst libssl1.0.0 [1.0.1-4ubuntu5.3] (1.0.1-4ubuntu5.5 Ubuntu:12.04/precise-updates [amd64]) +Conf libssl1.0.0 (1.0.1-4ubuntu5.5 Ubuntu:12.04/precise-updates [amd64]) +Inst libapt-inst1.4 [0.8.16~exp12ubuntu10.2] (0.8.16~exp12ubuntu10.3 Ubuntu:12.04/precise-updates [amd64]) +Inst resolvconf [1.63ubuntu15] (1.63ubuntu16 Ubuntu:12.04/precise-updates [all]) +Inst libdbus-1-3 [1.4.18-1ubuntu1] (1.4.18-1ubuntu1.1 Ubuntu:12.04/precise-security [amd64]) +Inst libxml2 [2.7.8.dfsg-5.1ubuntu4.1] (2.7.8.dfsg-5.1ubuntu4.2 Ubuntu:12.04/precise-security [amd64]) +Inst multiarch-support [2.15-0ubuntu10] (2.15-0ubuntu10.2 Ubuntu:12.04/precise-security [amd64]) +Conf multiarch-support (2.15-0ubuntu10.2 Ubuntu:12.04/precise-security [amd64]) +Inst apt-utils [0.8.16~exp12ubuntu10.2] (0.8.16~exp12ubuntu10.3 Ubuntu:12.04/precise-updates [amd64]) +Inst isc-dhcp-client [4.1.ESV-R4-0ubuntu5.2] (4.1.ESV-R4-0ubuntu5.5 Ubuntu:12.04/precise-security [amd64]) [] +Inst isc-dhcp-common [4.1.ESV-R4-0ubuntu5.2] (4.1.ESV-R4-0ubuntu5.5 Ubuntu:12.04/precise-security [amd64]) +Inst dbus [1.4.18-1ubuntu1] (1.4.18-1ubuntu1.1 Ubuntu:12.04/precise-security [amd64]) +Inst linux-firmware [1.79] (1.79.1 Ubuntu:12.04/precise-updates [all]) +Inst xserver-common [2:1.11.4-0ubuntu10.7] (2:1.11.4-0ubuntu10.8 Ubuntu:12.04/precise-updates [all]) +Inst xserver-xorg-core [2:1.11.4-0ubuntu10.7] (2:1.11.4-0ubuntu10.8 Ubuntu:12.04/precise-updates [amd64]) +Inst xserver-xorg-input-synaptics [1.6.2-1ubuntu1~precise1] (1.6.2-1ubuntu1~precise2 Ubuntu:12.04/precise-updates [amd64]) +Conf libc-dev-bin (2.15-0ubuntu10.2 Ubuntu:12.04/precise-security [amd64]) +Conf linux-libc-dev (3.2.0-31.50 Ubuntu:12.04/precise-security [amd64]) +Conf libc6-dev (2.15-0ubuntu10.2 Ubuntu:12.04/precise-security [amd64]) +Conf libapt-inst1.4 (0.8.16~exp12ubuntu10.3 Ubuntu:12.04/precise-updates [amd64]) +Conf resolvconf (1.63ubuntu16 Ubuntu:12.04/precise-updates [all]) +Conf libdbus-1-3 (1.4.18-1ubuntu1.1 Ubuntu:12.04/precise-security [amd64]) +Conf libxml2 (2.7.8.dfsg-5.1ubuntu4.2 Ubuntu:12.04/precise-security [amd64]) +Conf apt-utils (0.8.16~exp12ubuntu10.3 Ubuntu:12.04/precise-updates [amd64]) +Conf isc-dhcp-common (4.1.ESV-R4-0ubuntu5.5 Ubuntu:12.04/precise-security [amd64]) +Conf isc-dhcp-client (4.1.ESV-R4-0ubuntu5.5 Ubuntu:12.04/precise-security [amd64]) +Conf dbus (1.4.18-1ubuntu1.1 Ubuntu:12.04/precise-security [amd64]) +Conf linux-firmware (1.79.1 Ubuntu:12.04/precise-updates [all]) +Conf xserver-common (2:1.11.4-0ubuntu10.8 Ubuntu:12.04/precise-updates [all]) +Conf xserver-xorg-core (2:1.11.4-0ubuntu10.8 Ubuntu:12.04/precise-updates [amd64]) +Conf xserver-xorg-input-synaptics (1.6.2-1ubuntu1~precise2 Ubuntu:12.04/precise-updates [amd64]) -- cgit v0.10-9-g596f