From 89a1aa5dd55a3469c92720c7fcb90779f90b61f0 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 6 Jun 2011 21:23:00 +0200 Subject: add a very dumb pause method to stop test-execution --- test/integration/framework | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/integration/framework b/test/integration/framework index cc5af798c..96cdb5f5e 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -708,3 +708,9 @@ testmarkedauto() { fi aptmark showauto 2>&1 | checkdiff $COMPAREFILE - && msgpass || msgfail } + +pause() { + echo "STOPPED execution. Press enter to continue" + local IGNORE + read IGNORE +} -- cgit v1.2.3 From 2e3c9d6452e69dcb5c83732fbda27b747bc997f4 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 6 Jun 2011 21:29:16 +0200 Subject: * apt-pkg/indexcopy.cc: - Verify that the first line of an InRelease file is a PGP header for a signed message. Otherwise a man-in-the-middle can prefix a valid InRelease file with his own data! (CVE-2011-1829) --- apt-pkg/indexcopy.cc | 21 ++++++++++++++- debian/changelog | 6 ++++- methods/gpgv.cc | 13 +++++---- ...st-ubuntu-bug-784473-InRelease-one-message-only | 31 ++++++++++++++++++++++ 4 files changed, 64 insertions(+), 7 deletions(-) create mode 100755 test/integration/test-ubuntu-bug-784473-InRelease-one-message-only diff --git a/apt-pkg/indexcopy.cc b/apt-pkg/indexcopy.cc index 064fb007c..31c577705 100644 --- a/apt-pkg/indexcopy.cc +++ b/apt-pkg/indexcopy.cc @@ -664,6 +664,21 @@ bool SigVerify::CopyAndVerify(string CDROM,string Name,vector &SigList, bool SigVerify::RunGPGV(std::string const &File, std::string const &FileGPG, int const &statusfd, int fd[2]) { + if (File == FileGPG) + { + #define SIGMSG "-----BEGIN PGP SIGNED MESSAGE-----\n" + char buffer[sizeof(SIGMSG)]; + FILE* gpg = fopen(File.c_str(), "r"); + if (gpg == NULL) + return _error->Errno("RunGPGV", _("Could not open file %s"), File.c_str()); + char const * const test = fgets(buffer, sizeof(buffer), gpg); + fclose(gpg); + if (test == NULL || strcmp(buffer, SIGMSG) != 0) + return _error->Error(_("File %s doesn't start with a clearsigned message"), File.c_str()); + #undef SIGMSG + } + + string const gpgvpath = _config->Find("Dir::Bin::gpg", "/usr/bin/gpgv"); // FIXME: remove support for deprecated APT::GPGV setting string const trustedFile = _config->Find("APT::GPGV::TrustedKeyring", _config->FindFile("Dir::Etc::Trusted")); @@ -688,7 +703,11 @@ bool SigVerify::RunGPGV(std::string const &File, std::string const &FileGPG, Args.reserve(30); if (keyrings.empty() == true) - return false; + { + // TRANSLATOR: %s is the trusted keyring parts directory + return _error->Error(_("No keyring installed in %s."), + _config->FindDir("Dir::Etc::TrustedParts").c_str()); + } Args.push_back(gpgvpath.c_str()); Args.push_back("--ignore-time-conflict"); diff --git a/debian/changelog b/debian/changelog index 971cf53b7..c2cf8257e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -16,6 +16,10 @@ apt (0.8.14.2) UNRELEASED; urgency=low * Galician translation update (Miguel Anxo Bouzada). Closes: #626505 [ David Kalnischkies ] + * apt-pkg/indexcopy.cc: + - Verify that the first line of an InRelease file is a PGP header + for a signed message. Otherwise a man-in-the-middle can prefix + a valid InRelease file with his own data! (CVE-2011-1829) * fix a bunch of cppcheck warnings/errors based on a patch by Niels Thykier, thanks! (Closes: #622805) * apt-pkg/depcache.cc: @@ -78,7 +82,7 @@ apt (0.8.14.2) UNRELEASED; urgency=low - show Acquire::Languages and APT::Architectures settings in 'dump' (Closes: 626739) - -- David Kalnischkies Sat, 28 May 2011 10:54:23 +0200 + -- David Kalnischkies Mon, 06 Jun 2011 21:24:28 +0200 apt (0.8.14.1) unstable; urgency=low diff --git a/methods/gpgv.cc b/methods/gpgv.cc index efe1f73f7..960c06180 100644 --- a/methods/gpgv.cc +++ b/methods/gpgv.cc @@ -65,13 +65,16 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile, return string("Couldn't spawn new process") + strerror(errno); else if (pid == 0) { - if (SigVerify::RunGPGV(outfile, file, 3, fd) == false) + _error->PushToStack(); + bool const success = SigVerify::RunGPGV(outfile, file, 3, fd); + if (success == false) { - // TRANSLATOR: %s is the trusted keyring parts directory - ioprintf(ret, _("No keyring installed in %s."), - _config->FindDir("Dir::Etc::TrustedParts").c_str()); - return ret.str(); + string errmsg; + _error->PopMessage(errmsg); + _error->RevertToStack(); + return errmsg; } + _error->RevertToStack(); exit(111); } close(fd[1]); diff --git a/test/integration/test-ubuntu-bug-784473-InRelease-one-message-only b/test/integration/test-ubuntu-bug-784473-InRelease-one-message-only new file mode 100755 index 000000000..d97011914 --- /dev/null +++ b/test/integration/test-ubuntu-bug-784473-InRelease-one-message-only @@ -0,0 +1,31 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture 'i386' + +insertpackage 'unstable' 'apt' 'i386' '0.8.11' + +setupaptarchive + +rm -rf rootdir/var/lib/apt/lists + +find aptarchive/ -name 'Release.gpg' -delete +find aptarchive/ -name 'InRelease' -exec cp {} {}.old \; + +for RELEASE in $(find aptarchive/ -name 'InRelease'); do + (echo 'Origin: Marvin +Label: Marvin +Suite: experimental +Codename: experimental +MD5Sum: + 65fd410587b6978de2277f2912523f09 9360 Packages + d27b294ed172a1fa9dd5a53949914c5d 4076 Packages.bz2 + 2182897e0a2a0c09e760beaae117a015 2023 Packages.diff/Index + 1b895931853981ad8204d2439821b999 4144 Packages.gz'; echo; cat ${RELEASE}.old;) > ${RELEASE} +done +aptget update -qq > /dev/null 2> starts-with-unsigned.msg +sed -i 's#File .*InRelease#File InRelease#' starts-with-unsigned.msg +testfileequal starts-with-unsigned.msg "W: GPG error: file: unstable InRelease: File InRelease doesn't start with a clearsigned message" -- cgit v1.2.3 From aaa7858c3583617b068bd87af4e17be4d02da0bf Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 6 Jun 2011 21:33:55 +0200 Subject: revert 2114.1.12 as doxygen does this for use now --- debian/changelog | 4 +--- debian/rules | 3 --- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/debian/changelog b/debian/changelog index c2cf8257e..c7b7ea13c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -38,8 +38,6 @@ apt (0.8.14.2) UNRELEASED; urgency=low - log reinstall commands in history.log * debian/apt{,-utils}.symbols: - update both experimental symbol-files to reflect 0.8.14 state - * debian/rules: - - remove unused embedded jquery by doxygen from libapt-pkg-doc * cmdline/apt-mark.cc: - reimplement apt-mark in c++ - provide a 'showmanual' command (Closes: #582791) @@ -82,7 +80,7 @@ apt (0.8.14.2) UNRELEASED; urgency=low - show Acquire::Languages and APT::Architectures settings in 'dump' (Closes: 626739) - -- David Kalnischkies Mon, 06 Jun 2011 21:24:28 +0200 + -- David Kalnischkies Mon, 06 Jun 2011 21:33:01 +0200 apt (0.8.14.1) unstable; urgency=low diff --git a/debian/rules b/debian/rules index 0544b2b8e..640900678 100755 --- a/debian/rules +++ b/debian/rules @@ -120,9 +120,6 @@ libapt-pkg-doc: build-doc # # libapt-pkg-doc install # - # remove doxygen's embedded jquery as we don't use it anyway (#622147) - rm -f $(BLD)/doc/doxygen/html/jquery.js - dh_installdocs -p$@ $(BLD)/docs/design* \ $(BLD)/docs/dpkg-tech* \ $(BLD)/docs/files* \ -- cgit v1.2.3 From bd0fc582449b86f74be582e3407e09334ba9e71d Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 29 Jun 2011 16:38:49 +0200 Subject: * doc/makefile: - create doxygen directory to avoid depending on magic (Closes: #628799) --- debian/changelog | 8 ++++++++ doc/makefile | 1 + 2 files changed, 9 insertions(+) diff --git a/debian/changelog b/debian/changelog index 7598a139d..a2e08558d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +apt (0.8.15.1) unstable; urgency=low + + [ David Kalnischkies ] + * doc/makefile: + - create doxygen directory to avoid depending on magic (Closes: #628799) + + -- David Kalnischkies Wed, 29 Jun 2011 16:37:58 +0200 + apt (0.8.15) unstable; urgency=low [ Julian Andres Klode ] diff --git a/doc/makefile b/doc/makefile index 8a889c94c..4fcf3bd10 100644 --- a/doc/makefile +++ b/doc/makefile @@ -101,6 +101,7 @@ $(BUILD)/doc/Doxyfile: Doxyfile.in $(BUILD)/doc/doxygen-stamp: $(DOXYGEN_SOURCES) $(BUILD)/doc/Doxyfile rm -fr $(BUILD)/doc/doxygen + mkdir $(BUILD)/doc/doxygen # some versions seem to not create this directory #628799 $(DOXYGEN) $(BUILD)/doc/Doxyfile touch $(BUILD)/doc/doxygen-stamp -- cgit v1.2.3 From 49434e94575cfcc14d2f43bdd86c2c5c351d02a8 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 29 Jun 2011 17:15:56 +0200 Subject: * cmdline/apt-key: - explicitly state that net-update is not supported if no url is set --- cmdline/apt-key | 4 ++-- debian/changelog | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/cmdline/apt-key b/cmdline/apt-key index 3838fafcd..86e982054 100755 --- a/cmdline/apt-key +++ b/cmdline/apt-key @@ -59,13 +59,13 @@ add_keys_with_verify_against_master_keyring() { # (otherwise it does not make sense from a security POV) net_update() { if [ -z "$ARCHIVE_KEYRING_URI" ]; then - echo "ERROR: no location for the archive-keyring given" + echo >&2 "ERROR: Your distribution is not supported in net-update as no uri for the archive-keyring is set" exit 1 fi # in theory we would need to depend on wget for this, but this feature # isn't useable in debian anyway as we have no keyring uri nor a master key if ! which wget >/dev/null 2>&1; then - echo "ERROR: an installed wget is required for a network-based update" + echo >&2 "ERROR: an installed wget is required for a network-based update" exit 1 fi if [ ! -d /var/lib/apt/keyrings ]; then diff --git a/debian/changelog b/debian/changelog index a2e08558d..b28531db7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,8 +3,10 @@ apt (0.8.15.1) unstable; urgency=low [ David Kalnischkies ] * doc/makefile: - create doxygen directory to avoid depending on magic (Closes: #628799) + * cmdline/apt-key: + - explicitly state that net-update is not supported if no url is set - -- David Kalnischkies Wed, 29 Jun 2011 16:37:58 +0200 + -- David Kalnischkies Wed, 29 Jun 2011 17:13:26 +0200 apt (0.8.15) unstable; urgency=low -- cgit v1.2.3 From 7851d583df07d81b708f62e130a9132faa495979 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 29 Jun 2011 17:24:47 +0200 Subject: require to be root for add, rm, update and net-update --- cmdline/apt-key | 11 +++++++++++ debian/changelog | 3 ++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/cmdline/apt-key b/cmdline/apt-key index 86e982054..843163f82 100755 --- a/cmdline/apt-key +++ b/cmdline/apt-key @@ -21,6 +21,13 @@ ARCHIVE_KEYRING_URI="" ARCHIVE_KEYRING=/usr/share/keyrings/debian-archive-keyring.gpg REMOVED_KEYS=/usr/share/keyrings/debian-archive-removed-keys.gpg +requires_root() { + if [ "$(id -u)" -ne 0 ]; then + echo >&1 "ERROR: This command can only be used by root." + exit 1 + fi +} + add_keys_with_verify_against_master_keyring() { ADD_KEYRING=$1 MASTER=$2 @@ -62,6 +69,7 @@ net_update() { echo >&2 "ERROR: Your distribution is not supported in net-update as no uri for the archive-keyring is set" exit 1 fi + requires_root # in theory we would need to depend on wget for this, but this feature # isn't useable in debian anyway as we have no keyring uri nor a master key if ! which wget >/dev/null 2>&1; then @@ -93,6 +101,7 @@ update() { echo >&2 "Is the debian-archive-keyring package installed?" exit 1 fi + requires_root # add new keys from the package; @@ -184,10 +193,12 @@ fi case "$command" in add) + requires_root $GPG --quiet --batch --import "$1" echo "OK" ;; del|rm|remove) + requires_root $GPG --quiet --batch --delete-key --yes "$1" echo "OK" ;; diff --git a/debian/changelog b/debian/changelog index b28531db7..51dda4d0c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,8 +5,9 @@ apt (0.8.15.1) unstable; urgency=low - create doxygen directory to avoid depending on magic (Closes: #628799) * cmdline/apt-key: - explicitly state that net-update is not supported if no url is set + - require to be root for add, rm, update and net-update - -- David Kalnischkies Wed, 29 Jun 2011 17:13:26 +0200 + -- David Kalnischkies Wed, 29 Jun 2011 17:24:02 +0200 apt (0.8.15) unstable; urgency=low -- cgit v1.2.3 From f7acb21c7eea6f90f8596add1ec9514e14c1f816 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 29 Jun 2011 18:15:44 +0200 Subject: clarify update vs. net-update in different distros (Closes: #632043) --- debian/changelog | 3 ++- doc/apt-key.8.xml | 21 ++++++++++++--------- doc/apt-verbatim.ent | 6 ++++++ 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/debian/changelog b/debian/changelog index 51dda4d0c..395fe121d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,8 +6,9 @@ apt (0.8.15.1) unstable; urgency=low * cmdline/apt-key: - explicitly state that net-update is not supported if no url is set - require to be root for add, rm, update and net-update + - clarify update vs. net-update in different distros (Closes: #632043) - -- David Kalnischkies Wed, 29 Jun 2011 17:24:02 +0200 + -- David Kalnischkies Wed, 29 Jun 2011 18:14:52 +0200 apt (0.8.15) unstable; urgency=low diff --git a/doc/apt-key.8.xml b/doc/apt-key.8.xml index 9bfab84b6..f17f0c45e 100644 --- a/doc/apt-key.8.xml +++ b/doc/apt-key.8.xml @@ -128,9 +128,10 @@ - Update the local keyring with the keyring of Debian archive - keys and removes from the keyring the archive keys which are no - longer valid. + Update the local keyring with the archive keyring and remove from + the local keyring the archive keys which are no longer valid. + The archive keyring is shipped in the archive-keyring package of your + distribution, e.g. the debian-archive-keyring package in Debian. @@ -141,12 +142,14 @@ - Update the local keyring with the keys of a key server - and removes from the keyring the archive keys which are no - longer valid. This requires an installed wget and an APT - build configured to have a server to fetch from. APT in - Debian does not support this command, but Ubuntu's APT - does. + Work similar to the update command above, but get the + archive keyring from an URI instead and validate it against a master key. + + This requires an installed &wget; and an APT build configured to have + a server to fetch from and a master keyring to validate. + + APT in Debian does not support this command and relies on + update instead, but Ubuntu's APT does. diff --git a/doc/apt-verbatim.ent b/doc/apt-verbatim.ent index a194a9d0d..14cd70e89 100644 --- a/doc/apt-verbatim.ent +++ b/doc/apt-verbatim.ent @@ -148,6 +148,12 @@ " > + + wget + 1 + " +> + -- cgit v1.2.3 From 2fdcd6ffa17ffb0eb58ef6d5d97803d18ed9c753 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 29 Jun 2011 18:15:56 +0200 Subject: * debian/apt.symbols: - forgot 'mips' in the list for all architecture dependent symbols --- debian/apt.symbols | 8 ++++---- debian/changelog | 4 +++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/debian/apt.symbols b/debian/apt.symbols index fb8403839..9d3df3102 100644 --- a/debian/apt.symbols +++ b/debian/apt.symbols @@ -1246,7 +1246,7 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (arch=alpha|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag&, unsigned long&)@Base" 0.8.11.4 1 (arch=powerpc powerpcspe|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag (&) [1], unsigned int&)@Base" 0.8.11.4 1 (arch=amd64 kfreebsd-amd64 s390|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag (&) [1], unsigned long&)@Base" 0.8.11.4 1 - (arch=hppa mipsel sparc|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned int&)@Base" 0.8.11.4 1 + (arch=hppa mips mipsel sparc|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned int&)@Base" 0.8.11.4 1 (arch=ia64 sparc64|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned long&)@Base" 0.8.11.4 1 (arch=sh4|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __builtin_va_list&, unsigned int&)@Base" 0.8.11.4 1 (arch=i386 hurd-i386 kfreebsd-i386|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, char*&, int, unsigned int&)@Base" 0.8.11.4 1 @@ -1254,13 +1254,13 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (arch=alpha|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag&, int, unsigned long&)@Base" 0.8.11.4 1 (arch=powerpc powerpcspe|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag (&) [1], int, unsigned int&)@Base" 0.8.11.4 1 (arch=amd64 kfreebsd-amd64 s390|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag (&) [1], int, unsigned long&)@Base" 0.8.11.4 1 - (arch=hppa mipsel sparc|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, void*&, int, unsigned int&)@Base" 0.8.11.4 1 + (arch=hppa mips mipsel sparc|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, void*&, int, unsigned int&)@Base" 0.8.11.4 1 (arch=ia64 sparc64|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, void*&, int, unsigned long&)@Base" 0.8.11.4 1 (arch=sh4|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __builtin_va_list&, int, unsigned int&)@Base" 0.8.11.4 1 ### architecture specific: size_t - (arch=i386 armel armhf hppa hurd-i386 kfreebsd-i386 mipsel powerpc powerpcspe sh4 sparc|c++)"_strtabexpand(char*, unsigned int)@Base" 0.8.0 + (arch=i386 armel armhf hppa hurd-i386 kfreebsd-i386 mips mipsel powerpc powerpcspe sh4 sparc|c++)"_strtabexpand(char*, unsigned int)@Base" 0.8.0 (arch=alpha amd64 ia64 kfreebsd-amd64 s390 sparc64|c++)"_strtabexpand(char*, unsigned long)@Base" 0.8.0 - (arch=i386 armel armhf hppa hurd-i386 kfreebsd-i386 mipsel powerpc powerpcspe sh4 sparc|c++)"indexRecords::parseSumData(char const*&, char const*, std::basic_string, std::allocator >&, std::basic_string, std::allocator >&, unsigned int&)@Base" 0.8.0 + (arch=i386 armel armhf hppa hurd-i386 kfreebsd-i386 mips mipsel powerpc powerpcspe sh4 sparc|c++)"indexRecords::parseSumData(char const*&, char const*, std::basic_string, std::allocator >&, std::basic_string, std::allocator >&, unsigned int&)@Base" 0.8.0 (arch=alpha amd64 ia64 kfreebsd-amd64 s390 sparc64|c++)"indexRecords::parseSumData(char const*&, char const*, std::basic_string, std::allocator >&, std::basic_string, std::allocator >&, unsigned long&)@Base" 0.8.0 ### try to ignore std:: template instances (c++|regex|optional=std)"^(void |)std::[^ ]+<.+ >::(_|~).+\(.*\)@Base$" 0.8.0 diff --git a/debian/changelog b/debian/changelog index 395fe121d..66d160e60 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,8 +7,10 @@ apt (0.8.15.1) unstable; urgency=low - explicitly state that net-update is not supported if no url is set - require to be root for add, rm, update and net-update - clarify update vs. net-update in different distros (Closes: #632043) + * debian/apt.symbols: + - forgot 'mips' in the list for all architecture dependent symbols - -- David Kalnischkies Wed, 29 Jun 2011 18:14:52 +0200 + -- David Kalnischkies Wed, 29 Jun 2011 18:15:49 +0200 apt (0.8.15) unstable; urgency=low -- cgit v1.2.3 From c77b3b37b8d18c9ecc965d18d82636e563412762 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 29 Jun 2011 18:46:01 +0200 Subject: comment out gcc-4.5 specific symbols as gcc-4.6 is now default --- debian/apt.symbols | 12 ++++++------ debian/changelog | 3 ++- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/debian/apt.symbols b/debian/apt.symbols index 9d3df3102..5a94e2b11 100644 --- a/debian/apt.symbols +++ b/debian/apt.symbols @@ -1230,16 +1230,16 @@ libapt-pkg.so.4.10 libapt-pkg4.10 # (c++|regex|optional=std)"^std::vector<.+ >::(vector|push_back|erase|_[^ ]+)\(.+\)( const|)@Base$" 0.8.0 # (c++|regex|optional=std)"^pkgCache::(Dep|Pkg|Ver|Grp|Prv|Desc|PkgFile)Iterator\*\* std::_.+@Base$" 0.8.0 ### gcc-4.5 specific - (c++|regex|optional=std)"^char\* std::[^ ]+<.+ >::_.+@Base$" 0.8.0 - (c++|optional=inline)"FileFd::FileFd(std::basic_string, std::allocator >, FileFd::OpenMode, unsigned long)@Base" 0.8.0 - (c++|regex|optional=template)"^SPtrArray<[^ ]+>::~SPtrArray\(\)@Base$" 0.8.0 - (c++|optional=template)"SPtrArray::~SPtrArray()@Base" 0.8.0 +# (c++|regex|optional=std)"^char\* std::[^ ]+<.+ >::_.+@Base$" 0.8.0 +# (c++|optional=inline)"FileFd::FileFd(std::basic_string, std::allocator >, FileFd::OpenMode, unsigned long)@Base" 0.8.0 +# (c++|regex|optional=template)"^SPtrArray<[^ ]+>::~SPtrArray\(\)@Base$" 0.8.0 +# (c++|optional=template)"SPtrArray::~SPtrArray()@Base" 0.8.0 ### gcc-4.6 specific (c++|optional=template)"SPtrArray::~SPtrArray()@Base" 0.8.0 (c++|regex|optional=std)"^std::basic_string, std::allocator >::basic_string\(.+\)@Base$" 0.8.0 (c++|regex|optional=std)"^std::vector::(vector|push_back|erase|_[^ ]+)\(.+\)( const|)@Base$" 0.8.0 - (c++|optional=strange)"pkgCache::VerIterator::VerIterator(pkgCache&, pkgCache::Version*)@Base" 0.8.0 +# (c++|optional=strange)"pkgCache::VerIterator::VerIterator(pkgCache&, pkgCache::Version*)@Base" 0.8.0 ### architecture specific: va_list & size_t (arch=i386 hurd-i386 kfreebsd-i386|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, char*&, unsigned int&)@Base" 0.8.11.4 1 (arch=armel armhf|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, std::__va_list&, unsigned int&)@Base" 0.8.11.4 1 @@ -1249,6 +1249,7 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (arch=hppa mips mipsel sparc|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned int&)@Base" 0.8.11.4 1 (arch=ia64 sparc64|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned long&)@Base" 0.8.11.4 1 (arch=sh4|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __builtin_va_list&, unsigned int&)@Base" 0.8.11.4 1 + (arch=i386 hurd-i386 kfreebsd-i386|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, char*&, int, unsigned int&)@Base" 0.8.11.4 1 (arch=armel armhf|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, std::__va_list&, int, unsigned int&)@Base" 0.8.11.4 1 (arch=alpha|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag&, int, unsigned long&)@Base" 0.8.11.4 1 @@ -1319,5 +1320,4 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++|optional=private)"PrintMode(char)@Base" 0.8.13.2 1 (c++)"pkgDepCache::IsModeChangeOk(pkgDepCache::ModeList, pkgCache::PkgIterator const&, unsigned long, bool)@Base" 0.8.13.2 1 (c++)"pkgPackageManager::SmartUnPack(pkgCache::PkgIterator, bool)@Base" 0.8.15~exp1 1 - (c++)"pkgAcqMethod::PrintStatus(char const*, char const*, char*&) const@Base" 0.8.15~exp1 1 (c++)"pkgCache::DepIterator::IsNegative() const@Base" 0.8.15~exp1 1 diff --git a/debian/changelog b/debian/changelog index 66d160e60..527902820 100644 --- a/debian/changelog +++ b/debian/changelog @@ -9,8 +9,9 @@ apt (0.8.15.1) unstable; urgency=low - clarify update vs. net-update in different distros (Closes: #632043) * debian/apt.symbols: - forgot 'mips' in the list for all architecture dependent symbols + - comment out gcc-4.5 specific symbols as gcc-4.6 is now default - -- David Kalnischkies Wed, 29 Jun 2011 18:15:49 +0200 + -- David Kalnischkies Wed, 29 Jun 2011 18:45:39 +0200 apt (0.8.15) unstable; urgency=low -- cgit v1.2.3 From 9919af907aef04caa4061e411259525e46eb49e2 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 29 Jun 2011 18:46:20 +0200 Subject: the symbol for PrintStatus() is architecture dependent --- debian/apt.symbols | 7 +++++++ debian/changelog | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/debian/apt.symbols b/debian/apt.symbols index 5a94e2b11..04e13edd7 100644 --- a/debian/apt.symbols +++ b/debian/apt.symbols @@ -1240,6 +1240,13 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++|regex|optional=std)"^std::vector::(vector|push_back|erase|_[^ ]+)\(.+\)( const|)@Base$" 0.8.0 # (c++|optional=strange)"pkgCache::VerIterator::VerIterator(pkgCache&, pkgCache::Version*)@Base" 0.8.0 +### architecture specific: va_list + (arch=armel armhf|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, std::__va_list&) const@Base" 0.8.15~exp1 1 + (arch=i386 hurd-i386 kfreebsd-i386|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, char*&) const@Base" 0.8.15~exp1 1 + (arch=hppa ia64 mips mipsel sparc sparc64|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, void*&) const@Base" 0.8.15~exp1 1 + (arch=amd64 kfreebsd-amd64 powerpc powerpcspe s390|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, __va_list_tag (&) [1]) const@Base" 0.8.15~exp1 1 + (arch=sh4|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, __builtin_va_list&) const@Base" 0.8.15~exp1 1 + (arch=alpha|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, __va_list_tag&) const@Base" 0.8.15~exp1 1 ### architecture specific: va_list & size_t (arch=i386 hurd-i386 kfreebsd-i386|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, char*&, unsigned int&)@Base" 0.8.11.4 1 (arch=armel armhf|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, std::__va_list&, unsigned int&)@Base" 0.8.11.4 1 diff --git a/debian/changelog b/debian/changelog index 527902820..5c21cc4e5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -10,8 +10,9 @@ apt (0.8.15.1) unstable; urgency=low * debian/apt.symbols: - forgot 'mips' in the list for all architecture dependent symbols - comment out gcc-4.5 specific symbols as gcc-4.6 is now default + - the symbol for PrintStatus() is architecture dependent - -- David Kalnischkies Wed, 29 Jun 2011 18:45:39 +0200 + -- David Kalnischkies Wed, 29 Jun 2011 18:46:06 +0200 apt (0.8.15) unstable; urgency=low -- cgit v1.2.3 From 5b7d1ee67575e311871fb73be421ea7fd2f6fd73 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 29 Jun 2011 22:38:59 +0200 Subject: * apt-pkg/policy.cc: - do not segfault in pinning if a package with this name doesn't exist. Thanks to Ferdinand Thommes for the report! --- apt-pkg/policy.cc | 3 ++ debian/changelog | 5 ++- test/integration/test-pin-non-existent-package | 44 ++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100755 test/integration/test-pin-non-existent-package diff --git a/apt-pkg/policy.cc b/apt-pkg/policy.cc index 2cc2e5e39..291d83c67 100644 --- a/apt-pkg/policy.cc +++ b/apt-pkg/policy.cc @@ -231,6 +231,9 @@ void pkgPolicy::CreatePin(pkgVersionMatch::MatchType Type,string Name, // Get a spot to put the pin pkgCache::GrpIterator Grp = Cache->FindGrp(Name); + if (Grp.end() == true) + return; + for (pkgCache::PkgIterator Pkg = Grp.PackageList(); Pkg.end() != true; Pkg = Grp.NextPkg(Pkg)) { diff --git a/debian/changelog b/debian/changelog index 5c21cc4e5..e527142c4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -11,8 +11,11 @@ apt (0.8.15.1) unstable; urgency=low - forgot 'mips' in the list for all architecture dependent symbols - comment out gcc-4.5 specific symbols as gcc-4.6 is now default - the symbol for PrintStatus() is architecture dependent + * apt-pkg/policy.cc: + - do not segfault in pinning if a package with this name doesn't exist. + Thanks to Ferdinand Thommes for the report! - -- David Kalnischkies Wed, 29 Jun 2011 18:46:06 +0200 + -- David Kalnischkies Wed, 29 Jun 2011 22:05:50 +0200 apt (0.8.15) unstable; urgency=low diff --git a/test/integration/test-pin-non-existent-package b/test/integration/test-pin-non-existent-package new file mode 100755 index 000000000..1031272e2 --- /dev/null +++ b/test/integration/test-pin-non-existent-package @@ -0,0 +1,44 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture "i386" + +insertpackage 'unstable' 'apt' 'i386' '0.8.15' + +setupaptarchive + +testcandidate() { + msgtest "Test that the Candidate for $1 is" $2 + test "$(aptcache policy $1 | grep '^ Candidate:')" = " Candidate: $2" && msgpass || msgfail +} + +testcandidate apt '0.8.15' +testequal 'N: Unable to locate package doesntexist' aptcache policy doesntexist -q=0 +testequal 'Reading package lists... +Building dependency tree... +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget dist-upgrade + +echo 'Package: apt +Pin: release a=unstable +Pin-Priority: -1' > rootdir/etc/apt/preferences + +testcandidate apt '(none)' +testequal 'N: Unable to locate package doesntexist' aptcache policy doesntexist -q=0 +testequal 'Reading package lists... +Building dependency tree... +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget dist-upgrade + +echo ' +Package: doesntexist +Pin: release a=unstable +Pin-Priority: 1000' >> rootdir/etc/apt/preferences + +testcandidate apt '(none)' +testequal 'N: Unable to locate package doesntexist' aptcache policy doesntexist -q=0 + +testequal 'Reading package lists... +Building dependency tree... +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget dist-upgrade -- cgit v1.2.3 From 1925ea3d0cd6579a4034acb7308e532d025319c7 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 29 Jun 2011 23:16:00 +0200 Subject: Defaults is a vector of Pin not of PkgPin --- apt-pkg/policy.cc | 2 +- debian/changelog | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/apt-pkg/policy.cc b/apt-pkg/policy.cc index 291d83c67..827c9145c 100644 --- a/apt-pkg/policy.cc +++ b/apt-pkg/policy.cc @@ -210,7 +210,7 @@ void pkgPolicy::CreatePin(pkgVersionMatch::MatchType Type,string Name, { if (Name.empty() == true) { - Pin *P = &*Defaults.insert(Defaults.end(),PkgPin()); + Pin *P = &*Defaults.insert(Defaults.end(),Pin()); P->Type = Type; P->Priority = Priority; P->Data = Data; diff --git a/debian/changelog b/debian/changelog index e527142c4..c4f7af623 100644 --- a/debian/changelog +++ b/debian/changelog @@ -14,8 +14,9 @@ apt (0.8.15.1) unstable; urgency=low * apt-pkg/policy.cc: - do not segfault in pinning if a package with this name doesn't exist. Thanks to Ferdinand Thommes for the report! + - Defaults is a vector of Pin not of PkgPin - -- David Kalnischkies Wed, 29 Jun 2011 22:05:50 +0200 + -- David Kalnischkies Wed, 29 Jun 2011 23:15:35 +0200 apt (0.8.15) unstable; urgency=low -- cgit v1.2.3 From e2bba11c9a1858c98954e7c5299d20a6c0966cc7 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 29 Jun 2011 23:26:38 +0200 Subject: - ensure that only the first specific stanza for a package is used - save all stanzas which had no effect in Unmatched --- apt-pkg/policy.cc | 27 ++++++++++++-------------- apt-pkg/policy.h | 1 + debian/changelog | 4 +++- test/integration/test-pin-non-existent-package | 15 +++++++++++++- 4 files changed, 30 insertions(+), 17 deletions(-) diff --git a/apt-pkg/policy.cc b/apt-pkg/policy.cc index 827c9145c..78f44d635 100644 --- a/apt-pkg/policy.cc +++ b/apt-pkg/policy.cc @@ -229,28 +229,25 @@ void pkgPolicy::CreatePin(pkgVersionMatch::MatchType Type,string Name, return; } - // Get a spot to put the pin + // find the package group this pin applies to pkgCache::GrpIterator Grp = Cache->FindGrp(Name); if (Grp.end() == true) + { + Pin *P = &*Unmatched.insert(Unmatched.end(),PkgPin(Name)); + P->Type = Type; + P->Priority = Priority; + P->Data = Data; return; + } for (pkgCache::PkgIterator Pkg = Grp.PackageList(); Pkg.end() != true; Pkg = Grp.NextPkg(Pkg)) { - Pin *P = 0; - if (Pkg.end() == false) - P = Pins + Pkg->ID; - else - { - // Check the unmatched table - for (vector::iterator I = Unmatched.begin(); - I != Unmatched.end() && P == 0; I++) - if (I->Pkg == Name) - P = &*I; - - if (P == 0) - P = &*Unmatched.insert(Unmatched.end(),PkgPin()); - } + Pin *P = Pins + Pkg->ID; + // the first specific stanza for a package is the ruler, + // all others need to be ignored + if (P->Type != pkgVersionMatch::None) + P = &*Unmatched.insert(Unmatched.end(),PkgPin(Pkg.FullName())); P->Type = Type; P->Priority = Priority; P->Data = Data; diff --git a/apt-pkg/policy.h b/apt-pkg/policy.h index f8b2678de..a5e6c6048 100644 --- a/apt-pkg/policy.h +++ b/apt-pkg/policy.h @@ -55,6 +55,7 @@ class pkgPolicy : public pkgDepCache::Policy struct PkgPin : Pin { string Pkg; + PkgPin(string const &Pkg) : Pin(), Pkg(Pkg) {}; }; Pin *Pins; diff --git a/debian/changelog b/debian/changelog index c4f7af623..77b448e77 100644 --- a/debian/changelog +++ b/debian/changelog @@ -15,8 +15,10 @@ apt (0.8.15.1) unstable; urgency=low - do not segfault in pinning if a package with this name doesn't exist. Thanks to Ferdinand Thommes for the report! - Defaults is a vector of Pin not of PkgPin + - ensure that only the first specific stanza for a package is used + - save all stanzas which had no effect in Unmatched - -- David Kalnischkies Wed, 29 Jun 2011 23:15:35 +0200 + -- David Kalnischkies Wed, 29 Jun 2011 23:21:12 +0200 apt (0.8.15) unstable; urgency=low diff --git a/test/integration/test-pin-non-existent-package b/test/integration/test-pin-non-existent-package index 1031272e2..bd6ccc476 100755 --- a/test/integration/test-pin-non-existent-package +++ b/test/integration/test-pin-non-existent-package @@ -12,7 +12,13 @@ setupaptarchive testcandidate() { msgtest "Test that the Candidate for $1 is" $2 - test "$(aptcache policy $1 | grep '^ Candidate:')" = " Candidate: $2" && msgpass || msgfail + if [ "$(aptcache policy $1 | grep '^ Candidate:')" = " Candidate: $2" ]; then + msgpass + else + echo + aptcache policy $1 + msgfail + fi } testcandidate apt '0.8.15' @@ -36,6 +42,13 @@ Package: doesntexist Pin: release a=unstable Pin-Priority: 1000' >> rootdir/etc/apt/preferences +testcandidate apt '(none)' + +echo ' +Package: apt +Pin: release a=unstable +Pin-Priority: 1000' >> rootdir/etc/apt/preferences + testcandidate apt '(none)' testequal 'N: Unable to locate package doesntexist' aptcache policy doesntexist -q=0 -- cgit v1.2.3 From 9164e147eb78de6b4f8c8ce4b71e93ad71a44725 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Thu, 30 Jun 2011 00:03:26 +0200 Subject: allow package:architecure in Package: --- apt-pkg/policy.cc | 40 ++++++++++++++++++++------ debian/changelog | 3 +- test/integration/test-pin-non-existent-package | 15 ++++++++++ 3 files changed, 49 insertions(+), 9 deletions(-) diff --git a/apt-pkg/policy.cc b/apt-pkg/policy.cc index 78f44d635..bd213e0ce 100644 --- a/apt-pkg/policy.cc +++ b/apt-pkg/policy.cc @@ -216,7 +216,14 @@ void pkgPolicy::CreatePin(pkgVersionMatch::MatchType Type,string Name, P->Data = Data; return; } - + + size_t found = Name.rfind(':'); + string Arch; + if (found != string::npos) { + Arch = Name.substr(found+1); + Name.erase(found); + } + // Allow pinning by wildcards // TODO: Maybe we should always prefer specific pins over non- // specific ones. @@ -225,23 +232,38 @@ void pkgPolicy::CreatePin(pkgVersionMatch::MatchType Type,string Name, pkgVersionMatch match(Data, Type); for (pkgCache::GrpIterator G = Cache->GrpBegin(); G.end() != true; ++G) if (match.ExpressionMatches(Name, G.Name())) - CreatePin(Type, G.Name(), Data, Priority); + { + if (Arch.empty() == false) + CreatePin(Type, string(G.Name()).append(":").append(Arch), Data, Priority); + else + CreatePin(Type, G.Name(), Data, Priority); + } return; } - // find the package group this pin applies to - pkgCache::GrpIterator Grp = Cache->FindGrp(Name); - if (Grp.end() == true) + // find the package (group) this pin applies to + pkgCache::GrpIterator Grp; + pkgCache::PkgIterator Pkg; + if (Arch.empty() == false) + Pkg = Cache->FindPkg(Name, Arch); + else { + Grp = Cache->FindGrp(Name); + if (Grp.end() == false) + Pkg = Grp.PackageList(); + } + + if (Pkg.end() == true) { - Pin *P = &*Unmatched.insert(Unmatched.end(),PkgPin(Name)); + PkgPin *P = &*Unmatched.insert(Unmatched.end(),PkgPin(Name)); + if (Arch.empty() == false) + P->Pkg.append(":").append(Arch); P->Type = Type; P->Priority = Priority; P->Data = Data; return; } - for (pkgCache::PkgIterator Pkg = Grp.PackageList(); - Pkg.end() != true; Pkg = Grp.NextPkg(Pkg)) + for (; Pkg.end() != true; Pkg = Grp.NextPkg(Pkg)) { Pin *P = Pins + Pkg->ID; // the first specific stanza for a package is the ruler, @@ -251,6 +273,8 @@ void pkgPolicy::CreatePin(pkgVersionMatch::MatchType Type,string Name, P->Type = Type; P->Priority = Priority; P->Data = Data; + if (Grp.end() == true) + break; } } /*}}}*/ diff --git a/debian/changelog b/debian/changelog index 77b448e77..03a314679 100644 --- a/debian/changelog +++ b/debian/changelog @@ -17,8 +17,9 @@ apt (0.8.15.1) unstable; urgency=low - Defaults is a vector of Pin not of PkgPin - ensure that only the first specific stanza for a package is used - save all stanzas which had no effect in Unmatched + - allow package:architecure in Package: - -- David Kalnischkies Wed, 29 Jun 2011 23:21:12 +0200 + -- David Kalnischkies Thu, 30 Jun 2011 00:02:15 +0200 apt (0.8.15) unstable; urgency=low diff --git a/test/integration/test-pin-non-existent-package b/test/integration/test-pin-non-existent-package index bd6ccc476..c91e77844 100755 --- a/test/integration/test-pin-non-existent-package +++ b/test/integration/test-pin-non-existent-package @@ -7,6 +7,7 @@ setupenvironment configarchitecture "i386" insertpackage 'unstable' 'apt' 'i386' '0.8.15' +insertpackage 'unstable' 'arch' 'i386' '1.0' setupaptarchive @@ -55,3 +56,17 @@ testequal 'N: Unable to locate package doesntexist' aptcache policy doesntexist testequal 'Reading package lists... Building dependency tree... 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget dist-upgrade + +echo 'Package: arch:amd64 +Pin: release a=unstable +Pin-Priority: -1' > rootdir/etc/apt/preferences + +testcandidate arch '1.0' + +echo ' +Package: arch:i386 +Pin: release a=unstable +Pin-Priority: -1' >> rootdir/etc/apt/preferences + +testcandidate arch '(none)' + -- cgit v1.2.3 From 41b4dee4acaadda869840f7a94c58fd5b7d42017 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Thu, 30 Jun 2011 14:05:03 +0200 Subject: * apt-pkg/pkgcachegen.cc: - fallback to memory if file is not writeable even if access() told us the opposite before (e.g. in fakeroot 1.16) (Closes: #630591) --- apt-pkg/pkgcachegen.cc | 22 +++++++++++++++++++--- debian/changelog | 9 +++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc index 9820fde81..8f9737e26 100644 --- a/apt-pkg/pkgcachegen.cc +++ b/apt-pkg/pkgcachegen.cc @@ -1169,16 +1169,32 @@ bool pkgCacheGenerator::MakeStatusCache(pkgSourceList &List,OpProgress *Progress SPtr Map; if (Writeable == true && CacheFile.empty() == false) { + _error->PushToStack(); unlink(CacheFile.c_str()); CacheF = new FileFd(CacheFile,FileFd::WriteAtomic); fchmod(CacheF->Fd(),0644); Map = CreateDynamicMMap(CacheF, MMap::Public); if (_error->PendingError() == true) - return false; - if (Debug == true) + { + delete CacheF.UnGuard(); + delete Map.UnGuard(); + if (Debug == true) + std::clog << "Open filebased MMap FAILED" << std::endl; + Writeable = false; + if (AllowMem == false) + { + _error->MergeWithStack(); + return false; + } + _error->RevertToStack(); + } + else if (Debug == true) + { + _error->MergeWithStack(); std::clog << "Open filebased MMap" << std::endl; + } } - else + if (Writeable == false || CacheFile.empty() == true) { // Just build it in memory.. Map = CreateDynamicMMap(NULL); diff --git a/debian/changelog b/debian/changelog index 87d25e78f..d74baf2cc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +apt (0.8.15.2) unstable; urgency=low + + [ David Kalnischkies ] + * apt-pkg/pkgcachegen.cc: + - fallback to memory if file is not writeable even if access() + told us the opposite before (e.g. in fakeroot 1.16) (Closes: #630591) + + -- David Kalnischkies Thu, 30 Jun 2011 14:00:54 +0200 + apt (0.8.15.1) unstable; urgency=low [ David Kalnischkies ] -- cgit v1.2.3 From 8a7a566b0315425c2b393751f0f9b21de0b26b1a Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Thu, 30 Jun 2011 14:24:59 +0200 Subject: remove empty line dpkg-gensymbols complains about --- debian/apt.symbols | 1 - 1 file changed, 1 deletion(-) diff --git a/debian/apt.symbols b/debian/apt.symbols index 04e13edd7..932fb1411 100644 --- a/debian/apt.symbols +++ b/debian/apt.symbols @@ -1256,7 +1256,6 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (arch=hppa mips mipsel sparc|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned int&)@Base" 0.8.11.4 1 (arch=ia64 sparc64|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned long&)@Base" 0.8.11.4 1 (arch=sh4|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __builtin_va_list&, unsigned int&)@Base" 0.8.11.4 1 - (arch=i386 hurd-i386 kfreebsd-i386|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, char*&, int, unsigned int&)@Base" 0.8.11.4 1 (arch=armel armhf|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, std::__va_list&, int, unsigned int&)@Base" 0.8.11.4 1 (arch=alpha|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag&, int, unsigned long&)@Base" 0.8.11.4 1 -- cgit v1.2.3 From 457bea86ba07fc0cfcb08bcf9f81f5858975f916 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Fri, 1 Jul 2011 14:10:28 +0100 Subject: apt-pkg/acquire-item.cc: improve error message for valid-until --- apt-pkg/acquire-item.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index c3817f6ee..215615bdd 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -1473,8 +1473,10 @@ bool pkgAcqMetaIndex::VerifyVendor(string Message) /*{{{*/ // TRANSLATOR: The first %s is the URL of the bad Release file, the second is // the time since then the file is invalid - formated in the same way as in // the download progress display (e.g. 7d 3h 42min 1s) - return _error->Error(_("Release file expired, ignoring %s (invalid since %s)"), - RealURI.c_str(), TimeToStr(invalid_since).c_str()); + return _error->Error( + _("Release file for %s is expired (invalid since %s). " + "Updates for this repository will not be applied."), + RealURI.c_str(), TimeToStr(invalid_since).c_str()); } if (_config->FindB("Debug::pkgAcquire::Auth", false)) -- cgit v1.2.3 From 64aadc2d005d601074c1599ee51cee08745cfa36 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 5 Jul 2011 15:14:25 +0200 Subject: * doc/sources.list.5.xml: - document available [options] for sources.list entries (Closes: 632441) --- debian/changelog | 4 +++- doc/sources.list.5.xml | 18 +++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index d74baf2cc..dc0f08333 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,8 +4,10 @@ apt (0.8.15.2) unstable; urgency=low * apt-pkg/pkgcachegen.cc: - fallback to memory if file is not writeable even if access() told us the opposite before (e.g. in fakeroot 1.16) (Closes: #630591) + * doc/sources.list.5.xml: + - document available [options] for sources.list entries (Closes: 632441) - -- David Kalnischkies Thu, 30 Jun 2011 14:00:54 +0200 + -- David Kalnischkies Tue, 05 Jul 2011 15:12:21 +0200 apt (0.8.15.1) unstable; urgency=low diff --git a/doc/sources.list.5.xml b/doc/sources.list.5.xml index 837f07683..fab125b4e 100644 --- a/doc/sources.list.5.xml +++ b/doc/sources.list.5.xml @@ -78,7 +78,7 @@ The format for a sources.list entry using the deb and deb-src types is: - deb uri distribution [component1] [component2] [...] + deb [ options ] uri distribution [component1] [component2] [...] The URI for the deb type must specify the base of the Debian distribution, from which APT will find the information it needs. @@ -109,6 +109,17 @@ simultaneous anonymous users. APT also parallelizes connections to different hosts to more effectively deal with sites with low bandwidth. + options is always optional and needs to be surounded by + square brackets. It can consist of multiple settings in the form + setting=value. + Multiple settings are separated by spaces. The following settings are supported by APT, + note through that unsupported settings will be ignored silently: + arch=arch1,arch2,… + can be used to specify for which architectures packages information should + be downloaded. If this option is not set all architectures defined by the + APT::Architectures option will be downloaded. + + It is important to list sources in order of preference, with the most preferred source listed first. Typically this will result in sorting by speed from fastest to slowest (CD-ROM followed by hosts on a local @@ -206,6 +217,11 @@ deb http://security.debian.org/ &stable-codename;/updates main contrib non-free Source line for the above deb-src file:/home/jason/debian unstable main contrib non-free + The first line gets package information for the architectures in APT::Architectures + while the second always retrieves amd64 and armel. + deb http://ftp.debian.org/debian &stable-codename; main +deb [ arch=amd64,armel ] http://ftp.debian.org/debian &stable-codename; main + Uses HTTP to access the archive at archive.debian.org, and uses only the hamm/main area. deb http://archive.debian.org/debian-archive hamm main -- cgit v1.2.3 From 58014adc6df1772567e0bc32687f1a03cfcb49fb Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 5 Jul 2011 15:34:43 +0200 Subject: * doc/apt.conf.5.xml: - document APT::Architectures list (Closes: #612102) --- debian/changelog | 4 +++- doc/apt.conf.5.xml | 10 +++++++++- doc/examples/configure-index | 1 + 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index dc0f08333..af7e792db 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,8 +6,10 @@ apt (0.8.15.2) unstable; urgency=low told us the opposite before (e.g. in fakeroot 1.16) (Closes: #630591) * doc/sources.list.5.xml: - document available [options] for sources.list entries (Closes: 632441) + * doc/apt.conf.5.xml: + - document APT::Architectures list (Closes: #612102) - -- David Kalnischkies Tue, 05 Jul 2011 15:12:21 +0200 + -- David Kalnischkies Tue, 05 Jul 2011 15:31:55 +0200 apt (0.8.15.1) unstable; urgency=low diff --git a/doc/apt.conf.5.xml b/doc/apt.conf.5.xml index 02de89f3b..2634c47a9 100644 --- a/doc/apt.conf.5.xml +++ b/doc/apt.conf.5.xml @@ -153,7 +153,15 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";}; parsing package lists. The internal default is the architecture apt was compiled for. - + + Architectures + All Architectures the system supports. Processors implementing the amd64 + are e.g. also able to execute binaries compiled for i386; This list is use when fetching files and + parsing package lists. The internal default is always the native architecture (APT::Architecture) + and all foreign architectures it can retrieve by calling dpkg --print-foreign-architectures. + + + Default-Release Default release to install packages from if more than one version available. Contains release name, codename or release version. Examples: 'stable', 'testing', diff --git a/doc/examples/configure-index b/doc/examples/configure-index index 6884e06e3..27232d40b 100644 --- a/doc/examples/configure-index +++ b/doc/examples/configure-index @@ -23,6 +23,7 @@ quiet::NoUpdate "true"; // never update progress information - included in -q=1 APT { Architecture "i386"; + Architectures { "amd64"; "armel"; }; Build-Essential "build-essential"; NeverAutoRemove { "linux-image.*"; }; // packages that should never -- cgit v1.2.3 From b41929c0139d0658046fb4e4088a8de167705a99 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 6 Jul 2011 12:46:29 +0200 Subject: * cmdline/apt-get.cc: - restore all important dependencies for garbage packages (LP: #806274) --- cmdline/apt-get.cc | 6 +- debian/changelog | 4 +- .../test-ubuntu-bug-806274-install-suggests | 81 ++++++++++++++++++++++ 3 files changed, 87 insertions(+), 4 deletions(-) create mode 100755 test/integration/test-ubuntu-bug-806274-install-suggests diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index 845c92026..3292ae745 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -1697,7 +1697,7 @@ bool DoAutomaticRemove(CacheFile &Cache) // we could have removed a new dependency of a garbage package, // so check if a reverse depends is broken and if so install it again. - if (tooMuch.empty() == false && Cache->BrokenCount() != 0) + if (tooMuch.empty() == false && (Cache->BrokenCount() != 0 || Cache->PolicyBrokenCount() != 0)) { bool Changed; do { @@ -1708,8 +1708,8 @@ bool DoAutomaticRemove(CacheFile &Cache) for (pkgCache::DepIterator R = P.RevDependsList(); R.end() == false; ++R) { - if (R->Type != pkgCache::Dep::Depends && - R->Type != pkgCache::Dep::PreDepends) + if (R.IsNegative() == true || + Cache->IsImportantDep(R) == false) continue; pkgCache::PkgIterator N = R.ParentPkg(); if (N.end() == true || (N->CurrentVer == 0 && (*Cache)[N].Install() == false)) diff --git a/debian/changelog b/debian/changelog index af7e792db..4b70eec55 100644 --- a/debian/changelog +++ b/debian/changelog @@ -8,8 +8,10 @@ apt (0.8.15.2) unstable; urgency=low - document available [options] for sources.list entries (Closes: 632441) * doc/apt.conf.5.xml: - document APT::Architectures list (Closes: #612102) + * cmdline/apt-get.cc: + - restore all important dependencies for garbage packages (LP: #806274) - -- David Kalnischkies Tue, 05 Jul 2011 15:31:55 +0200 + -- David Kalnischkies Wed, 06 Jul 2011 12:44:58 +0200 apt (0.8.15.1) unstable; urgency=low diff --git a/test/integration/test-ubuntu-bug-806274-install-suggests b/test/integration/test-ubuntu-bug-806274-install-suggests new file mode 100755 index 000000000..fb72f0999 --- /dev/null +++ b/test/integration/test-ubuntu-bug-806274-install-suggests @@ -0,0 +1,81 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture "i386" + +insertpackage 'unstable' 'apt' 'i386' '0.8.15' 'Depends: foo +Recommends: bar +Suggests: baz' +insertpackage 'unstable' 'foo' 'i386' '1.0' +insertpackage 'unstable' 'bar' 'i386' '1.0' +insertpackage 'unstable' 'baz' 'i386' '1.0' + +setupaptarchive + +testequal 'Reading package lists... +Building dependency tree... +The following extra packages will be installed: + bar foo +Suggested packages: + baz +The following NEW packages will be installed: + apt bar foo +0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded. +Inst foo (1.0 unstable [i386]) +Conf foo (1.0 unstable [i386]) +Inst apt (0.8.15 unstable [i386]) +Conf apt (0.8.15 unstable [i386]) +Inst bar (1.0 unstable [i386]) +Conf bar (1.0 unstable [i386])' aptget install apt -s --install-recommends --no-install-suggests + + +testequal 'Reading package lists... +Building dependency tree... +The following extra packages will be installed: + bar baz foo +The following NEW packages will be installed: + apt bar baz foo +0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded. +Inst foo (1.0 unstable [i386]) +Conf foo (1.0 unstable [i386]) +Inst apt (0.8.15 unstable [i386]) +Conf apt (0.8.15 unstable [i386]) +Inst bar (1.0 unstable [i386]) +Inst baz (1.0 unstable [i386]) +Conf bar (1.0 unstable [i386]) +Conf baz (1.0 unstable [i386])' aptget install apt -s --install-recommends --install-suggests + +testequal 'Reading package lists... +Building dependency tree... +The following extra packages will be installed: + foo +Suggested packages: + baz +Recommended packages: + bar +The following NEW packages will be installed: + apt foo +0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. +Inst foo (1.0 unstable [i386]) +Conf foo (1.0 unstable [i386]) +Inst apt (0.8.15 unstable [i386]) +Conf apt (0.8.15 unstable [i386])' aptget install apt -s --no-install-recommends --no-install-suggests + +testequal 'Reading package lists... +Building dependency tree... +The following extra packages will be installed: + baz foo +Recommended packages: + bar +The following NEW packages will be installed: + apt baz foo +0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded. +Inst foo (1.0 unstable [i386]) +Conf foo (1.0 unstable [i386]) +Inst apt (0.8.15 unstable [i386]) +Conf apt (0.8.15 unstable [i386]) +Inst baz (1.0 unstable [i386]) +Conf baz (1.0 unstable [i386])' aptget install apt -s --no-install-recommends --install-suggests -- cgit v1.2.3 From 78485ab210b815c21ce55cb0cecb834ba5158e18 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 6 Jul 2011 13:41:18 +0200 Subject: * apt-pkg/init.cc: - use CndSet in pkgInitConfig (Closes: #629617) --- apt-pkg/contrib/configuration.cc | 15 +++++++- apt-pkg/contrib/configuration.h | 3 +- apt-pkg/init.cc | 76 +++++++++++++++++++++------------------- debian/changelog | 4 ++- 4 files changed, 59 insertions(+), 39 deletions(-) diff --git a/apt-pkg/contrib/configuration.cc b/apt-pkg/contrib/configuration.cc index cc7093fe2..0664e3704 100644 --- a/apt-pkg/contrib/configuration.cc +++ b/apt-pkg/contrib/configuration.cc @@ -318,6 +318,19 @@ void Configuration::CndSet(const char *Name,const string &Value) Itm->Value = Value; } /*}}}*/ +// Configuration::Set - Set an integer value /*{{{*/ +// --------------------------------------------------------------------- +/* */ +void Configuration::CndSet(const char *Name,int const Value) +{ + Item *Itm = Lookup(Name,true); + if (Itm == 0 || Itm->Value.empty() == false) + return; + char S[300]; + snprintf(S,sizeof(S),"%i",Value); + Itm->Value = S; +} + /*}}}*/ // Configuration::Set - Set a value /*{{{*/ // --------------------------------------------------------------------- /* */ @@ -332,7 +345,7 @@ void Configuration::Set(const char *Name,const string &Value) // Configuration::Set - Set an integer value /*{{{*/ // --------------------------------------------------------------------- /* */ -void Configuration::Set(const char *Name,int const &Value) +void Configuration::Set(const char *Name,int const Value) { Item *Itm = Lookup(Name,true); if (Itm == 0) diff --git a/apt-pkg/contrib/configuration.h b/apt-pkg/contrib/configuration.h index 71e5a0e47..3568ce815 100644 --- a/apt-pkg/contrib/configuration.h +++ b/apt-pkg/contrib/configuration.h @@ -82,8 +82,9 @@ class Configuration inline void Set(const string &Name,const string &Value) {Set(Name.c_str(),Value);}; void CndSet(const char *Name,const string &Value); + void CndSet(const char *Name,const int Value); void Set(const char *Name,const string &Value); - void Set(const char *Name,const int &Value); + void Set(const char *Name,const int Value); inline bool Exists(const string &Name) const {return Exists(Name.c_str());}; bool Exists(const char *Name) const; diff --git a/apt-pkg/init.cc b/apt-pkg/init.cc index 31b2d9ccd..38a0814e5 100644 --- a/apt-pkg/init.cc +++ b/apt-pkg/init.cc @@ -33,60 +33,64 @@ const char *pkgLibVersion = Stringfy(APT_PKG_MAJOR) "." bool pkgInitConfig(Configuration &Cnf) { // General APT things - Cnf.Set("APT::Architecture", COMMON_ARCH); - Cnf.Set("APT::Build-Essential::", "build-essential"); - Cnf.Set("APT::Install-Recommends", true); - Cnf.Set("APT::Install-Suggests", false); - Cnf.Set("Dir","/"); + Cnf.CndSet("APT::Architecture", COMMON_ARCH); + if (Cnf.Exists("APT::Build-Essential") == false) + Cnf.Set("APT::Build-Essential::", "build-essential"); + Cnf.CndSet("APT::Install-Recommends", true); + Cnf.CndSet("APT::Install-Suggests", false); + Cnf.CndSet("Dir","/"); // State - Cnf.Set("Dir::State","var/lib/apt/"); + Cnf.CndSet("Dir::State","var/lib/apt/"); /* Just in case something goes horribly wrong, we can fall back to the old /var/state paths.. */ struct stat St; if (stat("/var/lib/apt/.",&St) != 0 && stat("/var/state/apt/.",&St) == 0) - Cnf.Set("Dir::State","var/state/apt/"); + Cnf.CndSet("Dir::State","var/state/apt/"); - Cnf.Set("Dir::State::lists","lists/"); - Cnf.Set("Dir::State::cdroms","cdroms.list"); - Cnf.Set("Dir::State::mirrors","mirrors/"); + Cnf.CndSet("Dir::State::lists","lists/"); + Cnf.CndSet("Dir::State::cdroms","cdroms.list"); + Cnf.CndSet("Dir::State::mirrors","mirrors/"); // Cache - Cnf.Set("Dir::Cache","var/cache/apt/"); - Cnf.Set("Dir::Cache::archives","archives/"); - Cnf.Set("Dir::Cache::srcpkgcache","srcpkgcache.bin"); - Cnf.Set("Dir::Cache::pkgcache","pkgcache.bin"); + Cnf.CndSet("Dir::Cache","var/cache/apt/"); + Cnf.CndSet("Dir::Cache::archives","archives/"); + Cnf.CndSet("Dir::Cache::srcpkgcache","srcpkgcache.bin"); + Cnf.CndSet("Dir::Cache::pkgcache","pkgcache.bin"); // Configuration - Cnf.Set("Dir::Etc","etc/apt/"); - Cnf.Set("Dir::Etc::sourcelist","sources.list"); - Cnf.Set("Dir::Etc::sourceparts","sources.list.d"); - Cnf.Set("Dir::Etc::vendorlist","vendors.list"); - Cnf.Set("Dir::Etc::vendorparts","vendors.list.d"); - Cnf.Set("Dir::Etc::main","apt.conf"); - Cnf.Set("Dir::Etc::netrc", "auth.conf"); - Cnf.Set("Dir::Etc::parts","apt.conf.d"); - Cnf.Set("Dir::Etc::preferences","preferences"); - Cnf.Set("Dir::Etc::preferencesparts","preferences.d"); - Cnf.Set("Dir::Etc::trusted", "trusted.gpg"); - Cnf.Set("Dir::Etc::trustedparts","trusted.gpg.d"); - Cnf.Set("Dir::Bin::methods","/usr/lib/apt/methods"); - Cnf.Set("Dir::Media::MountPath","/media/apt"); + Cnf.CndSet("Dir::Etc","etc/apt/"); + Cnf.CndSet("Dir::Etc::sourcelist","sources.list"); + Cnf.CndSet("Dir::Etc::sourceparts","sources.list.d"); + Cnf.CndSet("Dir::Etc::vendorlist","vendors.list"); + Cnf.CndSet("Dir::Etc::vendorparts","vendors.list.d"); + Cnf.CndSet("Dir::Etc::main","apt.conf"); + Cnf.CndSet("Dir::Etc::netrc", "auth.conf"); + Cnf.CndSet("Dir::Etc::parts","apt.conf.d"); + Cnf.CndSet("Dir::Etc::preferences","preferences"); + Cnf.CndSet("Dir::Etc::preferencesparts","preferences.d"); + Cnf.CndSet("Dir::Etc::trusted", "trusted.gpg"); + Cnf.CndSet("Dir::Etc::trustedparts","trusted.gpg.d"); + Cnf.CndSet("Dir::Bin::methods","/usr/lib/apt/methods"); + Cnf.CndSet("Dir::Media::MountPath","/media/apt"); // State - Cnf.Set("Dir::Log","var/log/apt"); - Cnf.Set("Dir::Log::Terminal","term.log"); - Cnf.Set("Dir::Log::History","history.log"); + Cnf.CndSet("Dir::Log","var/log/apt"); + Cnf.CndSet("Dir::Log::Terminal","term.log"); + Cnf.CndSet("Dir::Log::History","history.log"); - Cnf.Set("Dir::Ignore-Files-Silently::", "~$"); - Cnf.Set("Dir::Ignore-Files-Silently::", "\\.disabled$"); - Cnf.Set("Dir::Ignore-Files-Silently::", "\\.bak$"); - Cnf.Set("Dir::Ignore-Files-Silently::", "\\.dpkg-[a-z]+$"); + if (Cnf.Exists("Dir::Ignore-Files-Silently") == false) + { + Cnf.Set("Dir::Ignore-Files-Silently::", "~$"); + Cnf.Set("Dir::Ignore-Files-Silently::", "\\.disabled$"); + Cnf.Set("Dir::Ignore-Files-Silently::", "\\.bak$"); + Cnf.Set("Dir::Ignore-Files-Silently::", "\\.dpkg-[a-z]+$"); + } // Default cdrom mount point - Cnf.Set("Acquire::cdrom::mount", "/media/cdrom/"); + Cnf.CndSet("Acquire::cdrom::mount", "/media/cdrom/"); bool Res = true; diff --git a/debian/changelog b/debian/changelog index 4b70eec55..8bf5af2d1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -10,8 +10,10 @@ apt (0.8.15.2) unstable; urgency=low - document APT::Architectures list (Closes: #612102) * cmdline/apt-get.cc: - restore all important dependencies for garbage packages (LP: #806274) + * apt-pkg/init.cc: + - use CndSet in pkgInitConfig (Closes: #629617) - -- David Kalnischkies Wed, 06 Jul 2011 12:44:58 +0200 + -- David Kalnischkies Wed, 06 Jul 2011 13:29:52 +0200 apt (0.8.15.1) unstable; urgency=low -- cgit v1.2.3 From 15fb00074cb5757e4cdcd790fcf75f0134ae0fe4 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Wed, 13 Jul 2011 13:47:25 +0200 Subject: apt-pkg/aptconfiguration.h: fix copy/paste error in getCompressionTypes() description --- apt-pkg/aptconfiguration.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apt-pkg/aptconfiguration.h b/apt-pkg/aptconfiguration.h index 815db6cae..1f0399dd2 100644 --- a/apt-pkg/aptconfiguration.h +++ b/apt-pkg/aptconfiguration.h @@ -36,7 +36,7 @@ public: /*{{{*/ * \param Cached saves the result so we need to calculated it only once * this parameter should ony be used for testing purposes. * - * \return a vector of (all) Language Codes in the prefered usage order + * \return a vector of the compression types in the prefered usage order */ std::vector static const getCompressionTypes(bool const &Cached = true); -- cgit v1.2.3 From 89c4c588b275d098af33f36eeddea6fd75068342 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Wed, 13 Jul 2011 19:02:10 +0200 Subject: fix from David Kalnischkies for the InRelease gpg verification code (LP: #784473) --- apt-pkg/indexcopy.cc | 21 ++++++++++++++++++++- debian/changelog | 7 +++++++ methods/gpgv.cc | 13 ++++++++----- 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/apt-pkg/indexcopy.cc b/apt-pkg/indexcopy.cc index 064fb007c..31c577705 100644 --- a/apt-pkg/indexcopy.cc +++ b/apt-pkg/indexcopy.cc @@ -664,6 +664,21 @@ bool SigVerify::CopyAndVerify(string CDROM,string Name,vector &SigList, bool SigVerify::RunGPGV(std::string const &File, std::string const &FileGPG, int const &statusfd, int fd[2]) { + if (File == FileGPG) + { + #define SIGMSG "-----BEGIN PGP SIGNED MESSAGE-----\n" + char buffer[sizeof(SIGMSG)]; + FILE* gpg = fopen(File.c_str(), "r"); + if (gpg == NULL) + return _error->Errno("RunGPGV", _("Could not open file %s"), File.c_str()); + char const * const test = fgets(buffer, sizeof(buffer), gpg); + fclose(gpg); + if (test == NULL || strcmp(buffer, SIGMSG) != 0) + return _error->Error(_("File %s doesn't start with a clearsigned message"), File.c_str()); + #undef SIGMSG + } + + string const gpgvpath = _config->Find("Dir::Bin::gpg", "/usr/bin/gpgv"); // FIXME: remove support for deprecated APT::GPGV setting string const trustedFile = _config->Find("APT::GPGV::TrustedKeyring", _config->FindFile("Dir::Etc::Trusted")); @@ -688,7 +703,11 @@ bool SigVerify::RunGPGV(std::string const &File, std::string const &FileGPG, Args.reserve(30); if (keyrings.empty() == true) - return false; + { + // TRANSLATOR: %s is the trusted keyring parts directory + return _error->Error(_("No keyring installed in %s."), + _config->FindDir("Dir::Etc::TrustedParts").c_str()); + } Args.push_back(gpgvpath.c_str()); Args.push_back("--ignore-time-conflict"); diff --git a/debian/changelog b/debian/changelog index 87d25e78f..244bb83e0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +apt (0.8.15.2) unstable; urgency=high + + * fix from David Kalnischkies for the InRelease gpg verification + code (LP: #784473) + + -- Michael Vogt Tue, 12 Jul 2011 11:54:47 +0200 + apt (0.8.15.1) unstable; urgency=low [ David Kalnischkies ] diff --git a/methods/gpgv.cc b/methods/gpgv.cc index efe1f73f7..960c06180 100644 --- a/methods/gpgv.cc +++ b/methods/gpgv.cc @@ -65,13 +65,16 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile, return string("Couldn't spawn new process") + strerror(errno); else if (pid == 0) { - if (SigVerify::RunGPGV(outfile, file, 3, fd) == false) + _error->PushToStack(); + bool const success = SigVerify::RunGPGV(outfile, file, 3, fd); + if (success == false) { - // TRANSLATOR: %s is the trusted keyring parts directory - ioprintf(ret, _("No keyring installed in %s."), - _config->FindDir("Dir::Etc::TrustedParts").c_str()); - return ret.str(); + string errmsg; + _error->PopMessage(errmsg); + _error->RevertToStack(); + return errmsg; } + _error->RevertToStack(); exit(111); } close(fd[1]); -- cgit v1.2.3 From 953b348cb02fcdccb597b6988f904bfdb696e92e Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Thu, 14 Jul 2011 11:03:55 +0200 Subject: make ResolveByKeep() more clever and hold back packages that would go into a broken policy state by the upgrade --- apt-pkg/algorithms.cc | 40 +- apt-pkg/algorithms.h | 3 + po/apt-all.pot | 917 ++++++++++++--------- .../test-resolve-by-keep-new-recommends | 20 + 4 files changed, 570 insertions(+), 410 deletions(-) create mode 100755 test/integration/test-resolve-by-keep-new-recommends diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc index 2dae4258a..7c911b865 100644 --- a/apt-pkg/algorithms.cc +++ b/apt-pkg/algorithms.cc @@ -1176,6 +1176,31 @@ bool pkgProblemResolver::Resolve(bool BrokenFix) return true; } /*}}}*/ + +// ProblemResolver::BreaksInstOrPolicy - Check if the given pkg is broken/*{{{*/ +// --------------------------------------------------------------------- +/* This checks if the given package is broken either by a hard dependency + (InstBroken()) or by introducing a new policy breakage e.g. new + unsatisfied recommends for a package that was in "policy-good" state + + Note that this is not perfect as it will ignore further breakage + for already broken policy (recommends) +*/ +bool pkgProblemResolver::InstOrNewPolicyBroken(pkgCache::PkgIterator I) +{ + + // a broken install is always a problem + if (Cache[I].InstBroken() == true) + return true; + + // a newly broken policy (recommends/suggests) is a problem + if (Cache[I].NowPolicyBroken() == false && + Cache[I].InstPolicyBroken() == true) + return true; + + return false; +} + // ProblemResolver::ResolveByKeep - Resolve problems using keep /*{{{*/ // --------------------------------------------------------------------- /* This is the work horse of the soft upgrade routine. It is very gental @@ -1220,9 +1245,12 @@ bool pkgProblemResolver::ResolveByKeep() { pkgCache::PkgIterator I(Cache,*K); - if (Cache[I].InstallVer == 0 || Cache[I].InstBroken() == false) + if (Cache[I].InstallVer == 0) continue; + if (InstOrNewPolicyBroken(I) == false) + continue; + /* Keep the package. If this works then great, otherwise we have to be significantly more agressive and manipulate its dependencies */ if ((Flags[I->ID] & Protected) == 0) @@ -1230,7 +1258,7 @@ bool pkgProblemResolver::ResolveByKeep() if (Debug == true) clog << "Keeping package " << I.FullName(false) << endl; Cache.MarkKeep(I, false, false); - if (Cache[I].InstBroken() == false) + if (InstOrNewPolicyBroken(I) == false) { K = PList - 1; continue; @@ -1280,11 +1308,11 @@ bool pkgProblemResolver::ResolveByKeep() Cache.MarkKeep(Pkg, false, false); } - if (Cache[I].InstBroken() == false) + if (InstOrNewPolicyBroken(I) == false) break; } - if (Cache[I].InstBroken() == false) + if (InstOrNewPolicyBroken(I) == false) break; if (Start == End) @@ -1292,11 +1320,11 @@ bool pkgProblemResolver::ResolveByKeep() Start++; } - if (Cache[I].InstBroken() == false) + if (InstOrNewPolicyBroken(I) == false) break; } - if (Cache[I].InstBroken() == true) + if (InstOrNewPolicyBroken(I) == true) continue; // Restart again. diff --git a/apt-pkg/algorithms.h b/apt-pkg/algorithms.h index ebe31cc10..99501bed1 100644 --- a/apt-pkg/algorithms.h +++ b/apt-pkg/algorithms.h @@ -106,6 +106,9 @@ class pkgProblemResolver /*{{{*/ void MakeScores(); bool DoUpgrade(pkgCache::PkgIterator Pkg); + protected: + bool InstOrNewPolicyBroken(pkgCache::PkgIterator Pkg); + public: inline void Protect(pkgCache::PkgIterator Pkg) {Flags[Pkg->ID] |= Protected; Cache.MarkProtected(Pkg);}; diff --git a/po/apt-all.pot b/po/apt-all.pot index 73ed82195..effb93f5a 100644 --- a/po/apt-all.pot +++ b/po/apt-all.pot @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-12 17:42+0100\n" +"POT-Creation-Date: 2011-07-14 10:31+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,155 +17,158 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: cmdline/apt-cache.cc:156 +#: cmdline/apt-cache.cc:154 #, c-format msgid "Package %s version %s has an unmet dep:\n" msgstr "" -#: cmdline/apt-cache.cc:284 +#: cmdline/apt-cache.cc:282 msgid "Total package names: " msgstr "" -#: cmdline/apt-cache.cc:286 +#: cmdline/apt-cache.cc:284 msgid "Total package structures: " msgstr "" -#: cmdline/apt-cache.cc:326 +#: cmdline/apt-cache.cc:324 msgid " Normal packages: " msgstr "" -#: cmdline/apt-cache.cc:327 +#: cmdline/apt-cache.cc:325 msgid " Pure virtual packages: " msgstr "" -#: cmdline/apt-cache.cc:328 +#: cmdline/apt-cache.cc:326 msgid " Single virtual packages: " msgstr "" -#: cmdline/apt-cache.cc:329 +#: cmdline/apt-cache.cc:327 msgid " Mixed virtual packages: " msgstr "" -#: cmdline/apt-cache.cc:330 +#: cmdline/apt-cache.cc:328 msgid " Missing: " msgstr "" -#: cmdline/apt-cache.cc:332 +#: cmdline/apt-cache.cc:330 msgid "Total distinct versions: " msgstr "" -#: cmdline/apt-cache.cc:334 +#: cmdline/apt-cache.cc:332 msgid "Total distinct descriptions: " msgstr "" -#: cmdline/apt-cache.cc:336 +#: cmdline/apt-cache.cc:334 msgid "Total dependencies: " msgstr "" -#: cmdline/apt-cache.cc:339 +#: cmdline/apt-cache.cc:337 msgid "Total ver/file relations: " msgstr "" -#: cmdline/apt-cache.cc:341 +#: cmdline/apt-cache.cc:339 msgid "Total Desc/File relations: " msgstr "" -#: cmdline/apt-cache.cc:343 +#: cmdline/apt-cache.cc:341 msgid "Total Provides mappings: " msgstr "" -#: cmdline/apt-cache.cc:355 +#: cmdline/apt-cache.cc:353 msgid "Total globbed strings: " msgstr "" -#: cmdline/apt-cache.cc:369 +#: cmdline/apt-cache.cc:367 msgid "Total dependency version space: " msgstr "" -#: cmdline/apt-cache.cc:374 +#: cmdline/apt-cache.cc:372 msgid "Total slack space: " msgstr "" -#: cmdline/apt-cache.cc:382 +#: cmdline/apt-cache.cc:380 msgid "Total space accounted for: " msgstr "" -#: cmdline/apt-cache.cc:513 cmdline/apt-cache.cc:1194 +#: cmdline/apt-cache.cc:511 cmdline/apt-cache.cc:1139 #, c-format msgid "Package file %s is out of sync." msgstr "" -#: cmdline/apt-cache.cc:1273 +#: cmdline/apt-cache.cc:589 cmdline/apt-cache.cc:1374 +#: cmdline/apt-cache.cc:1376 cmdline/apt-cache.cc:1453 cmdline/apt-mark.cc:37 +#: cmdline/apt-mark.cc:84 cmdline/apt-mark.cc:160 +msgid "No packages found" +msgstr "" + +#: cmdline/apt-cache.cc:1218 msgid "You must give at least one search pattern" msgstr "" -#: cmdline/apt-cache.cc:1429 cmdline/apt-cache.cc:1431 -#: cmdline/apt-cache.cc:1508 -msgid "No packages found" +#: cmdline/apt-cache.cc:1353 +msgid "This command is deprecated. Please use 'apt-mark showauto' instead." msgstr "" -#: cmdline/apt-cache.cc:1503 apt-pkg/cacheset.cc:440 +#: cmdline/apt-cache.cc:1448 apt-pkg/cacheset.cc:440 #, c-format msgid "Unable to locate package %s" msgstr "" -#: cmdline/apt-cache.cc:1533 +#: cmdline/apt-cache.cc:1478 msgid "Package files:" msgstr "" -#: cmdline/apt-cache.cc:1540 cmdline/apt-cache.cc:1638 +#: cmdline/apt-cache.cc:1485 cmdline/apt-cache.cc:1576 msgid "Cache is out of sync, can't x-ref a package file" msgstr "" #. Show any packages have explicit pins -#: cmdline/apt-cache.cc:1554 +#: cmdline/apt-cache.cc:1499 msgid "Pinned packages:" msgstr "" -#: cmdline/apt-cache.cc:1566 cmdline/apt-cache.cc:1618 +#: cmdline/apt-cache.cc:1511 cmdline/apt-cache.cc:1556 msgid "(not found)" msgstr "" -#: cmdline/apt-cache.cc:1575 +#: cmdline/apt-cache.cc:1519 msgid " Installed: " msgstr "" -#: cmdline/apt-cache.cc:1576 +#: cmdline/apt-cache.cc:1520 msgid " Candidate: " msgstr "" -#: cmdline/apt-cache.cc:1600 cmdline/apt-cache.cc:1608 +#: cmdline/apt-cache.cc:1538 cmdline/apt-cache.cc:1546 msgid "(none)" msgstr "" -#: cmdline/apt-cache.cc:1615 +#: cmdline/apt-cache.cc:1553 msgid " Package pin: " msgstr "" #. Show the priority tables -#: cmdline/apt-cache.cc:1624 +#: cmdline/apt-cache.cc:1562 msgid " Version table:" msgstr "" -#: cmdline/apt-cache.cc:1738 cmdline/apt-cdrom.cc:197 cmdline/apt-config.cc:70 +#: cmdline/apt-cache.cc:1675 cmdline/apt-cdrom.cc:197 cmdline/apt-config.cc:73 #: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:589 -#: cmdline/apt-get.cc:2793 cmdline/apt-sortpkgs.cc:144 +#: cmdline/apt-get.cc:3122 cmdline/apt-mark.cc:264 cmdline/apt-sortpkgs.cc:144 #, c-format msgid "%s %s for %s compiled on %s %s\n" msgstr "" -#: cmdline/apt-cache.cc:1745 +#: cmdline/apt-cache.cc:1682 msgid "" "Usage: apt-cache [options] command\n" -" apt-cache [options] add file1 [file2 ...]\n" " apt-cache [options] showpkg pkg1 [pkg2 ...]\n" " apt-cache [options] showsrc pkg1 [pkg2 ...]\n" "\n" -"apt-cache is a low-level tool used to manipulate APT's binary\n" -"cache files, and query information from them\n" +"apt-cache is a low-level tool used to query information\n" +"from APT's binary cache files\n" "\n" "Commands:\n" -" add - Add a package file to the source cache\n" " gencaches - Build both the package and source cache\n" " showpkg - Show some general information for a single package\n" " showsrc - Show source records\n" @@ -175,7 +178,6 @@ msgid "" " unmet - Show unmet dependencies\n" " search - Search the package list for a regex pattern\n" " show - Show a readable record for the package\n" -" showauto - Display a list of automatically installed packages\n" " depends - Show raw dependency information for a package\n" " rdepends - Show reverse dependency information for a package\n" " pkgnames - List the names of all packages in the system\n" @@ -211,11 +213,11 @@ msgstr "" msgid "Repeat this process for the rest of the CDs in your set." msgstr "" -#: cmdline/apt-config.cc:41 +#: cmdline/apt-config.cc:44 msgid "Arguments not in pairs" msgstr "" -#: cmdline/apt-config.cc:76 +#: cmdline/apt-config.cc:79 msgid "" "Usage: apt-config [options] command\n" "\n" @@ -250,7 +252,7 @@ msgid "" " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n" msgstr "" -#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:1171 +#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:1149 #, c-format msgid "Unable to write to %s" msgstr "" @@ -369,97 +371,92 @@ msgstr "" msgid "Unable to get a cursor" msgstr "" -#: ftparchive/writer.cc:73 +#: ftparchive/writer.cc:78 #, c-format msgid "W: Unable to read directory %s\n" msgstr "" -#: ftparchive/writer.cc:78 +#: ftparchive/writer.cc:83 #, c-format msgid "W: Unable to stat %s\n" msgstr "" -#: ftparchive/writer.cc:134 +#: ftparchive/writer.cc:139 msgid "E: " msgstr "" -#: ftparchive/writer.cc:136 +#: ftparchive/writer.cc:141 msgid "W: " msgstr "" -#: ftparchive/writer.cc:143 +#: ftparchive/writer.cc:148 msgid "E: Errors apply to file " msgstr "" -#: ftparchive/writer.cc:161 ftparchive/writer.cc:193 +#: ftparchive/writer.cc:166 ftparchive/writer.cc:198 #, c-format msgid "Failed to resolve %s" msgstr "" -#: ftparchive/writer.cc:174 +#: ftparchive/writer.cc:179 msgid "Tree walking failed" msgstr "" -#: ftparchive/writer.cc:201 +#: ftparchive/writer.cc:206 #, c-format msgid "Failed to open %s" msgstr "" -#: ftparchive/writer.cc:260 +#: ftparchive/writer.cc:265 #, c-format msgid " DeLink %s [%s]\n" msgstr "" -#: ftparchive/writer.cc:268 +#: ftparchive/writer.cc:273 #, c-format msgid "Failed to readlink %s" msgstr "" -#: ftparchive/writer.cc:272 +#: ftparchive/writer.cc:277 #, c-format msgid "Failed to unlink %s" msgstr "" -#: ftparchive/writer.cc:279 +#: ftparchive/writer.cc:284 #, c-format msgid "*** Failed to link %s to %s" msgstr "" -#: ftparchive/writer.cc:289 +#: ftparchive/writer.cc:294 #, c-format msgid " DeLink limit of %sB hit.\n" msgstr "" -#: ftparchive/writer.cc:393 +#: ftparchive/writer.cc:398 msgid "Archive had no package field" msgstr "" -#: ftparchive/writer.cc:401 ftparchive/writer.cc:688 +#: ftparchive/writer.cc:406 ftparchive/writer.cc:703 #, c-format msgid " %s has no override entry\n" msgstr "" -#: ftparchive/writer.cc:464 ftparchive/writer.cc:793 +#: ftparchive/writer.cc:472 ftparchive/writer.cc:811 #, c-format msgid " %s maintainer is %s not %s\n" msgstr "" -#: ftparchive/writer.cc:698 +#: ftparchive/writer.cc:713 #, c-format msgid " %s has no source override entry\n" msgstr "" -#: ftparchive/writer.cc:702 +#: ftparchive/writer.cc:717 #, c-format msgid " %s has no binary override entry either\n" msgstr "" -#: ftparchive/contents.cc:321 -#, c-format -msgid "Internal error, could not locate member %s" -msgstr "" - -#: ftparchive/contents.cc:358 ftparchive/contents.cc:389 +#: ftparchive/contents.cc:337 ftparchive/contents.cc:368 msgid "realloc - Failed to allocate memory" msgstr "" @@ -488,63 +485,63 @@ msgstr "" msgid "Failed to read the override file %s" msgstr "" -#: ftparchive/multicompress.cc:72 +#: ftparchive/multicompress.cc:67 #, c-format msgid "Unknown compression algorithm '%s'" msgstr "" -#: ftparchive/multicompress.cc:102 +#: ftparchive/multicompress.cc:97 #, c-format msgid "Compressed output %s needs a compression set" msgstr "" -#: ftparchive/multicompress.cc:169 methods/rsh.cc:91 +#: ftparchive/multicompress.cc:165 methods/rsh.cc:91 msgid "Failed to create IPC pipe to subprocess" msgstr "" -#: ftparchive/multicompress.cc:195 +#: ftparchive/multicompress.cc:191 msgid "Failed to create FILE*" msgstr "" -#: ftparchive/multicompress.cc:198 +#: ftparchive/multicompress.cc:194 msgid "Failed to fork" msgstr "" -#: ftparchive/multicompress.cc:212 +#: ftparchive/multicompress.cc:208 msgid "Compress child" msgstr "" -#: ftparchive/multicompress.cc:235 +#: ftparchive/multicompress.cc:231 #, c-format msgid "Internal error, failed to create %s" msgstr "" -#: ftparchive/multicompress.cc:286 +#: ftparchive/multicompress.cc:282 msgid "Failed to create subprocess IPC" msgstr "" -#: ftparchive/multicompress.cc:321 +#: ftparchive/multicompress.cc:319 msgid "Failed to exec compressor " msgstr "" -#: ftparchive/multicompress.cc:360 +#: ftparchive/multicompress.cc:358 msgid "decompressor" msgstr "" -#: ftparchive/multicompress.cc:403 +#: ftparchive/multicompress.cc:401 msgid "IO to subprocess/file failed" msgstr "" -#: ftparchive/multicompress.cc:455 +#: ftparchive/multicompress.cc:453 msgid "Failed to read while computing MD5" msgstr "" -#: ftparchive/multicompress.cc:472 +#: ftparchive/multicompress.cc:470 #, c-format msgid "Problem unlinking %s" msgstr "" -#: ftparchive/multicompress.cc:487 apt-inst/extract.cc:185 +#: ftparchive/multicompress.cc:485 apt-inst/extract.cc:185 #, c-format msgid "Failed to rename %s to %s" msgstr "" @@ -592,94 +589,94 @@ msgstr "" msgid " or" msgstr "" -#: cmdline/apt-get.cc:392 +#: cmdline/apt-get.cc:390 msgid "The following NEW packages will be installed:" msgstr "" -#: cmdline/apt-get.cc:420 +#: cmdline/apt-get.cc:416 msgid "The following packages will be REMOVED:" msgstr "" -#: cmdline/apt-get.cc:442 +#: cmdline/apt-get.cc:438 msgid "The following packages have been kept back:" msgstr "" -#: cmdline/apt-get.cc:465 +#: cmdline/apt-get.cc:459 msgid "The following packages will be upgraded:" msgstr "" -#: cmdline/apt-get.cc:488 +#: cmdline/apt-get.cc:480 msgid "The following packages will be DOWNGRADED:" msgstr "" -#: cmdline/apt-get.cc:508 +#: cmdline/apt-get.cc:500 msgid "The following held packages will be changed:" msgstr "" -#: cmdline/apt-get.cc:563 +#: cmdline/apt-get.cc:555 #, c-format msgid "%s (due to %s) " msgstr "" -#: cmdline/apt-get.cc:571 +#: cmdline/apt-get.cc:563 msgid "" "WARNING: The following essential packages will be removed.\n" "This should NOT be done unless you know exactly what you are doing!" msgstr "" -#: cmdline/apt-get.cc:605 +#: cmdline/apt-get.cc:594 #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "" -#: cmdline/apt-get.cc:609 +#: cmdline/apt-get.cc:598 #, c-format msgid "%lu reinstalled, " msgstr "" -#: cmdline/apt-get.cc:611 +#: cmdline/apt-get.cc:600 #, c-format msgid "%lu downgraded, " msgstr "" -#: cmdline/apt-get.cc:613 +#: cmdline/apt-get.cc:602 #, c-format msgid "%lu to remove and %lu not upgraded.\n" msgstr "" -#: cmdline/apt-get.cc:617 +#: cmdline/apt-get.cc:606 #, c-format msgid "%lu not fully installed or removed.\n" msgstr "" -#: cmdline/apt-get.cc:639 +#: cmdline/apt-get.cc:628 #, c-format msgid "Note, selecting '%s' for task '%s'\n" msgstr "" -#: cmdline/apt-get.cc:645 +#: cmdline/apt-get.cc:634 #, c-format msgid "Note, selecting '%s' for regex '%s'\n" msgstr "" -#: cmdline/apt-get.cc:662 +#: cmdline/apt-get.cc:651 #, c-format msgid "Package %s is a virtual package provided by:\n" msgstr "" -#: cmdline/apt-get.cc:673 +#: cmdline/apt-get.cc:662 msgid " [Installed]" msgstr "" -#: cmdline/apt-get.cc:682 +#: cmdline/apt-get.cc:671 msgid " [Not candidate version]" msgstr "" -#: cmdline/apt-get.cc:684 +#: cmdline/apt-get.cc:673 msgid "You should explicitly select one to install." msgstr "" -#: cmdline/apt-get.cc:687 +#: cmdline/apt-get.cc:676 #, c-format msgid "" "Package %s is not available, but is referred to by another package.\n" @@ -687,177 +684,177 @@ msgid "" "is only available from another source\n" msgstr "" -#: cmdline/apt-get.cc:705 +#: cmdline/apt-get.cc:694 msgid "However the following packages replace it:" msgstr "" -#: cmdline/apt-get.cc:717 +#: cmdline/apt-get.cc:706 #, c-format msgid "Package '%s' has no installation candidate" msgstr "" -#: cmdline/apt-get.cc:728 +#: cmdline/apt-get.cc:717 #, c-format msgid "Virtual packages like '%s' can't be removed\n" msgstr "" -#: cmdline/apt-get.cc:759 +#: cmdline/apt-get.cc:748 #, c-format msgid "Note, selecting '%s' instead of '%s'\n" msgstr "" -#: cmdline/apt-get.cc:789 +#: cmdline/apt-get.cc:778 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" msgstr "" -#: cmdline/apt-get.cc:793 +#: cmdline/apt-get.cc:782 #, c-format msgid "Skipping %s, it is not installed and only upgrades are requested.\n" msgstr "" -#: cmdline/apt-get.cc:803 +#: cmdline/apt-get.cc:794 #, c-format msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n" msgstr "" -#: cmdline/apt-get.cc:808 +#: cmdline/apt-get.cc:799 #, c-format msgid "%s is already the newest version.\n" msgstr "" -#: cmdline/apt-get.cc:827 cmdline/apt-get.cc:2027 +#: cmdline/apt-get.cc:818 cmdline/apt-get.cc:2080 cmdline/apt-mark.cc:59 #, c-format msgid "%s set to manually installed.\n" msgstr "" -#: cmdline/apt-get.cc:853 +#: cmdline/apt-get.cc:844 #, c-format msgid "Selected version '%s' (%s) for '%s'\n" msgstr "" -#: cmdline/apt-get.cc:858 +#: cmdline/apt-get.cc:849 #, c-format msgid "Selected version '%s' (%s) for '%s' because of '%s'\n" msgstr "" -#: cmdline/apt-get.cc:898 +#: cmdline/apt-get.cc:893 #, c-format msgid "Package %s is not installed, so not removed\n" msgstr "" -#: cmdline/apt-get.cc:973 +#: cmdline/apt-get.cc:971 msgid "Correcting dependencies..." msgstr "" -#: cmdline/apt-get.cc:976 +#: cmdline/apt-get.cc:974 msgid " failed." msgstr "" -#: cmdline/apt-get.cc:979 +#: cmdline/apt-get.cc:977 msgid "Unable to correct dependencies" msgstr "" -#: cmdline/apt-get.cc:982 +#: cmdline/apt-get.cc:980 msgid "Unable to minimize the upgrade set" msgstr "" -#: cmdline/apt-get.cc:984 +#: cmdline/apt-get.cc:982 msgid " Done" msgstr "" -#: cmdline/apt-get.cc:988 +#: cmdline/apt-get.cc:986 msgid "You might want to run 'apt-get -f install' to correct these." msgstr "" -#: cmdline/apt-get.cc:991 +#: cmdline/apt-get.cc:989 msgid "Unmet dependencies. Try using -f." msgstr "" -#: cmdline/apt-get.cc:1016 +#: cmdline/apt-get.cc:1014 msgid "WARNING: The following packages cannot be authenticated!" msgstr "" -#: cmdline/apt-get.cc:1020 +#: cmdline/apt-get.cc:1018 msgid "Authentication warning overridden.\n" msgstr "" -#: cmdline/apt-get.cc:1027 +#: cmdline/apt-get.cc:1025 msgid "Install these packages without verification [y/N]? " msgstr "" -#: cmdline/apt-get.cc:1029 +#: cmdline/apt-get.cc:1027 msgid "Some packages could not be authenticated" msgstr "" -#: cmdline/apt-get.cc:1038 cmdline/apt-get.cc:1199 +#: cmdline/apt-get.cc:1036 cmdline/apt-get.cc:1197 msgid "There are problems and -y was used without --force-yes" msgstr "" -#: cmdline/apt-get.cc:1079 +#: cmdline/apt-get.cc:1077 msgid "Internal error, InstallPackages was called with broken packages!" msgstr "" -#: cmdline/apt-get.cc:1088 +#: cmdline/apt-get.cc:1086 msgid "Packages need to be removed but remove is disabled." msgstr "" -#: cmdline/apt-get.cc:1099 +#: cmdline/apt-get.cc:1097 msgid "Internal error, Ordering didn't finish" msgstr "" -#: cmdline/apt-get.cc:1137 +#: cmdline/apt-get.cc:1135 msgid "How odd.. The sizes didn't match, email apt@packages.debian.org" msgstr "" #. TRANSLATOR: The required space between number and unit is already included #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB -#: cmdline/apt-get.cc:1144 +#: cmdline/apt-get.cc:1142 #, c-format msgid "Need to get %sB/%sB of archives.\n" msgstr "" #. TRANSLATOR: The required space between number and unit is already included #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -#: cmdline/apt-get.cc:1149 +#: cmdline/apt-get.cc:1147 #, c-format msgid "Need to get %sB of archives.\n" msgstr "" #. TRANSLATOR: The required space between number and unit is already included #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -#: cmdline/apt-get.cc:1156 +#: cmdline/apt-get.cc:1154 #, c-format msgid "After this operation, %sB of additional disk space will be used.\n" msgstr "" #. TRANSLATOR: The required space between number and unit is already included #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -#: cmdline/apt-get.cc:1161 +#: cmdline/apt-get.cc:1159 #, c-format msgid "After this operation, %sB disk space will be freed.\n" msgstr "" -#: cmdline/apt-get.cc:1176 cmdline/apt-get.cc:1179 cmdline/apt-get.cc:2367 -#: cmdline/apt-get.cc:2370 +#: cmdline/apt-get.cc:1174 cmdline/apt-get.cc:1177 cmdline/apt-get.cc:2492 +#: cmdline/apt-get.cc:2495 #, c-format msgid "Couldn't determine free space in %s" msgstr "" -#: cmdline/apt-get.cc:1189 +#: cmdline/apt-get.cc:1187 #, c-format msgid "You don't have enough free space in %s." msgstr "" -#: cmdline/apt-get.cc:1205 cmdline/apt-get.cc:1225 +#: cmdline/apt-get.cc:1203 cmdline/apt-get.cc:1223 msgid "Trivial Only specified but this is not a trivial operation." msgstr "" -#: cmdline/apt-get.cc:1207 +#: cmdline/apt-get.cc:1205 msgid "Yes, do as I say!" msgstr "" -#: cmdline/apt-get.cc:1209 +#: cmdline/apt-get.cc:1207 #, c-format msgid "" "You are about to do something potentially harmful.\n" @@ -865,46 +862,46 @@ msgid "" " ?] " msgstr "" -#: cmdline/apt-get.cc:1215 cmdline/apt-get.cc:1234 +#: cmdline/apt-get.cc:1213 cmdline/apt-get.cc:1232 msgid "Abort." msgstr "" -#: cmdline/apt-get.cc:1230 +#: cmdline/apt-get.cc:1228 msgid "Do you want to continue [Y/n]? " msgstr "" -#: cmdline/apt-get.cc:1302 cmdline/apt-get.cc:2427 apt-pkg/algorithms.cc:1470 +#: cmdline/apt-get.cc:1300 cmdline/apt-get.cc:2557 apt-pkg/algorithms.cc:1429 #, c-format msgid "Failed to fetch %s %s\n" msgstr "" -#: cmdline/apt-get.cc:1320 +#: cmdline/apt-get.cc:1318 msgid "Some files failed to download" msgstr "" -#: cmdline/apt-get.cc:1321 cmdline/apt-get.cc:2436 +#: cmdline/apt-get.cc:1319 cmdline/apt-get.cc:2569 msgid "Download complete and in download only mode" msgstr "" -#: cmdline/apt-get.cc:1327 +#: cmdline/apt-get.cc:1325 msgid "" "Unable to fetch some archives, maybe run apt-get update or try with --fix-" "missing?" msgstr "" -#: cmdline/apt-get.cc:1331 +#: cmdline/apt-get.cc:1329 msgid "--fix-missing and media swapping is not currently supported" msgstr "" -#: cmdline/apt-get.cc:1336 +#: cmdline/apt-get.cc:1334 msgid "Unable to correct missing packages." msgstr "" -#: cmdline/apt-get.cc:1337 +#: cmdline/apt-get.cc:1335 msgid "Aborting install." msgstr "" -#: cmdline/apt-get.cc:1365 +#: cmdline/apt-get.cc:1363 msgid "" "The following package disappeared from your system as\n" "all files have been overwritten by other packages:" @@ -914,35 +911,35 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: cmdline/apt-get.cc:1369 +#: cmdline/apt-get.cc:1367 msgid "Note: This is done automatic and on purpose by dpkg." msgstr "" -#: cmdline/apt-get.cc:1499 +#: cmdline/apt-get.cc:1497 #, c-format msgid "Ignore unavailable target release '%s' of package '%s'" msgstr "" -#: cmdline/apt-get.cc:1531 +#: cmdline/apt-get.cc:1529 #, c-format msgid "Picking '%s' as source package instead of '%s'\n" msgstr "" #. if (VerTag.empty() == false && Last == 0) -#: cmdline/apt-get.cc:1569 +#: cmdline/apt-get.cc:1567 #, c-format msgid "Ignore unavailable version '%s' of package '%s'" msgstr "" -#: cmdline/apt-get.cc:1585 +#: cmdline/apt-get.cc:1583 msgid "The update command takes no arguments" msgstr "" -#: cmdline/apt-get.cc:1647 +#: cmdline/apt-get.cc:1645 msgid "We are not supposed to delete stuff, can't start AutoRemover" msgstr "" -#: cmdline/apt-get.cc:1699 +#: cmdline/apt-get.cc:1740 msgid "" "Hmm, seems like the AutoRemover destroyed something which really\n" "shouldn't happen. Please file a bug report against apt." @@ -958,15 +955,15 @@ msgstr "" #. "that package should be filed.") << endl; #. } #. -#: cmdline/apt-get.cc:1702 cmdline/apt-get.cc:1858 +#: cmdline/apt-get.cc:1743 cmdline/apt-get.cc:1913 msgid "The following information may help to resolve the situation:" msgstr "" -#: cmdline/apt-get.cc:1706 +#: cmdline/apt-get.cc:1747 msgid "Internal Error, AutoRemover broke stuff" msgstr "" -#: cmdline/apt-get.cc:1713 +#: cmdline/apt-get.cc:1754 msgid "" "The following package was automatically installed and is no longer required:" msgid_plural "" @@ -975,7 +972,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: cmdline/apt-get.cc:1717 +#: cmdline/apt-get.cc:1758 #, c-format msgid "%lu package was automatically installed and is no longer required.\n" msgid_plural "" @@ -983,25 +980,25 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: cmdline/apt-get.cc:1719 +#: cmdline/apt-get.cc:1760 msgid "Use 'apt-get autoremove' to remove them." msgstr "" -#: cmdline/apt-get.cc:1738 +#: cmdline/apt-get.cc:1779 msgid "Internal error, AllUpgrade broke stuff" msgstr "" -#: cmdline/apt-get.cc:1828 +#: cmdline/apt-get.cc:1878 msgid "You might want to run 'apt-get -f install' to correct these:" msgstr "" -#: cmdline/apt-get.cc:1831 +#: cmdline/apt-get.cc:1882 msgid "" "Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a " "solution)." msgstr "" -#: cmdline/apt-get.cc:1843 +#: cmdline/apt-get.cc:1898 msgid "" "Some packages could not be installed. This may mean that you have\n" "requested an impossible situation or if you are using the unstable\n" @@ -1009,69 +1006,80 @@ msgid "" "or been moved out of Incoming." msgstr "" -#: cmdline/apt-get.cc:1861 +#: cmdline/apt-get.cc:1916 msgid "Broken packages" msgstr "" -#: cmdline/apt-get.cc:1889 +#: cmdline/apt-get.cc:1942 msgid "The following extra packages will be installed:" msgstr "" -#: cmdline/apt-get.cc:1979 +#: cmdline/apt-get.cc:2032 msgid "Suggested packages:" msgstr "" -#: cmdline/apt-get.cc:1980 +#: cmdline/apt-get.cc:2033 msgid "Recommended packages:" msgstr "" -#: cmdline/apt-get.cc:2022 +#: cmdline/apt-get.cc:2075 #, c-format msgid "Couldn't find package %s" msgstr "" -#: cmdline/apt-get.cc:2029 +#: cmdline/apt-get.cc:2082 cmdline/apt-mark.cc:61 #, c-format msgid "%s set to automatically installed.\n" msgstr "" -#: cmdline/apt-get.cc:2050 +#: cmdline/apt-get.cc:2090 cmdline/apt-mark.cc:105 +msgid "" +"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' " +"instead." +msgstr "" + +#: cmdline/apt-get.cc:2106 msgid "Calculating upgrade... " msgstr "" -#: cmdline/apt-get.cc:2053 methods/ftp.cc:707 methods/connect.cc:111 +#: cmdline/apt-get.cc:2109 methods/ftp.cc:707 methods/connect.cc:111 msgid "Failed" msgstr "" -#: cmdline/apt-get.cc:2058 +#: cmdline/apt-get.cc:2114 msgid "Done" msgstr "" -#: cmdline/apt-get.cc:2125 cmdline/apt-get.cc:2133 +#: cmdline/apt-get.cc:2181 cmdline/apt-get.cc:2189 msgid "Internal error, problem resolver broke stuff" msgstr "" -#: cmdline/apt-get.cc:2157 cmdline/apt-get.cc:2190 +#: cmdline/apt-get.cc:2213 cmdline/apt-get.cc:2246 msgid "Unable to lock the download directory" msgstr "" -#: cmdline/apt-get.cc:2233 +#: cmdline/apt-get.cc:2297 +#, c-format +msgid "Downloading %s %s" +msgstr "" + +#: cmdline/apt-get.cc:2353 msgid "Must specify at least one package to fetch source for" msgstr "" -#: cmdline/apt-get.cc:2273 cmdline/apt-get.cc:2554 +#: cmdline/apt-get.cc:2394 cmdline/apt-get.cc:2690 #, c-format msgid "Unable to find a source package for %s" msgstr "" -#: cmdline/apt-get.cc:2289 +#: cmdline/apt-get.cc:2411 #, c-format msgid "" "NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n" "%s\n" msgstr "" -#: cmdline/apt-get.cc:2294 +#: cmdline/apt-get.cc:2416 #, c-format msgid "" "Please use:\n" @@ -1079,115 +1087,120 @@ msgid "" "to retrieve the latest (possibly unreleased) updates to the package.\n" msgstr "" -#: cmdline/apt-get.cc:2345 +#: cmdline/apt-get.cc:2469 #, c-format msgid "Skipping already downloaded file '%s'\n" msgstr "" -#: cmdline/apt-get.cc:2380 +#: cmdline/apt-get.cc:2506 #, c-format msgid "You don't have enough free space in %s" msgstr "" #. TRANSLATOR: The required space between number and unit is already included #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB -#: cmdline/apt-get.cc:2388 +#: cmdline/apt-get.cc:2515 #, c-format msgid "Need to get %sB/%sB of source archives.\n" msgstr "" #. TRANSLATOR: The required space between number and unit is already included #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -#: cmdline/apt-get.cc:2393 +#: cmdline/apt-get.cc:2520 #, c-format msgid "Need to get %sB of source archives.\n" msgstr "" -#: cmdline/apt-get.cc:2399 +#: cmdline/apt-get.cc:2526 #, c-format msgid "Fetch source %s\n" msgstr "" -#: cmdline/apt-get.cc:2432 +#: cmdline/apt-get.cc:2564 msgid "Failed to fetch some archives." msgstr "" -#: cmdline/apt-get.cc:2462 +#: cmdline/apt-get.cc:2595 #, c-format msgid "Skipping unpack of already unpacked source in %s\n" msgstr "" -#: cmdline/apt-get.cc:2474 +#: cmdline/apt-get.cc:2607 #, c-format msgid "Unpack command '%s' failed.\n" msgstr "" -#: cmdline/apt-get.cc:2475 +#: cmdline/apt-get.cc:2608 #, c-format msgid "Check if the 'dpkg-dev' package is installed.\n" msgstr "" -#: cmdline/apt-get.cc:2492 +#: cmdline/apt-get.cc:2625 #, c-format msgid "Build command '%s' failed.\n" msgstr "" -#: cmdline/apt-get.cc:2512 +#: cmdline/apt-get.cc:2645 msgid "Child process failed" msgstr "" -#: cmdline/apt-get.cc:2528 +#: cmdline/apt-get.cc:2664 msgid "Must specify at least one package to check builddeps for" msgstr "" -#: cmdline/apt-get.cc:2559 +#: cmdline/apt-get.cc:2695 #, c-format msgid "Unable to get build-dependency information for %s" msgstr "" -#: cmdline/apt-get.cc:2579 +#: cmdline/apt-get.cc:2715 #, c-format msgid "%s has no build depends.\n" msgstr "" -#: cmdline/apt-get.cc:2630 +#: cmdline/apt-get.cc:2766 #, c-format msgid "" "%s dependency for %s cannot be satisfied because the package %s cannot be " "found" msgstr "" -#: cmdline/apt-get.cc:2683 +#: cmdline/apt-get.cc:2819 #, c-format msgid "" "%s dependency for %s cannot be satisfied because no available versions of " "package %s can satisfy version requirements" msgstr "" -#: cmdline/apt-get.cc:2719 +#: cmdline/apt-get.cc:2855 #, c-format msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new" msgstr "" -#: cmdline/apt-get.cc:2746 +#: cmdline/apt-get.cc:2882 #, c-format msgid "Failed to satisfy %s dependency for %s: %s" msgstr "" -#: cmdline/apt-get.cc:2762 +#: cmdline/apt-get.cc:2898 #, c-format msgid "Build-dependencies for %s could not be satisfied." msgstr "" -#: cmdline/apt-get.cc:2767 +#: cmdline/apt-get.cc:2903 msgid "Failed to process build dependencies" msgstr "" -#: cmdline/apt-get.cc:2798 +#: cmdline/apt-get.cc:2996 cmdline/apt-get.cc:3008 +#, c-format +msgid "Changelog for %s (%s)" +msgstr "" + +#: cmdline/apt-get.cc:3127 msgid "Supported modules:" msgstr "" -#: cmdline/apt-get.cc:2839 +#: cmdline/apt-get.cc:3168 msgid "" "Usage: apt-get [options] command\n" " apt-get [options] install|remove pkg1 [pkg2 ...]\n" @@ -1211,8 +1224,8 @@ msgid "" " clean - Erase downloaded archive files\n" " autoclean - Erase old downloaded archive files\n" " check - Verify that there are no broken dependencies\n" -" markauto - Mark the given packages as automatically installed\n" -" unmarkauto - Mark the given packages as manually installed\n" +" changelog - Download and display the changelog for the given package\n" +" download - Download the binary package into the current directory\n" "\n" "Options:\n" " -h This help text.\n" @@ -1233,7 +1246,7 @@ msgid "" " This APT has Super Cow Powers.\n" msgstr "" -#: cmdline/apt-get.cc:2995 +#: cmdline/apt-get.cc:3330 msgid "" "NOTE: This is only a simulation!\n" " apt-get needs root privileges for real execution.\n" @@ -1275,6 +1288,67 @@ msgid "" "in the drive '%s' and press enter\n" msgstr "" +#: cmdline/apt-mark.cc:46 +#, c-format +msgid "%s can not be marked as it is not installed.\n" +msgstr "" + +#: cmdline/apt-mark.cc:52 +#, c-format +msgid "%s was already set to manually installed.\n" +msgstr "" + +#: cmdline/apt-mark.cc:54 +#, c-format +msgid "%s was already set to automatically installed.\n" +msgstr "" + +#: cmdline/apt-mark.cc:169 +#, c-format +msgid "%s was already set on hold.\n" +msgstr "" + +#: cmdline/apt-mark.cc:171 +#, c-format +msgid "%s was already not hold.\n" +msgstr "" + +#: cmdline/apt-mark.cc:185 cmdline/apt-mark.cc:207 +#, c-format +msgid "%s set on hold.\n" +msgstr "" + +#: cmdline/apt-mark.cc:187 cmdline/apt-mark.cc:212 +#, c-format +msgid "Canceled hold on %s.\n" +msgstr "" + +#: cmdline/apt-mark.cc:220 +msgid "Executing dpkg failed. Are you root?" +msgstr "" + +#: cmdline/apt-mark.cc:268 +msgid "" +"Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n" +"\n" +"apt-mark is a simple command line interface for marking packages\n" +"as manual or automatical installed. It can also list marks.\n" +"\n" +"Commands:\n" +" auto - Mark the given packages as automatically installed\n" +" manual - Mark the given packages as manually installed\n" +"\n" +"Options:\n" +" -h This help text.\n" +" -q Loggable output - no progress indicator\n" +" -qq No output except for errors\n" +" -s No-act. Just prints what would be done.\n" +" -f read/write auto/manual marking in the given file\n" +" -c=? Read this configuration file\n" +" -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n" +"See the apt-mark(8) and apt.conf(5) manual pages for more information." +msgstr "" + #: cmdline/apt-sortpkgs.cc:86 msgid "Unknown package record!" msgstr "" @@ -1335,7 +1409,7 @@ msgstr "" msgid "Failed to exec gzip " msgstr "" -#: apt-inst/contrib/extracttar.cc:178 apt-inst/contrib/extracttar.cc:204 +#: apt-inst/contrib/extracttar.cc:178 apt-inst/contrib/extracttar.cc:208 msgid "Corrupted archive" msgstr "" @@ -1343,7 +1417,7 @@ msgstr "" msgid "Tar checksum failed, archive corrupted" msgstr "" -#: apt-inst/contrib/extracttar.cc:296 +#: apt-inst/contrib/extracttar.cc:300 #, c-format msgid "Unknown TAR header type %u, member %s" msgstr "" @@ -1404,12 +1478,12 @@ msgstr "" msgid "Duplicate conf file %s/%s" msgstr "" -#: apt-inst/dirstream.cc:41 apt-inst/dirstream.cc:46 apt-inst/dirstream.cc:49 +#: apt-inst/dirstream.cc:41 apt-inst/dirstream.cc:47 apt-inst/dirstream.cc:53 #, c-format msgid "Failed to write file %s" msgstr "" -#: apt-inst/dirstream.cc:92 apt-inst/dirstream.cc:100 +#: apt-inst/dirstream.cc:98 apt-inst/dirstream.cc:106 #, c-format msgid "Failed to close file %s" msgstr "" @@ -1451,28 +1525,28 @@ msgstr "" msgid "The path is too long" msgstr "" -#: apt-inst/extract.cc:414 +#: apt-inst/extract.cc:412 #, c-format msgid "Overwrite package match with no version for %s" msgstr "" -#: apt-inst/extract.cc:431 +#: apt-inst/extract.cc:429 #, c-format msgid "File %s/%s overwrites the one in the package %s" msgstr "" #. Only warn if there are no sources.list.d. #. Only warn if there is no sources.list file. -#: apt-inst/extract.cc:464 apt-pkg/contrib/cdromutl.cc:179 -#: apt-pkg/contrib/fileutl.cc:329 apt-pkg/sourcelist.cc:204 +#: apt-inst/extract.cc:462 apt-pkg/contrib/cdromutl.cc:179 +#: apt-pkg/contrib/fileutl.cc:343 apt-pkg/sourcelist.cc:204 #: apt-pkg/sourcelist.cc:210 apt-pkg/acquire.cc:450 apt-pkg/init.cc:100 -#: apt-pkg/init.cc:108 apt-pkg/clean.cc:33 apt-pkg/policy.cc:307 -#: methods/mirror.cc:87 +#: apt-pkg/init.cc:108 apt-pkg/clean.cc:33 apt-pkg/policy.cc:314 +#: methods/mirror.cc:91 #, c-format msgid "Unable to read %s" msgstr "" -#: apt-inst/extract.cc:491 +#: apt-inst/extract.cc:489 #, c-format msgid "Unable to stat %s" msgstr "" @@ -1496,9 +1570,9 @@ msgstr "" msgid "The info and temp directories need to be on the same filesystem" msgstr "" -#: apt-inst/deb/dpkgdb.cc:135 apt-pkg/pkgcachegen.cc:1070 -#: apt-pkg/pkgcachegen.cc:1174 apt-pkg/pkgcachegen.cc:1180 -#: apt-pkg/pkgcachegen.cc:1326 +#: apt-inst/deb/dpkgdb.cc:135 apt-pkg/pkgcachegen.cc:1048 +#: apt-pkg/pkgcachegen.cc:1152 apt-pkg/pkgcachegen.cc:1158 +#: apt-pkg/pkgcachegen.cc:1304 msgid "Reading package lists" msgstr "" @@ -1571,51 +1645,57 @@ msgstr "" msgid "Error parsing MD5. Offset %lu" msgstr "" -#: apt-inst/deb/debfile.cc:38 apt-inst/deb/debfile.cc:43 +#: apt-inst/deb/debfile.cc:39 apt-inst/deb/debfile.cc:44 #, c-format msgid "This is not a valid DEB archive, missing '%s' member" msgstr "" -#: apt-inst/deb/debfile.cc:50 +#. FIXME: add data.tar.xz here - adding it now would require a Translation round for a very small gain +#: apt-inst/deb/debfile.cc:53 #, c-format msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member" msgstr "" -#: apt-inst/deb/debfile.cc:110 +#: apt-inst/deb/debfile.cc:113 #, c-format msgid "Couldn't change to %s" msgstr "" -#: apt-inst/deb/debfile.cc:140 -msgid "Internal error, could not locate member" +#: apt-inst/deb/debfile.cc:154 +#, c-format +msgid "Internal error, could not locate member %s" msgstr "" -#: apt-inst/deb/debfile.cc:173 +#: apt-inst/deb/debfile.cc:189 msgid "Failed to locate a valid control file" msgstr "" -#: apt-inst/deb/debfile.cc:258 +#: apt-inst/deb/debfile.cc:274 msgid "Unparsable control file" msgstr "" -#: methods/bzip2.cc:65 +#: methods/bzip2.cc:60 methods/gzip.cc:52 +msgid "Empty files can't be valid archives" +msgstr "" + +#: methods/bzip2.cc:64 #, c-format msgid "Couldn't open pipe for %s" msgstr "" -#: methods/bzip2.cc:109 +#: methods/bzip2.cc:108 #, c-format msgid "Read error from %s process" msgstr "" -#: methods/bzip2.cc:141 methods/bzip2.cc:150 methods/copy.cc:43 -#: methods/gzip.cc:93 methods/gzip.cc:102 methods/rred.cc:486 -#: methods/rred.cc:495 +#: methods/bzip2.cc:140 methods/bzip2.cc:149 methods/copy.cc:43 +#: methods/gzip.cc:92 methods/gzip.cc:101 methods/rred.cc:524 +#: methods/rred.cc:533 msgid "Failed to stat" msgstr "" -#: methods/bzip2.cc:147 methods/copy.cc:80 methods/gzip.cc:99 -#: methods/rred.cc:492 +#: methods/bzip2.cc:146 methods/copy.cc:80 methods/gzip.cc:98 +#: methods/rred.cc:530 msgid "Failed to set modification time" msgstr "" @@ -1643,7 +1723,7 @@ msgstr "" msgid "Disk not found." msgstr "" -#: methods/cdrom.cc:258 methods/file.cc:79 methods/rsh.cc:264 +#: methods/cdrom.cc:258 methods/file.cc:79 methods/rsh.cc:265 msgid "File not found" msgstr "" @@ -1695,7 +1775,7 @@ msgstr "" msgid "TYPE failed, server said: %s" msgstr "" -#: methods/ftp.cc:335 methods/ftp.cc:446 methods/rsh.cc:183 methods/rsh.cc:226 +#: methods/ftp.cc:335 methods/ftp.cc:446 methods/rsh.cc:184 methods/rsh.cc:227 msgid "Connection timeout" msgstr "" @@ -1703,11 +1783,11 @@ msgstr "" msgid "Server closed the connection" msgstr "" -#: methods/ftp.cc:344 apt-pkg/contrib/fileutl.cc:802 methods/rsh.cc:190 +#: methods/ftp.cc:344 apt-pkg/contrib/fileutl.cc:820 methods/rsh.cc:191 msgid "Read error" msgstr "" -#: methods/ftp.cc:351 methods/rsh.cc:197 +#: methods/ftp.cc:351 methods/rsh.cc:198 msgid "A response overflowed the buffer." msgstr "" @@ -1715,7 +1795,7 @@ msgstr "" msgid "Protocol corruption" msgstr "" -#: methods/ftp.cc:452 apt-pkg/contrib/fileutl.cc:844 methods/rsh.cc:232 +#: methods/ftp.cc:452 apt-pkg/contrib/fileutl.cc:862 methods/rsh.cc:233 msgid "Write error" msgstr "" @@ -1769,7 +1849,7 @@ msgstr "" msgid "Unable to accept connection" msgstr "" -#: methods/ftp.cc:869 methods/http.cc:1006 methods/rsh.cc:302 +#: methods/ftp.cc:869 methods/http.cc:1023 methods/rsh.cc:303 msgid "Problem hashing file" msgstr "" @@ -1778,7 +1858,7 @@ msgstr "" msgid "Unable to fetch file, server said '%s'" msgstr "" -#: methods/ftp.cc:897 methods/rsh.cc:321 +#: methods/ftp.cc:897 methods/rsh.cc:322 msgid "Data socket timed out" msgstr "" @@ -1828,7 +1908,7 @@ msgstr "" #. We say this mainly because the pause here is for the #. ssh connection that is still going -#: methods/connect.cc:149 methods/rsh.cc:424 +#: methods/connect.cc:149 methods/rsh.cc:425 #, c-format msgid "Connecting to %s" msgstr "" @@ -1919,47 +1999,47 @@ msgstr "" msgid "Unknown date format" msgstr "" -#: methods/http.cc:799 +#: methods/http.cc:800 msgid "Select failed" msgstr "" -#: methods/http.cc:804 +#: methods/http.cc:805 msgid "Connection timed out" msgstr "" -#: methods/http.cc:827 +#: methods/http.cc:828 msgid "Error writing to output file" msgstr "" -#: methods/http.cc:858 +#: methods/http.cc:859 msgid "Error writing to file" msgstr "" -#: methods/http.cc:886 +#: methods/http.cc:887 msgid "Error writing to the file" msgstr "" -#: methods/http.cc:900 +#: methods/http.cc:901 msgid "Error reading from server. Remote end closed connection" msgstr "" -#: methods/http.cc:902 +#: methods/http.cc:903 msgid "Error reading from server" msgstr "" -#: methods/http.cc:991 apt-pkg/contrib/mmap.cc:281 +#: methods/http.cc:1008 apt-pkg/contrib/mmap.cc:291 msgid "Failed to truncate file" msgstr "" -#: methods/http.cc:1160 +#: methods/http.cc:1183 msgid "Bad header data" msgstr "" -#: methods/http.cc:1177 methods/http.cc:1232 +#: methods/http.cc:1200 methods/http.cc:1255 msgid "Connection failed" msgstr "" -#: methods/http.cc:1324 +#: methods/http.cc:1347 msgid "Internal error" msgstr "" @@ -1972,7 +2052,7 @@ msgstr "" msgid "Couldn't duplicate file descriptor %i" msgstr "" -#: apt-pkg/contrib/mmap.cc:97 apt-pkg/contrib/mmap.cc:250 +#: apt-pkg/contrib/mmap.cc:97 apt-pkg/contrib/mmap.cc:258 #, c-format msgid "Couldn't make mmap of %lu bytes" msgstr "" @@ -1985,21 +2065,21 @@ msgstr "" msgid "Unable to synchronize mmap" msgstr "" -#: apt-pkg/contrib/mmap.cc:300 +#: apt-pkg/contrib/mmap.cc:310 #, c-format msgid "" "Dynamic MMap ran out of room. Please increase the size of APT::Cache-Limit. " "Current value: %lu. (man 5 apt.conf)" msgstr "" -#: apt-pkg/contrib/mmap.cc:399 +#: apt-pkg/contrib/mmap.cc:409 #, c-format msgid "" "Unable to increase the size of the MMap as the limit of %lu bytes is already " "reached." msgstr "" -#: apt-pkg/contrib/mmap.cc:402 +#: apt-pkg/contrib/mmap.cc:412 msgid "" "Unable to increase size of the MMap as automatic growing is disabled by user." msgstr "" @@ -2028,7 +2108,7 @@ msgstr "" msgid "%lis" msgstr "" -#: apt-pkg/contrib/strutl.cc:1119 +#: apt-pkg/contrib/strutl.cc:1138 #, c-format msgid "Selection %s not found" msgstr "" @@ -2151,106 +2231,122 @@ msgstr "" #: apt-pkg/contrib/cdromutl.cc:175 apt-pkg/contrib/cdromutl.cc:209 #: apt-pkg/acquire.cc:456 apt-pkg/acquire.cc:481 apt-pkg/clean.cc:39 -#: methods/mirror.cc:93 +#: methods/mirror.cc:97 #, c-format msgid "Unable to change to %s" msgstr "" -#: apt-pkg/contrib/cdromutl.cc:217 +#: apt-pkg/contrib/cdromutl.cc:220 msgid "Failed to stat the cdrom" msgstr "" -#: apt-pkg/contrib/fileutl.cc:154 +#: apt-pkg/contrib/fileutl.cc:168 #, c-format msgid "Not using locking for read only lock file %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:159 +#: apt-pkg/contrib/fileutl.cc:173 #, c-format msgid "Could not open lock file %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:177 +#: apt-pkg/contrib/fileutl.cc:191 #, c-format msgid "Not using locking for nfs mounted lock file %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:181 +#: apt-pkg/contrib/fileutl.cc:195 #, c-format msgid "Could not get lock %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:321 +#: apt-pkg/contrib/fileutl.cc:335 #, c-format msgid "List of files can't be created as '%s' is not a directory" msgstr "" -#: apt-pkg/contrib/fileutl.cc:661 +#: apt-pkg/contrib/fileutl.cc:362 +#, c-format +msgid "Ignoring '%s' in directory '%s' as it is not a regular file" +msgstr "" + +#: apt-pkg/contrib/fileutl.cc:380 +#, c-format +msgid "Ignoring file '%s' in directory '%s' as it has no filename extension" +msgstr "" + +#: apt-pkg/contrib/fileutl.cc:389 +#, c-format +msgid "" +"Ignoring file '%s' in directory '%s' as it has an invalid filename extension" +msgstr "" + +#: apt-pkg/contrib/fileutl.cc:679 #, c-format msgid "Waited for %s but it wasn't there" msgstr "" -#: apt-pkg/contrib/fileutl.cc:673 +#: apt-pkg/contrib/fileutl.cc:691 #, c-format msgid "Sub-process %s received a segmentation fault." msgstr "" -#: apt-pkg/contrib/fileutl.cc:675 +#: apt-pkg/contrib/fileutl.cc:693 #, c-format msgid "Sub-process %s received signal %u." msgstr "" -#: apt-pkg/contrib/fileutl.cc:679 +#: apt-pkg/contrib/fileutl.cc:697 #, c-format msgid "Sub-process %s returned an error code (%u)" msgstr "" -#: apt-pkg/contrib/fileutl.cc:681 +#: apt-pkg/contrib/fileutl.cc:699 #, c-format msgid "Sub-process %s exited unexpectedly" msgstr "" -#: apt-pkg/contrib/fileutl.cc:746 +#: apt-pkg/contrib/fileutl.cc:764 #, c-format msgid "Could not open file %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:763 +#: apt-pkg/contrib/fileutl.cc:781 #, c-format msgid "Could not open file descriptor %d" msgstr "" -#: apt-pkg/contrib/fileutl.cc:823 +#: apt-pkg/contrib/fileutl.cc:841 #, c-format msgid "read, still have %lu to read but none left" msgstr "" -#: apt-pkg/contrib/fileutl.cc:856 +#: apt-pkg/contrib/fileutl.cc:874 #, c-format msgid "write, still have %lu to write but couldn't" msgstr "" -#: apt-pkg/contrib/fileutl.cc:985 +#: apt-pkg/contrib/fileutl.cc:1010 #, c-format msgid "Problem closing the gzip file %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:988 +#: apt-pkg/contrib/fileutl.cc:1013 #, c-format msgid "Problem closing the file %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:993 +#: apt-pkg/contrib/fileutl.cc:1018 #, c-format msgid "Problem renaming the file %s to %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:1004 +#: apt-pkg/contrib/fileutl.cc:1029 #, c-format msgid "Problem unlinking the file %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:1017 +#: apt-pkg/contrib/fileutl.cc:1042 msgid "Problem syncing the file" msgstr "" @@ -2275,59 +2371,59 @@ msgstr "" msgid "The package cache was built for a different architecture" msgstr "" -#: apt-pkg/pkgcache.cc:293 +#: apt-pkg/pkgcache.cc:299 msgid "Depends" msgstr "" -#: apt-pkg/pkgcache.cc:293 +#: apt-pkg/pkgcache.cc:299 msgid "PreDepends" msgstr "" -#: apt-pkg/pkgcache.cc:293 +#: apt-pkg/pkgcache.cc:299 msgid "Suggests" msgstr "" -#: apt-pkg/pkgcache.cc:294 +#: apt-pkg/pkgcache.cc:300 msgid "Recommends" msgstr "" -#: apt-pkg/pkgcache.cc:294 +#: apt-pkg/pkgcache.cc:300 msgid "Conflicts" msgstr "" -#: apt-pkg/pkgcache.cc:294 +#: apt-pkg/pkgcache.cc:300 msgid "Replaces" msgstr "" -#: apt-pkg/pkgcache.cc:295 +#: apt-pkg/pkgcache.cc:301 msgid "Obsoletes" msgstr "" -#: apt-pkg/pkgcache.cc:295 +#: apt-pkg/pkgcache.cc:301 msgid "Breaks" msgstr "" -#: apt-pkg/pkgcache.cc:295 +#: apt-pkg/pkgcache.cc:301 msgid "Enhances" msgstr "" -#: apt-pkg/pkgcache.cc:306 +#: apt-pkg/pkgcache.cc:312 msgid "important" msgstr "" -#: apt-pkg/pkgcache.cc:306 +#: apt-pkg/pkgcache.cc:312 msgid "required" msgstr "" -#: apt-pkg/pkgcache.cc:306 +#: apt-pkg/pkgcache.cc:312 msgid "standard" msgstr "" -#: apt-pkg/pkgcache.cc:307 +#: apt-pkg/pkgcache.cc:313 msgid "optional" msgstr "" -#: apt-pkg/pkgcache.cc:307 +#: apt-pkg/pkgcache.cc:313 msgid "extra" msgstr "" @@ -2357,11 +2453,6 @@ msgstr "" msgid "Failed to write temporary StateFile %s" msgstr "" -#: apt-pkg/depcache.cc:922 -#, c-format -msgid "Internal error, group '%s' has no installable pseudo package" -msgstr "" - #: apt-pkg/tagfile.cc:102 #, c-format msgid "Unable to parse package file %s (1)" @@ -2427,7 +2518,7 @@ msgstr "" msgid "Opening %s" msgstr "" -#: apt-pkg/sourcelist.cc:261 apt-pkg/cdrom.cc:438 +#: apt-pkg/sourcelist.cc:261 apt-pkg/cdrom.cc:444 #, c-format msgid "Line %u too long in source list %s." msgstr "" @@ -2442,14 +2533,14 @@ msgstr "" msgid "Type '%s' is not known on line %u in source list %s" msgstr "" -#: apt-pkg/packagemanager.cc:331 apt-pkg/packagemanager.cc:616 +#: apt-pkg/packagemanager.cc:335 apt-pkg/packagemanager.cc:623 #, c-format msgid "" "Could not perform immediate configuration on '%s'. Please see man 5 apt.conf " "under APT::Immediate-Configure for details. (%d)" msgstr "" -#: apt-pkg/packagemanager.cc:452 +#: apt-pkg/packagemanager.cc:456 #, c-format msgid "" "This installation run will require temporarily removing the essential " @@ -2457,7 +2548,7 @@ msgid "" "you really want to do it, activate the APT::Force-LoopBreak option." msgstr "" -#: apt-pkg/packagemanager.cc:495 +#: apt-pkg/packagemanager.cc:501 #, c-format msgid "" "Could not perform immediate configuration on already unpacked '%s'. Please " @@ -2469,25 +2560,25 @@ msgstr "" msgid "Index file type '%s' is not supported" msgstr "" -#: apt-pkg/algorithms.cc:292 +#: apt-pkg/algorithms.cc:247 #, c-format msgid "" "The package %s needs to be reinstalled, but I can't find an archive for it." msgstr "" -#: apt-pkg/algorithms.cc:1218 +#: apt-pkg/algorithms.cc:1158 msgid "" "Error, pkgProblemResolver::Resolve generated breaks, this may be caused by " "held packages." msgstr "" -#: apt-pkg/algorithms.cc:1220 +#: apt-pkg/algorithms.cc:1160 msgid "Unable to correct problems, you have held broken packages." msgstr "" -#: apt-pkg/algorithms.cc:1496 apt-pkg/algorithms.cc:1498 +#: apt-pkg/algorithms.cc:1455 apt-pkg/algorithms.cc:1457 msgid "" -"Some index files failed to download, they have been ignored, or old ones " +"Some index files failed to download. They have been ignored, or old ones " "used instead." msgstr "" @@ -2528,7 +2619,7 @@ msgstr "" msgid "Method %s did not start correctly" msgstr "" -#: apt-pkg/acquire-worker.cc:413 +#: apt-pkg/acquire-worker.cc:423 #, c-format msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter." msgstr "" @@ -2563,17 +2654,17 @@ msgstr "" msgid "The list of sources could not be read." msgstr "" -#: apt-pkg/policy.cc:344 +#: apt-pkg/policy.cc:351 #, c-format msgid "Invalid record in the preferences file %s, no Package header" msgstr "" -#: apt-pkg/policy.cc:366 +#: apt-pkg/policy.cc:373 #, c-format msgid "Did not understand pin type %s" msgstr "" -#: apt-pkg/policy.cc:374 +#: apt-pkg/policy.cc:381 msgid "No priority (or zero) specified for pin" msgstr "" @@ -2581,155 +2672,167 @@ msgstr "" msgid "Cache has an incompatible versioning system" msgstr "" -#: apt-pkg/pkgcachegen.cc:198 +#: apt-pkg/pkgcachegen.cc:187 #, c-format msgid "Error occurred while processing %s (NewPackage)" msgstr "" -#: apt-pkg/pkgcachegen.cc:215 +#: apt-pkg/pkgcachegen.cc:204 #, c-format msgid "Error occurred while processing %s (UsePackage1)" msgstr "" -#: apt-pkg/pkgcachegen.cc:253 +#: apt-pkg/pkgcachegen.cc:242 #, c-format msgid "Error occurred while processing %s (NewFileDesc1)" msgstr "" -#: apt-pkg/pkgcachegen.cc:285 +#: apt-pkg/pkgcachegen.cc:274 #, c-format msgid "Error occurred while processing %s (UsePackage2)" msgstr "" -#: apt-pkg/pkgcachegen.cc:289 +#: apt-pkg/pkgcachegen.cc:278 #, c-format msgid "Error occurred while processing %s (NewFileVer1)" msgstr "" -#: apt-pkg/pkgcachegen.cc:306 apt-pkg/pkgcachegen.cc:316 -#: apt-pkg/pkgcachegen.cc:324 +#: apt-pkg/pkgcachegen.cc:295 apt-pkg/pkgcachegen.cc:305 +#: apt-pkg/pkgcachegen.cc:313 #, c-format msgid "Error occurred while processing %s (NewVersion%d)" msgstr "" -#: apt-pkg/pkgcachegen.cc:320 +#: apt-pkg/pkgcachegen.cc:309 #, c-format msgid "Error occurred while processing %s (UsePackage3)" msgstr "" -#: apt-pkg/pkgcachegen.cc:353 +#: apt-pkg/pkgcachegen.cc:342 #, c-format msgid "Error occurred while processing %s (NewFileDesc2)" msgstr "" -#: apt-pkg/pkgcachegen.cc:360 +#: apt-pkg/pkgcachegen.cc:348 msgid "Wow, you exceeded the number of package names this APT is capable of." msgstr "" -#: apt-pkg/pkgcachegen.cc:363 +#: apt-pkg/pkgcachegen.cc:351 msgid "Wow, you exceeded the number of versions this APT is capable of." msgstr "" -#: apt-pkg/pkgcachegen.cc:366 +#: apt-pkg/pkgcachegen.cc:354 msgid "Wow, you exceeded the number of descriptions this APT is capable of." msgstr "" -#: apt-pkg/pkgcachegen.cc:369 +#: apt-pkg/pkgcachegen.cc:357 msgid "Wow, you exceeded the number of dependencies this APT is capable of." msgstr "" -#: apt-pkg/pkgcachegen.cc:398 +#: apt-pkg/pkgcachegen.cc:386 #, c-format msgid "Error occurred while processing %s (FindPkg)" msgstr "" -#: apt-pkg/pkgcachegen.cc:412 +#: apt-pkg/pkgcachegen.cc:400 #, c-format msgid "Error occurred while processing %s (CollectFileProvides)" msgstr "" -#: apt-pkg/pkgcachegen.cc:418 +#: apt-pkg/pkgcachegen.cc:406 #, c-format msgid "Package %s %s was not found while processing file dependencies" msgstr "" -#: apt-pkg/pkgcachegen.cc:982 +#: apt-pkg/pkgcachegen.cc:960 #, c-format msgid "Couldn't stat source package list %s" msgstr "" -#: apt-pkg/pkgcachegen.cc:1087 +#: apt-pkg/pkgcachegen.cc:1065 msgid "Collecting File Provides" msgstr "" -#: apt-pkg/pkgcachegen.cc:1265 apt-pkg/pkgcachegen.cc:1272 +#: apt-pkg/pkgcachegen.cc:1243 apt-pkg/pkgcachegen.cc:1250 msgid "IO Error saving source cache" msgstr "" -#: apt-pkg/acquire-item.cc:136 +#: apt-pkg/acquire-item.cc:135 #, c-format msgid "rename failed, %s (%s -> %s)." msgstr "" -#: apt-pkg/acquire-item.cc:484 +#: apt-pkg/acquire-item.cc:636 msgid "MD5Sum mismatch" msgstr "" -#: apt-pkg/acquire-item.cc:746 apt-pkg/acquire-item.cc:1574 -#: apt-pkg/acquire-item.cc:1717 +#: apt-pkg/acquire-item.cc:900 apt-pkg/acquire-item.cc:1848 +#: apt-pkg/acquire-item.cc:1991 msgid "Hash Sum mismatch" msgstr "" -#: apt-pkg/acquire-item.cc:1244 +#: apt-pkg/acquire-item.cc:1388 +#, c-format +msgid "" +"Unable to find expected entry '%s' in Release file (Wrong sources.list entry " +"or malformed file)" +msgstr "" + +#: apt-pkg/acquire-item.cc:1403 +#, c-format +msgid "Unable to find hash sum for '%s' in Release file" +msgstr "" + +#: apt-pkg/acquire-item.cc:1439 msgid "There is no public key available for the following key IDs:\n" msgstr "" -#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is -#. the time since then the file is invalid - formated in the same way as in -#. the download progress display (e.g. 7d 3h 42min 1s) -#: apt-pkg/acquire-item.cc:1281 +#: apt-pkg/acquire-item.cc:1477 #, c-format -msgid "Release file expired, ignoring %s (invalid since %s)" +msgid "" +"Release file for %s is expired (invalid since %s). Updates for this " +"repository will not be applied." msgstr "" -#: apt-pkg/acquire-item.cc:1302 +#: apt-pkg/acquire-item.cc:1499 #, c-format msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "" -#: apt-pkg/acquire-item.cc:1328 +#: apt-pkg/acquire-item.cc:1532 #, c-format msgid "" "A error occurred during the signature verification. The repository is not " "updated and the previous index files will be used. GPG error: %s: %s\n" msgstr "" -#: apt-pkg/acquire-item.cc:1337 +#. Invalid signature file, reject (LP: #346386) (Closes: #627642) +#: apt-pkg/acquire-item.cc:1542 apt-pkg/acquire-item.cc:1547 #, c-format msgid "GPG error: %s: %s" msgstr "" -#: apt-pkg/acquire-item.cc:1365 +#: apt-pkg/acquire-item.cc:1639 #, c-format msgid "" "I wasn't able to locate a file for the %s package. This might mean you need " "to manually fix this package. (due to missing arch)" msgstr "" -#: apt-pkg/acquire-item.cc:1424 +#: apt-pkg/acquire-item.cc:1698 #, c-format msgid "" "I wasn't able to locate a file for the %s package. This might mean you need " "to manually fix this package." msgstr "" -#: apt-pkg/acquire-item.cc:1479 +#: apt-pkg/acquire-item.cc:1753 #, c-format msgid "" "The package index files are corrupted. No Filename: field for package %s." msgstr "" -#: apt-pkg/acquire-item.cc:1566 +#: apt-pkg/acquire-item.cc:1840 msgid "Size mismatch" msgstr "" @@ -2738,130 +2841,129 @@ msgstr "" msgid "Unable to parse Release file %s" msgstr "" -#: apt-pkg/indexrecords.cc:60 +#: apt-pkg/indexrecords.cc:63 #, c-format msgid "No sections in Release file %s" msgstr "" -#: apt-pkg/indexrecords.cc:94 +#: apt-pkg/indexrecords.cc:97 #, c-format msgid "No Hash entry in Release file %s" msgstr "" -#: apt-pkg/indexrecords.cc:107 +#: apt-pkg/indexrecords.cc:110 #, c-format msgid "Invalid 'Valid-Until' entry in Release file %s" msgstr "" -#: apt-pkg/indexrecords.cc:122 +#: apt-pkg/indexrecords.cc:125 #, c-format msgid "Invalid 'Date' entry in Release file %s" msgstr "" -#: apt-pkg/vendorlist.cc:66 +#: apt-pkg/vendorlist.cc:71 #, c-format msgid "Vendor block %s contains no fingerprint" msgstr "" -#: apt-pkg/cdrom.cc:518 +#: apt-pkg/cdrom.cc:525 #, c-format msgid "" "Using CD-ROM mount point %s\n" "Mounting CD-ROM\n" msgstr "" -#: apt-pkg/cdrom.cc:527 apt-pkg/cdrom.cc:615 +#: apt-pkg/cdrom.cc:534 apt-pkg/cdrom.cc:631 msgid "Identifying.. " msgstr "" -#: apt-pkg/cdrom.cc:552 +#: apt-pkg/cdrom.cc:562 #, c-format msgid "Stored label: %s\n" msgstr "" -#: apt-pkg/cdrom.cc:559 apt-pkg/cdrom.cc:827 +#: apt-pkg/cdrom.cc:571 apt-pkg/cdrom.cc:847 msgid "Unmounting CD-ROM...\n" msgstr "" -#: apt-pkg/cdrom.cc:578 +#: apt-pkg/cdrom.cc:591 #, c-format msgid "Using CD-ROM mount point %s\n" msgstr "" -#: apt-pkg/cdrom.cc:596 +#: apt-pkg/cdrom.cc:609 msgid "Unmounting CD-ROM\n" msgstr "" -#: apt-pkg/cdrom.cc:600 +#: apt-pkg/cdrom.cc:614 msgid "Waiting for disc...\n" msgstr "" -#. Mount the new CDROM -#: apt-pkg/cdrom.cc:608 +#: apt-pkg/cdrom.cc:623 msgid "Mounting CD-ROM...\n" msgstr "" -#: apt-pkg/cdrom.cc:626 +#: apt-pkg/cdrom.cc:642 msgid "Scanning disc for index files..\n" msgstr "" -#: apt-pkg/cdrom.cc:666 +#: apt-pkg/cdrom.cc:684 #, c-format msgid "" "Found %zu package indexes, %zu source indexes, %zu translation indexes and " "%zu signatures\n" msgstr "" -#: apt-pkg/cdrom.cc:677 +#: apt-pkg/cdrom.cc:695 msgid "" "Unable to locate any package files, perhaps this is not a Debian Disc or the " "wrong architecture?" msgstr "" -#: apt-pkg/cdrom.cc:703 +#: apt-pkg/cdrom.cc:722 #, c-format msgid "Found label '%s'\n" msgstr "" -#: apt-pkg/cdrom.cc:732 +#: apt-pkg/cdrom.cc:751 msgid "That is not a valid name, try again.\n" msgstr "" -#: apt-pkg/cdrom.cc:748 +#: apt-pkg/cdrom.cc:768 #, c-format msgid "" "This disc is called: \n" "'%s'\n" msgstr "" -#: apt-pkg/cdrom.cc:752 +#: apt-pkg/cdrom.cc:770 msgid "Copying package lists..." msgstr "" -#: apt-pkg/cdrom.cc:778 +#: apt-pkg/cdrom.cc:797 msgid "Writing new source list\n" msgstr "" -#: apt-pkg/cdrom.cc:787 +#: apt-pkg/cdrom.cc:805 msgid "Source list entries for this disc are:\n" msgstr "" -#: apt-pkg/indexcopy.cc:270 apt-pkg/indexcopy.cc:908 +#: apt-pkg/indexcopy.cc:270 apt-pkg/indexcopy.cc:909 #, c-format msgid "Wrote %i records.\n" msgstr "" -#: apt-pkg/indexcopy.cc:272 apt-pkg/indexcopy.cc:910 +#: apt-pkg/indexcopy.cc:272 apt-pkg/indexcopy.cc:911 #, c-format msgid "Wrote %i records with %i missing files.\n" msgstr "" -#: apt-pkg/indexcopy.cc:275 apt-pkg/indexcopy.cc:913 +#: apt-pkg/indexcopy.cc:275 apt-pkg/indexcopy.cc:914 #, c-format msgid "Wrote %i records with %i mismatched files\n" msgstr "" -#: apt-pkg/indexcopy.cc:278 apt-pkg/indexcopy.cc:916 +#: apt-pkg/indexcopy.cc:278 apt-pkg/indexcopy.cc:917 #, c-format msgid "Wrote %i records with %i missing files and %i mismatched files\n" msgstr "" @@ -2928,123 +3030,123 @@ msgstr "" msgid "Can't select installed version from package %s as it is not installed" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:52 +#: apt-pkg/deb/dpkgpm.cc:54 #, c-format msgid "Installing %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:53 apt-pkg/deb/dpkgpm.cc:823 +#: apt-pkg/deb/dpkgpm.cc:55 apt-pkg/deb/dpkgpm.cc:848 #, c-format msgid "Configuring %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:54 apt-pkg/deb/dpkgpm.cc:830 +#: apt-pkg/deb/dpkgpm.cc:56 apt-pkg/deb/dpkgpm.cc:855 #, c-format msgid "Removing %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:55 +#: apt-pkg/deb/dpkgpm.cc:57 #, c-format msgid "Completely removing %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:56 +#: apt-pkg/deb/dpkgpm.cc:58 #, c-format msgid "Noting disappearance of %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:57 +#: apt-pkg/deb/dpkgpm.cc:59 #, c-format msgid "Running post-installation trigger %s" msgstr "" #. FIXME: use a better string after freeze -#: apt-pkg/deb/dpkgpm.cc:646 +#: apt-pkg/deb/dpkgpm.cc:654 #, c-format msgid "Directory '%s' missing" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:661 apt-pkg/deb/dpkgpm.cc:675 +#: apt-pkg/deb/dpkgpm.cc:669 apt-pkg/deb/dpkgpm.cc:689 #, c-format msgid "Could not open file '%s'" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:816 +#: apt-pkg/deb/dpkgpm.cc:841 #, c-format msgid "Preparing %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:817 +#: apt-pkg/deb/dpkgpm.cc:842 #, c-format msgid "Unpacking %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:822 +#: apt-pkg/deb/dpkgpm.cc:847 #, c-format msgid "Preparing to configure %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:824 +#: apt-pkg/deb/dpkgpm.cc:849 #, c-format msgid "Installed %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:829 +#: apt-pkg/deb/dpkgpm.cc:854 #, c-format msgid "Preparing for removal of %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:831 +#: apt-pkg/deb/dpkgpm.cc:856 #, c-format msgid "Removed %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:836 +#: apt-pkg/deb/dpkgpm.cc:861 #, c-format msgid "Preparing to completely remove %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:837 +#: apt-pkg/deb/dpkgpm.cc:862 #, c-format msgid "Completely removed %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1043 +#: apt-pkg/deb/dpkgpm.cc:1082 msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1074 +#: apt-pkg/deb/dpkgpm.cc:1113 msgid "Running dpkg" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1277 +#: apt-pkg/deb/dpkgpm.cc:1338 msgid "No apport report written because MaxReports is reached already" msgstr "" #. check if its not a follow up error -#: apt-pkg/deb/dpkgpm.cc:1282 +#: apt-pkg/deb/dpkgpm.cc:1343 msgid "dependency problems - leaving unconfigured" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1284 +#: apt-pkg/deb/dpkgpm.cc:1345 msgid "" "No apport report written because the error message indicates its a followup " "error from a previous failure." msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1290 +#: apt-pkg/deb/dpkgpm.cc:1351 msgid "" "No apport report written because the error message indicates a disk full " "error" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1296 +#: apt-pkg/deb/dpkgpm.cc:1357 msgid "" "No apport report written because the error message indicates a out of memory " "error" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1303 +#: apt-pkg/deb/dpkgpm.cc:1364 msgid "" "No apport report written because the error message indicates a dpkg I/O error" msgstr "" @@ -3075,30 +3177,37 @@ msgstr "" #. FIXME: fallback to a default mirror here instead #. and provide a config option to define that default -#: methods/mirror.cc:200 +#: methods/mirror.cc:260 #, c-format msgid "No mirror file '%s' found " msgstr "" -#: methods/mirror.cc:343 +#. FIXME: fallback to a default mirror here instead +#. and provide a config option to define that default +#: methods/mirror.cc:267 +#, c-format +msgid "Can not read mirror file '%s'" +msgstr "" + +#: methods/mirror.cc:422 #, c-format msgid "[Mirror: %s]" msgstr "" -#: methods/rred.cc:465 +#: methods/rred.cc:503 #, c-format msgid "" "Could not patch %s with mmap and with file operation usage - the patch seems " "to be corrupt." msgstr "" -#: methods/rred.cc:470 +#: methods/rred.cc:508 #, c-format msgid "" "Could not patch %s with mmap (but no mmap specific fail) - the patch seems " "to be corrupt." msgstr "" -#: methods/rsh.cc:329 +#: methods/rsh.cc:330 msgid "Connection closed prematurely" msgstr "" diff --git a/test/integration/test-resolve-by-keep-new-recommends b/test/integration/test-resolve-by-keep-new-recommends new file mode 100755 index 000000000..8134b76aa --- /dev/null +++ b/test/integration/test-resolve-by-keep-new-recommends @@ -0,0 +1,20 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture "i386" + +insertinstalledpackage 'foo' 'i386' '1.0' +insertpackage 'unstable' 'foo' 'i386' '2.0' 'Recommends: bar' + +setupaptarchive + +UPGRADE_KEEP="Reading package lists... +Building dependency tree... +The following packages have been kept back: + foo +0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded." +testequal "$UPGRADE_KEEP" aptget upgrade -s + -- cgit v1.2.3 From db4351bee8204c5eb352bb5667d3fbd416685715 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Fri, 15 Jul 2011 09:33:36 +0200 Subject: * apt-pkg/depcache.cc: - change default of APT::AutoRemove::SuggestsImportant to true --- apt-pkg/depcache.cc | 2 +- debian/changelog | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc index e9fa097aa..eb3f4e598 100644 --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@ -1593,7 +1593,7 @@ bool pkgDepCache::MarkFollowsRecommends() bool pkgDepCache::MarkFollowsSuggests() { - return _config->FindB("APT::AutoRemove::SuggestsImportant", false); + return _config->FindB("APT::AutoRemove::SuggestsImportant", true); } // pkgDepCache::MarkRequired - the main mark algorithm /*{{{*/ diff --git a/debian/changelog b/debian/changelog index 52972e43b..2e22e64d8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -19,8 +19,10 @@ apt (0.8.15.3) UNRELEASED; urgency=low - restore all important dependencies for garbage packages (LP: #806274) * apt-pkg/init.cc: - use CndSet in pkgInitConfig (Closes: #629617) + * apt-pkg/depcache.cc: + - change default of APT::AutoRemove::SuggestsImportant to true - -- David Kalnischkies Thu, 14 Jul 2011 21:26:09 +0200 + -- David Kalnischkies Fri, 15 Jul 2011 09:29:37 +0200 apt (0.8.15.2) unstable; urgency=high -- cgit v1.2.3