From 0340069cc4709a18ba117090763d9f263de999a9 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sat, 12 Mar 2016 20:29:04 +0100 Subject: show more details for "Hash Sum mismatch" errors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Users tend to report these errors with just this error message… not very actionable and hard to figure out if this is a temporary or 'permanent' mirror-sync issue or even the occasional apt bug. Showing the involved hashsums and modification times should help in triaging these kind of bugs – and eventually we will have less of them via by-hash. The subheaders aren't marked for translation for now as they are technical glibberish and probably easier to deal with if not translated. After all, our iconic "Hash Sum mismatch" is translated at least. These additions were proposed in #817240 by Peter Palfrader. --- apt-pkg/acquire-item.cc | 60 +++++++--- apt-pkg/acquire-item.h | 1 + apt-pkg/acquire-worker.cc | 3 + test/integration/framework | 20 ++-- test/integration/test-apt-helper | 15 +++ test/integration/test-apt-update-not-modified | 47 ++++++-- test/integration/test-apt-update-rollback | 17 +++ .../test-ubuntu-bug-1098738-apt-get-source-md5sum | 124 +++++++++++++++++++++ 8 files changed, 259 insertions(+), 28 deletions(-) diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index 474c0a0f2..aeadbcfc7 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -650,8 +650,6 @@ APT_CONST bool pkgAcquire::Item::IsTrusted() const /*{{{*/ fetch this object */ void pkgAcquire::Item::Failed(string const &Message,pkgAcquire::MethodConfig const * const Cnf) { - if(ErrorText.empty()) - ErrorText = LookupTag(Message,"Message"); if (QueueCounter <= 1) { /* This indicates that the file is not available right now but might @@ -681,18 +679,37 @@ void pkgAcquire::Item::Failed(string const &Message,pkgAcquire::MethodConfig con Dequeue(); } + if(ErrorText.empty()) + { + if (Status == StatAuthError) + { + std::ostringstream out; + out << _("Hash Sum mismatch") << std::endl; + out << "Hashes of expected file:" << std::endl; + for (auto const &hs: GetExpectedHashes()) + out << " - " << hs.toStr() << std::endl; + out << "Hashes of received file:" << std::endl; + for (char const * const * type = HashString::SupportedHashes(); *type != NULL; ++type) + { + std::string const tagname = std::string(*type) + "-Hash"; + std::string const hashsum = LookupTag(Message, tagname.c_str()); + if (hashsum.empty() == false) + out << " - " << HashString(*type, hashsum).toStr() << std::endl; + } + out << "Last modification reported: " << LookupTag(Message, "Last-Modified", "") << std::endl; + ErrorText = out.str(); + } + else + ErrorText = LookupTag(Message,"Message"); + } + string const FailReason = LookupTag(Message, "FailReason"); if (FailReason == "MaximumSizeExceeded") - { RenameOnError(MaximumSizeExceeded); - ReportMirrorFailureToCentral(*this, FailReason, ErrorText); - } else if (Status == StatAuthError) - { RenameOnError(HashSumMismatch); - ReportMirrorFailureToCentral(*this, "HashChecksumFailure", ErrorText); - } - else if (FailReason.empty() == false) + + if (FailReason.empty() == false) ReportMirrorFailureToCentral(*this, FailReason, ErrorText); else ReportMirrorFailureToCentral(*this, ErrorText, ErrorText); @@ -1769,6 +1786,23 @@ pkgAcqBaseIndex::pkgAcqBaseIndex(pkgAcquire * const Owner, IndexTarget const &Target) : pkgAcqTransactionItem(Owner, TransactionManager, Target), d(NULL) { +} + /*}}}*/ +void pkgAcqBaseIndex::Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf)/*{{{*/ +{ + pkgAcquire::Item::Failed(Message, Cnf); + if (TransactionManager == nullptr || ErrorText.empty() || + TransactionManager->MetaIndexParser == nullptr || + LookupTag(Message, "FailReason") != "HashSumMismatch") + return; + + ErrorText.append("Release file created at: "); + auto const timespec = TransactionManager->MetaIndexParser->GetDate(); + if (timespec == 0) + ErrorText.append(""); + else + ErrorText.append(TimeRFC1123(timespec)); + ErrorText.append("\n"); } /*}}}*/ pkgAcqBaseIndex::~pkgAcqBaseIndex() {} @@ -2210,7 +2244,7 @@ bool pkgAcqDiffIndex::ParseDiffIndex(string const &IndexDiffFile) /*{{{*/ /*}}}*/ void pkgAcqDiffIndex::Failed(string const &Message,pkgAcquire::MethodConfig const * const Cnf)/*{{{*/ { - Item::Failed(Message,Cnf); + pkgAcqBaseIndex::Failed(Message,Cnf); Status = StatDone; if(Debug) @@ -2291,7 +2325,7 @@ pkgAcqIndexDiffs::pkgAcqIndexDiffs(pkgAcquire * const Owner, /*}}}*/ void pkgAcqIndexDiffs::Failed(string const &Message,pkgAcquire::MethodConfig const * const Cnf)/*{{{*/ { - Item::Failed(Message,Cnf); + pkgAcqBaseIndex::Failed(Message,Cnf); Status = StatDone; DestFile = GetKeepCompressedFileName(GetPartialFileNameFromURI(Target.URI), Target); @@ -2496,7 +2530,7 @@ void pkgAcqIndexMergeDiffs::Failed(string const &Message,pkgAcquire::MethodConfi if(Debug) std::clog << "pkgAcqIndexMergeDiffs failed: " << Desc.URI << " with " << Message << std::endl; - Item::Failed(Message,Cnf); + pkgAcqBaseIndex::Failed(Message,Cnf); Status = StatDone; // check if we are the first to fail, otherwise we are done here @@ -2734,7 +2768,7 @@ string pkgAcqIndex::Custom600Headers() const // AcqIndex::Failed - getting the indexfile failed /*{{{*/ void pkgAcqIndex::Failed(string const &Message,pkgAcquire::MethodConfig const * const Cnf) { - Item::Failed(Message,Cnf); + pkgAcqBaseIndex::Failed(Message,Cnf); // authorisation matches will not be fixed by other compression types if (Status != StatAuthError) diff --git a/apt-pkg/acquire-item.h b/apt-pkg/acquire-item.h index 1884cfe52..61037f1b7 100644 --- a/apt-pkg/acquire-item.h +++ b/apt-pkg/acquire-item.h @@ -609,6 +609,7 @@ class APT_HIDDEN pkgAcqBaseIndex : public pkgAcqTransactionItem public: /** \brief Get the full pathname of the final file for the current URI */ virtual std::string GetFinalFilename() const APT_OVERRIDE; + virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE; pkgAcqBaseIndex(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager, IndexTarget const &Target); diff --git a/apt-pkg/acquire-worker.cc b/apt-pkg/acquire-worker.cc index ca1fd4836..c009f402e 100644 --- a/apt-pkg/acquire-worker.cc +++ b/apt-pkg/acquire-worker.cc @@ -439,7 +439,10 @@ bool pkgAcquire::Worker::RunMessages() else { if (isDoomedItem(Owner) == false) + { + Message.append("\nFailReason: HashSumMismatch"); Owner->Failed(Message,Config); + } if (Log != nullptr) Log->Fail(Owner->GetItemDesc()); } diff --git a/test/integration/framework b/test/integration/framework index 2a78e6194..a68209326 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -217,6 +217,12 @@ gdb() { fi runapt command gdb --quiet -ex run "$CMD" --args "$CMD" "$@" } +lastmodification() { + date -u -d "@$(stat -c '%Y' "${TMPWORKINGDIRECTORY}/$1")" '+%a, %d %b %Y %H:%M:%S GMT' +} +releasefiledate() { + grep "^${2:-Date}:" "$1" | cut -d' ' -f 2- | sed -e 's#UTC#GMT#' +} exitwithstatus() { # error if we about to overflow, but ... @@ -595,12 +601,12 @@ setupsimplenativepackage() { mkdir -p ${BUILDDIR}/debian/source cd ${BUILDDIR} echo "* most suckless software product ever" > FEATURES - test -e debian/copyright || echo "Copyleft by Joe Sixpack $(date +%Y)" > debian/copyright + test -e debian/copyright || echo "Copyleft by Joe Sixpack $(date -u +%Y)" > debian/copyright test -e debian/changelog || echo "$NAME ($VERSION) $RELEASE; urgency=low * Initial release - -- Joe Sixpack $(date -R)" > debian/changelog + -- Joe Sixpack $(date -u -R)" > debian/changelog test -e debian/control || echo "Source: $NAME Section: $SECTION Priority: optional @@ -658,12 +664,12 @@ buildsimplenativepackage() { echo "#!/bin/sh echo '$NAME says \"Hello!\"'" > "${BUILDDIR}/${NAME}" - echo "Copyleft by Joe Sixpack $(date +%Y)" > "${BUILDDIR}/debian/copyright" + echo "Copyleft by Joe Sixpack $(date -u +%Y)" > "${BUILDDIR}/debian/copyright" echo "$NAME ($VERSION) $RELEASE; urgency=low * Initial release - -- Joe Sixpack $(date -R)" > "${BUILDDIR}/debian/changelog" + -- Joe Sixpack $(date -u -R)" > "${BUILDDIR}/debian/changelog" { echo "Source: $NAME Priority: $PRIORITY @@ -1014,13 +1020,13 @@ NotAutomatic: yes' "$dir/Release" fi if [ -n "$DATE" -a "$DATE" != "now" ]; then for release in $(find ./aptarchive -name 'Release'); do - sed -i "s/^Date: .*$/Date: $(date -d "$DATE" '+%a, %d %b %Y %H:%M:%S %Z')/" "$release" + sed -i "s/^Date: .*$/Date: $(date -u -d "$DATE" '+%a, %d %b %Y %H:%M:%S %Z')/" "$release" touch -d "$DATE" "$release" done fi if [ -n "$VALIDUNTIL" ]; then sed -i "/^Date: / a\ -Valid-Until: $(date -d "$VALIDUNTIL" '+%a, %d %b %Y %H:%M:%S %Z')" $(find ./aptarchive -name 'Release') +Valid-Until: $(date -u -d "$VALIDUNTIL" '+%a, %d %b %Y %H:%M:%S %Z')" $(find ./aptarchive -name 'Release') fi msgdone "info" } @@ -1119,7 +1125,7 @@ signreleasefiles() { } redatereleasefiles() { - local DATE="$(date -d "$1" '+%a, %d %b %Y %H:%M:%S %Z')" + local DATE="$(date -u -d "$1" '+%a, %d %b %Y %H:%M:%S %Z')" for release in $(find aptarchive/ -name 'Release'); do sed -i "s/^Date: .*$/Date: ${DATE}/" "$release" touch -d "$DATE" "$release" diff --git a/test/integration/test-apt-helper b/test/integration/test-apt-helper index bc7f6e680..8a25859b8 100755 --- a/test/integration/test-apt-helper +++ b/test/integration/test-apt-helper @@ -34,12 +34,27 @@ test_apt_helper_download() { msgtest 'apt-file download-file' 'wrong md5sum' testfailure --nomsg apthelper -qq download-file "${1}/foo" './downloaded/foo5' 'MD5Sum:aabbcc' testfileequal rootdir/tmp/testfailure.output "E: Failed to fetch ${1}/foo Hash Sum mismatch + Hashes of expected file: + - MD5Sum:aabbcc + Hashes of received file: + - SHA512:0cf9180a764aba863a67b6d72f0918bc131c6772642cb2dce5a34f0a702f9470ddc2bf125c12198b1995c233c34b4afd346c54a2334c350a948a51b6e8b4e6b6 + - SHA256:b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c + - SHA1:f1d2d2f924e986ac86fdf7b36c94bcdf32beec15 + - MD5Sum:d3b07384d113edec49eaa6238ad5ff00 + - Checksum-FileSize:4 + Last modification reported: $(lastmodification 'aptarchive/foo') E: Download Failed" testfileequal ./downloaded/foo5.FAILED 'foo' msgtest 'apt-file download-file' 'wrong sha256' testfailure --nomsg apthelper -qq download-file "${1}/foo" './downloaded/foo6' 'SHA256:aabbcc' testfileequal rootdir/tmp/testfailure.output "E: Failed to fetch ${1}/foo Hash Sum mismatch + Hashes of expected file: + - SHA256:aabbcc + Hashes of received file: + - SHA256:b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c + - Checksum-FileSize:4 + Last modification reported: $(lastmodification 'aptarchive/foo') E: Download Failed" testfileequal './downloaded/foo6.FAILED' 'foo' diff --git a/test/integration/test-apt-update-not-modified b/test/integration/test-apt-update-not-modified index b1f801bc5..c81a05b2c 100755 --- a/test/integration/test-apt-update-not-modified +++ b/test/integration/test-apt-update-not-modified @@ -6,6 +6,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")" setupenvironment configarchitecture 'amd64' 'i386' +confighashes 'SHA256' insertpackage 'unstable' 'apt' 'amd64,i386' '1.0' @@ -34,10 +35,9 @@ Reading package lists..." aptget update # readd arch so its downloaded again… configarchitecture 'amd64' 'i386' # … but oh noes, hashsum mismatch! - SIZE=$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') - find aptarchive/dists/unstable/main/binary-amd64/ -type f -delete - cat >> aptarchive/dists/unstable/main/binary-amd64/Packages < aptarchive/dists/unstable/main/binary-amd64/Packages <> aptarchive/dists/unstable/main/binary-amd64/Packages < aptarchive/dists/unstable/main/binary-amd64/Packages < "$APTARCHIVE/dists/unstable/main/source/Sources" compressfile "$APTARCHIVE/dists/unstable/main/source/Sources" "$@" } @@ -61,6 +62,14 @@ test_inrelease_to_broken_hash_reverts_all() { # test the error condition testfailureequal "E: Failed to fetch file:${APTARCHIVE}/dists/unstable/main/source/Sources.gz Hash Sum mismatch + Hashes of expected file: + - Checksum-FileSize:$(stat -c '%s' 'aptarchive/dists/unstable/main/source/Sources.gz.orig') + - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/source/Sources.gz.orig' | cut -d' ' -f 1) + Hashes of received file: + - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/source/Sources.gz' | cut -d' ' -f 1) + - Checksum-FileSize:$(stat -c '%s' 'aptarchive/dists/unstable/main/source/Sources.gz') + Last modification reported: $(lastmodification 'aptarchive/dists/unstable/main/source/Sources.gz') + Release file created at: $(releasefiledate 'aptarchive/dists/unstable/InRelease') E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq # ensure that the Packages file is also rolled back testfileequal lists.before "$(listcurrentlistsdirectory)" @@ -127,6 +136,14 @@ E: There were unauthenticated packages and -y was used without --allow-unauthent break_repository_sources_index '+1hour' testfailureequal "E: Failed to fetch file:$APTARCHIVE/dists/unstable/main/source/Sources.gz Hash Sum mismatch + Hashes of expected file: + - Checksum-FileSize:$(stat -c '%s' 'aptarchive/dists/unstable/main/source/Sources.gz.orig') + - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/source/Sources.gz.orig' | cut -d' ' -f 1) + Hashes of received file: + - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/source/Sources.gz' | cut -d' ' -f 1) + - Checksum-FileSize:$(stat -c '%s' 'aptarchive/dists/unstable/main/source/Sources.gz') + Last modification reported: $(lastmodification 'aptarchive/dists/unstable/main/source/Sources.gz') + Release file created at: $(releasefiledate 'aptarchive/dists/unstable/InRelease') E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq testfileequal lists.before "$(listcurrentlistsdirectory)" diff --git a/test/integration/test-ubuntu-bug-1098738-apt-get-source-md5sum b/test/integration/test-ubuntu-bug-1098738-apt-get-source-md5sum index 2a271607e..8994fa24e 100755 --- a/test/integration/test-ubuntu-bug-1098738-apt-get-source-md5sum +++ b/test/integration/test-ubuntu-bug-1098738-apt-get-source-md5sum @@ -220,8 +220,74 @@ Err:1 http://localhost:${APTHTTPPORT} $1 1.0 (dsc) Get:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar) [4 B] Err:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar) Hash Sum mismatch + Hashes of expected file: + - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb + - Checksum-FileSize:4 + Hashes of received file: + - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb + - Checksum-FileSize:3 + Last modification reported: $(lastmodification "aptarchive/${1}_1.0.dsc") E: Failed to fetch http://localhost:${APTHTTPPORT}/${1}_1.0.dsc Writing more data than expected (3 > 2) E: Failed to fetch http://localhost:${APTHTTPPORT}/${1}_1.0.tar.gz Hash Sum mismatch + Hashes of expected file: + - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb + - Checksum-FileSize:4 + Hashes of received file: + - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb + - Checksum-FileSize:3 + Last modification reported: $(lastmodification "aptarchive/${1}_1.0.dsc") +E: Failed to fetch some archives." + elif [ "$1" = 'pkg-md5-bad' ]; then + FAILURE="Reading package lists... +Need to get 6 B of source archives. +Get:1 http://localhost:${APTHTTPPORT} $1 1.0 (dsc) [3 B] +Err:1 http://localhost:${APTHTTPPORT} $1 1.0 (dsc) + Hash Sum mismatch + Hashes of expected file: + - MD5Sum:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + - Checksum-FileSize:3 + Hashes of received file: + - SHA512:e52b7bb395ea3f46974f1f65b7c5975839aad32d4e2ec0f458f735d5aa24d2bf36d7816ed1e01dc3c493e11879e9a8f66dfca42821608cfe993996929a6be18a + - SHA256:943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a + - SHA1:324f464e6151a92cf57b26ef95dcfcf2059a8c44 + - MD5Sum:9604ba9427a280db542279d9ed78400b + - Checksum-FileSize:3 + Last modification reported: $(lastmodification "aptarchive/${1}_1.0.dsc") +Get:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar) [3 B] +Err:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar) + Hash Sum mismatch + Hashes of expected file: + - MD5Sum:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + - Checksum-FileSize:3 + Hashes of received file: + - SHA512:5aa4cad81553320574eb72ee92bd45a1f0575528e257749dff298b2a33df9e7fc7f5c1c87fc1c8fde230f1234cca3a99bf8625a0ff7bb3238eb7e5473f9b43c0 + - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb + - SHA1:680254bad1d7ca0d65ec46aaa315d363abf6a50a + - MD5Sum:db5570bf61464b46e2bde31ed61a7dc6 + - Checksum-FileSize:3 + Last modification reported: $(lastmodification "aptarchive/${1}_1.0.tar.gz") +E: Failed to fetch http://localhost:${APTHTTPPORT}/${1}_1.0.dsc Hash Sum mismatch + Hashes of expected file: + - MD5Sum:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + - Checksum-FileSize:3 + Hashes of received file: + - SHA512:e52b7bb395ea3f46974f1f65b7c5975839aad32d4e2ec0f458f735d5aa24d2bf36d7816ed1e01dc3c493e11879e9a8f66dfca42821608cfe993996929a6be18a + - SHA256:943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a + - SHA1:324f464e6151a92cf57b26ef95dcfcf2059a8c44 + - MD5Sum:9604ba9427a280db542279d9ed78400b + - Checksum-FileSize:3 + Last modification reported: $(lastmodification "aptarchive/${1}_1.0.dsc") +E: Failed to fetch http://localhost:${APTHTTPPORT}/${1}_1.0.tar.gz Hash Sum mismatch + Hashes of expected file: + - MD5Sum:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + - Checksum-FileSize:3 + Hashes of received file: + - SHA512:5aa4cad81553320574eb72ee92bd45a1f0575528e257749dff298b2a33df9e7fc7f5c1c87fc1c8fde230f1234cca3a99bf8625a0ff7bb3238eb7e5473f9b43c0 + - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb + - SHA1:680254bad1d7ca0d65ec46aaa315d363abf6a50a + - MD5Sum:db5570bf61464b46e2bde31ed61a7dc6 + - Checksum-FileSize:3 + Last modification reported: $(lastmodification "aptarchive/${1}_1.0.tar.gz") E: Failed to fetch some archives." else FAILURE="Reading package lists... @@ -229,11 +295,55 @@ Need to get 6 B of source archives. Get:1 http://localhost:${APTHTTPPORT} $1 1.0 (dsc) [3 B] Err:1 http://localhost:${APTHTTPPORT} $1 1.0 (dsc) Hash Sum mismatch + Hashes of expected file: + - SHA256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + - Checksum-FileSize:3 + - SHA1:324f464e6151a92cf57b26ef95dcfcf2059a8c44 + - MD5Sum:9604ba9427a280db542279d9ed78400b + Hashes of received file: + - SHA256:943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a + - SHA1:324f464e6151a92cf57b26ef95dcfcf2059a8c44 + - MD5Sum:9604ba9427a280db542279d9ed78400b + - Checksum-FileSize:3 + Last modification reported: $(lastmodification "aptarchive/${1}_1.0.dsc") Get:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar) [3 B] Err:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar) Hash Sum mismatch + Hashes of expected file: + - SHA256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + - Checksum-FileSize:3 + - SHA1:680254bad1d7ca0d65ec46aaa315d363abf6a50a + - MD5Sum:db5570bf61464b46e2bde31ed61a7dc6 + Hashes of received file: + - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb + - SHA1:680254bad1d7ca0d65ec46aaa315d363abf6a50a + - MD5Sum:db5570bf61464b46e2bde31ed61a7dc6 + - Checksum-FileSize:3 + Last modification reported: $(lastmodification "aptarchive/${1}_1.0.tar.gz") E: Failed to fetch http://localhost:${APTHTTPPORT}/${1}_1.0.dsc Hash Sum mismatch + Hashes of expected file: + - SHA256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + - Checksum-FileSize:3 + - SHA1:324f464e6151a92cf57b26ef95dcfcf2059a8c44 + - MD5Sum:9604ba9427a280db542279d9ed78400b + Hashes of received file: + - SHA256:943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a + - SHA1:324f464e6151a92cf57b26ef95dcfcf2059a8c44 + - MD5Sum:9604ba9427a280db542279d9ed78400b + - Checksum-FileSize:3 + Last modification reported: $(lastmodification "aptarchive/${1}_1.0.dsc") E: Failed to fetch http://localhost:${APTHTTPPORT}/${1}_1.0.tar.gz Hash Sum mismatch + Hashes of expected file: + - SHA256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + - Checksum-FileSize:3 + - SHA1:680254bad1d7ca0d65ec46aaa315d363abf6a50a + - MD5Sum:db5570bf61464b46e2bde31ed61a7dc6 + Hashes of received file: + - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb + - SHA1:680254bad1d7ca0d65ec46aaa315d363abf6a50a + - MD5Sum:db5570bf61464b46e2bde31ed61a7dc6 + - Checksum-FileSize:3 + Last modification reported: $(lastmodification "aptarchive/${1}_1.0.tar.gz") E: Failed to fetch some archives." fi testfailureequal "$FAILURE" aptget source -d "$@" @@ -311,7 +421,21 @@ Need to get 3 B of source archives. Get:1 http://localhost:${APTHTTPPORT} pkg-mixed-sha2-bad 1.0 (tar) [3 B] Err:1 http://localhost:${APTHTTPPORT} pkg-mixed-sha2-bad 1.0 (tar) Hash Sum mismatch + Hashes of expected file: + - SHA256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + - Checksum-FileSize:3 + Hashes of received file: + - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb + - Checksum-FileSize:3 + Last modification reported: $(lastmodification 'aptarchive/pkg-mixed-sha2-bad_1.0.tar.gz') E: Failed to fetch http://localhost:${APTHTTPPORT}/pkg-mixed-sha2-bad_1.0.tar.gz Hash Sum mismatch + Hashes of expected file: + - SHA256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + - Checksum-FileSize:3 + Hashes of received file: + - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb + - Checksum-FileSize:3 + Last modification reported: $(lastmodification 'aptarchive/pkg-mixed-sha2-bad_1.0.tar.gz') E: Failed to fetch some archives." aptget source -d pkg-mixed-sha2-bad # it gets even more pathologic: multiple entries for one file, some even disagreeing! -- cgit v1.2.3