From a3a03f5d7436c870edac9c0eb92e85e1fcaf6bca Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Wed, 9 Jun 2010 14:08:20 +0200 Subject: * apt-pkg/contrib/fileutl.{h,cc}: - Add support for transparent reading of gzipped files. - Link against zlib (in apt-pkg/makefile) and add zlib build dependency. --- apt-pkg/contrib/fileutl.cc | 47 ++++++++++++++++++++++++++++++++++++++++------ apt-pkg/contrib/fileutl.h | 9 ++++++--- apt-pkg/makefile | 2 +- debian/changelog | 6 ++++++ debian/control | 2 +- 5 files changed, 55 insertions(+), 11 deletions(-) diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc index da32983f1..11a9e7f7b 100644 --- a/apt-pkg/contrib/fileutl.cc +++ b/apt-pkg/contrib/fileutl.cc @@ -11,6 +11,7 @@ Most of this source is placed in the Public Domain, do with it what you will It was originally written by Jason Gunthorpe . + FileFd gzip support added by Martin Pitt The exception is RunScripts() it is under the GPLv2 @@ -603,6 +604,13 @@ bool FileFd::Open(string FileName,OpenMode Mode, unsigned long Perms) { case ReadOnly: iFd = open(FileName.c_str(),O_RDONLY); + if (iFd > 0 && FileName.compare(FileName.size()-3, 3, ".gz") == 0) { + gz = gzdopen (iFd, "r"); + if (gz == NULL) { + close (iFd); + iFd = -1; + } + } break; case WriteEmpty: @@ -658,7 +666,10 @@ bool FileFd::Read(void *To,unsigned long Size,unsigned long *Actual) do { - Res = read(iFd,To,Size); + if (gz != NULL) + Res = gzread(gz,To,Size); + else + Res = read(iFd,To,Size); if (Res < 0 && errno == EINTR) continue; if (Res < 0) @@ -697,7 +708,10 @@ bool FileFd::Write(const void *From,unsigned long Size) errno = 0; do { - Res = write(iFd,From,Size); + if (gz != NULL) + Res = gzwrite(gz,From,Size); + else + Res = write(iFd,From,Size); if (Res < 0 && errno == EINTR) continue; if (Res < 0) @@ -723,7 +737,12 @@ bool FileFd::Write(const void *From,unsigned long Size) /* */ bool FileFd::Seek(unsigned long To) { - if (lseek(iFd,To,SEEK_SET) != (signed)To) + int res; + if (gz) + res = gzseek(gz,To,SEEK_SET); + else + res = lseek(iFd,To,SEEK_SET); + if (res != (signed)To) { Flags |= Fail; return _error->Error("Unable to seek to %lu",To); @@ -737,7 +756,12 @@ bool FileFd::Seek(unsigned long To) /* */ bool FileFd::Skip(unsigned long Over) { - if (lseek(iFd,Over,SEEK_CUR) < 0) + int res; + if (gz) + res = gzseek(gz,Over,SEEK_CUR); + else + res = lseek(iFd,Over,SEEK_CUR); + if (res < 0) { Flags |= Fail; return _error->Error("Unable to seek ahead %lu",Over); @@ -751,6 +775,11 @@ bool FileFd::Skip(unsigned long Over) /* */ bool FileFd::Truncate(unsigned long To) { + if (gz) + { + Flags |= Fail; + return _error->Error("Truncating gzipped files is not implemented (%s)", FileName.c_str()); + } if (ftruncate(iFd,To) != 0) { Flags |= Fail; @@ -765,7 +794,11 @@ bool FileFd::Truncate(unsigned long To) /* */ unsigned long FileFd::Tell() { - off_t Res = lseek(iFd,0,SEEK_CUR); + off_t Res; + if (gz) + Res = gztell(gz); + else + Res = lseek(iFd,0,SEEK_CUR); if (Res == (off_t)-1) _error->Errno("lseek","Failed to determine the current file position"); return Res; @@ -776,6 +809,7 @@ unsigned long FileFd::Tell() /* */ unsigned long FileFd::Size() { + //TODO: For gz, do we need the actual file size here or the uncompressed length? struct stat Buf; if (fstat(iFd,&Buf) != 0) return _error->Errno("fstat","Unable to determine the file size"); @@ -789,9 +823,10 @@ bool FileFd::Close() { bool Res = true; if ((Flags & AutoClose) == AutoClose) - if (iFd >= 0 && close(iFd) != 0) + if ((gz != NULL && gzclose(gz) != 0) || (gz == NULL && iFd > 0 && close(iFd) != 0)) Res &= _error->Errno("close",_("Problem closing the file")); iFd = -1; + gz = NULL; if ((Flags & Fail) == Fail && (Flags & DelOnFail) == DelOnFail && FileName.empty() == false) diff --git a/apt-pkg/contrib/fileutl.h b/apt-pkg/contrib/fileutl.h index 85a94898c..9925bbed4 100644 --- a/apt-pkg/contrib/fileutl.h +++ b/apt-pkg/contrib/fileutl.h @@ -25,6 +25,8 @@ #include #include +#include + using std::string; class FileFd @@ -36,6 +38,7 @@ class FileFd HitEof = (1<<3)}; unsigned long Flags; string FileName; + gzFile gz; public: enum OpenMode {ReadOnly,WriteEmpty,WriteExists,WriteAny,WriteTemp}; @@ -69,12 +72,12 @@ class FileFd inline string &Name() {return FileName;}; FileFd(string FileName,OpenMode Mode,unsigned long Perms = 0666) : iFd(-1), - Flags(0) + Flags(0), gz(NULL) { Open(FileName,Mode,Perms); }; - FileFd(int Fd = -1) : iFd(Fd), Flags(AutoClose) {}; - FileFd(int Fd,bool) : iFd(Fd), Flags(0) {}; + FileFd(int Fd = -1) : iFd(Fd), Flags(AutoClose), gz(NULL) {}; + FileFd(int Fd,bool) : iFd(Fd), Flags(0), gz(NULL) {}; virtual ~FileFd(); }; diff --git a/apt-pkg/makefile b/apt-pkg/makefile index bdd49c089..4cf07f3a8 100644 --- a/apt-pkg/makefile +++ b/apt-pkg/makefile @@ -14,7 +14,7 @@ include ../buildlib/libversion.mak LIBRARY=apt-pkg MAJOR=$(LIBAPTPKG_MAJOR) MINOR=$(LIBAPTPKG_RELEASE) -SLIBS=$(PTHREADLIB) $(INTLLIBS) -lutil -ldl +SLIBS=$(PTHREADLIB) $(INTLLIBS) -lutil -ldl -lz APT_DOMAIN:=libapt-pkg$(LIBAPTPKG_MAJOR) # Source code for the contributed non-core things diff --git a/debian/changelog b/debian/changelog index bc3da3679..2fba94d7c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,14 @@ apt (0.7.26~exp5) UNRELEASED; urgency=low + [ Christian Perrier ] * Slovak translation update. Closes: #581159 * Italian translation update. Closes: #581742 + [ Martin Pitt ] + * apt-pkg/contrib/fileutl.{h,cc}: + - Add support for transparent reading of gzipped files. + - Link against zlib (in apt-pkg/makefile) and add zlib build dependency. + -- Christian Perrier Tue, 11 May 2010 19:52:00 +0200 apt (0.7.26~exp4) unstable; urgency=low diff --git a/debian/control b/debian/control index 0c6f6b16d..58916a2b9 100644 --- a/debian/control +++ b/debian/control @@ -6,7 +6,7 @@ Uploaders: Michael Vogt , Otavio Salvador , Christian Perrier , Daniel Burrows , Luca Bruno , Julian Andres Klode Standards-Version: 3.8.4 -Build-Depends: debhelper (>= 5.0), libdb-dev, gettext (>= 0.12), libcurl4-gnutls-dev | libcurl3-gnutls-dev (>= 7.15.5), debiandoc-sgml, xsltproc, docbook-xsl, po4a (>= 0.34-2), autotools-dev +Build-Depends: debhelper (>= 5.0), libdb-dev, gettext (>= 0.12), libcurl4-gnutls-dev | libcurl3-gnutls-dev (>= 7.15.5), zlib1g-dev | libz-dev, debiandoc-sgml, xsltproc, docbook-xsl, po4a (>= 0.34-2), autotools-dev Vcs-Bzr: http://bzr.debian.org/apt/debian-sid/ Package: apt -- cgit v1.2.3 From ec7a129eeb1611ec097bc99a148d6d3a3dccf044 Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Wed, 9 Jun 2010 14:09:42 +0200 Subject: * apt-pkg/deb/debindexfile.cc: - If we do not find uncompressed package/source/translation indexes, look for gzip compressed ones. --- apt-pkg/deb/debindexfile.cc | 22 +++++++++++++++++++--- debian/changelog | 3 +++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/apt-pkg/deb/debindexfile.cc b/apt-pkg/deb/debindexfile.cc index 7379ca997..e87c21f13 100644 --- a/apt-pkg/deb/debindexfile.cc +++ b/apt-pkg/deb/debindexfile.cc @@ -106,8 +106,14 @@ string debSourcesIndex::Info(const char *Type) const /* */ inline string debSourcesIndex::IndexFile(const char *Type) const { - return URItoFileName(IndexURI(Type)); + string s = URItoFileName(IndexURI(Type)); + string sgzip = s + ".gz"; + if (!FileExists(s) && FileExists(sgzip)) + return sgzip; + else + return s; } + string debSourcesIndex::IndexURI(const char *Type) const { string Res; @@ -213,7 +219,12 @@ string debPackagesIndex::Info(const char *Type) const /* */ inline string debPackagesIndex::IndexFile(const char *Type) const { - return _config->FindDir("Dir::State::lists") + URItoFileName(IndexURI(Type)); + string s =_config->FindDir("Dir::State::lists") + URItoFileName(IndexURI(Type)); + string sgzip = s + ".gz"; + if (!FileExists(s) && FileExists(sgzip)) + return sgzip; + else + return s; } string debPackagesIndex::IndexURI(const char *Type) const { @@ -340,7 +351,12 @@ debTranslationsIndex::debTranslationsIndex(string URI,string Dist,string Section /* */ inline string debTranslationsIndex::IndexFile(const char *Type) const { - return _config->FindDir("Dir::State::lists") + URItoFileName(IndexURI(Type)); + string s =_config->FindDir("Dir::State::lists") + URItoFileName(IndexURI(Type)); + string sgzip = s + ".gz"; + if (!FileExists(s) && FileExists(sgzip)) + return sgzip; + else + return s; } string debTranslationsIndex::IndexURI(const char *Type) const { diff --git a/debian/changelog b/debian/changelog index 2fba94d7c..80c504b99 100644 --- a/debian/changelog +++ b/debian/changelog @@ -8,6 +8,9 @@ apt (0.7.26~exp5) UNRELEASED; urgency=low * apt-pkg/contrib/fileutl.{h,cc}: - Add support for transparent reading of gzipped files. - Link against zlib (in apt-pkg/makefile) and add zlib build dependency. + * apt-pkg/deb/debindexfile.cc: + - If we do not find uncompressed package/source/translation indexes, look + for gzip compressed ones. -- Christian Perrier Tue, 11 May 2010 19:52:00 +0200 -- cgit v1.2.3 From 01606def78105c9d64f12c89e387d37ed46925b6 Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Thu, 10 Jun 2010 13:20:27 +0200 Subject: * apt-pkg/acquire-item.cc: - If the Acquire::GzipIndexes option is true and we download a gzipped index file, keep it as it is (and rename to .gz) instead of uncompressing it. --- apt-pkg/acquire-item.cc | 20 +++++++++++++++++++- debian/changelog | 4 ++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index 6d4336425..eab34e26c 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -620,6 +620,8 @@ string pkgAcqIndex::Custom600Headers() { string Final = _config->FindDir("Dir::State::lists"); Final += URItoFileName(RealURI); + if (_config->FindB("Acquire::GzipIndexes",false)) + Final += ".gz"; struct stat Buf; if (stat(Final.c_str(),&Buf) != 0) @@ -714,6 +716,23 @@ void pkgAcqIndex::Done(string Message,unsigned long Size,string Hash, Erase = false; Complete = true; + string compExt = flExtension(flNotDir(URI(Desc.URI).Path)); + + // If we enable compressed indexes and already have gzip, keep it + if (_config->FindB("Acquire::GzipIndexes",false) && compExt == "gz") { + string FinalFile = _config->FindDir("Dir::State::lists"); + FinalFile += URItoFileName(RealURI) + ".gz"; + //if(Debug) + // std::clog << "pkgAcqIndex: keeping gzipped " << FinalFile << endl; + Rename(DestFile,FinalFile); + chmod(FinalFile.c_str(),0644); + + // Update DestFile for .gz suffix so that the clean operation keeps it + DestFile = _config->FindDir("Dir::State::lists") + "partial/"; + DestFile += URItoFileName(RealURI) + ".gz"; + return; + } + // Handle the unzipd case string FileName = LookupTag(Message,"Alt-Filename"); if (FileName.empty() == false) @@ -746,7 +765,6 @@ void pkgAcqIndex::Done(string Message,unsigned long Size,string Hash, else Local = true; - string compExt = flExtension(flNotDir(URI(Desc.URI).Path)); string decompProg; // get the binary name for your used compression type diff --git a/debian/changelog b/debian/changelog index 80c504b99..4122a728e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -11,6 +11,10 @@ apt (0.7.26~exp5) UNRELEASED; urgency=low * apt-pkg/deb/debindexfile.cc: - If we do not find uncompressed package/source/translation indexes, look for gzip compressed ones. + * apt-pkg/acquire-item.cc: + - If the Acquire::GzipIndexes option is true and we download a gzipped + index file, keep it as it is (and rename to .gz) instead of + uncompressing it. -- Christian Perrier Tue, 11 May 2010 19:52:00 +0200 -- cgit v1.2.3 From 6617de4d12e2bae1a463af2a6631dd2f109da7be Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Thu, 10 Jun 2010 14:23:24 +0200 Subject: mention abi break in changelog --- debian/changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/changelog b/debian/changelog index 4122a728e..7facf6f80 100644 --- a/debian/changelog +++ b/debian/changelog @@ -8,6 +8,8 @@ apt (0.7.26~exp5) UNRELEASED; urgency=low * apt-pkg/contrib/fileutl.{h,cc}: - Add support for transparent reading of gzipped files. - Link against zlib (in apt-pkg/makefile) and add zlib build dependency. + - [ABI BREAK] This introduces a new protected member of FileFD and changes + the behaviour of FileFd for reading gzipped files. * apt-pkg/deb/debindexfile.cc: - If we do not find uncompressed package/source/translation indexes, look for gzip compressed ones. -- cgit v1.2.3 From 31e1187be48846395cb3b57f0e9a731261a1484c Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Thu, 10 Jun 2010 15:19:10 +0200 Subject: * Add test/test-indexes.sh: - Test behaviour of index retrieval and usage, in particular with uncompressed and gzip compressed indexes. --- debian/changelog | 3 ++ test/test-indexes.sh | 106 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100755 test/test-indexes.sh diff --git a/debian/changelog b/debian/changelog index 7facf6f80..bd328fd08 100644 --- a/debian/changelog +++ b/debian/changelog @@ -17,6 +17,9 @@ apt (0.7.26~exp5) UNRELEASED; urgency=low - If the Acquire::GzipIndexes option is true and we download a gzipped index file, keep it as it is (and rename to .gz) instead of uncompressing it. + * Add test/test-indexes.sh: + - Test behaviour of index retrieval and usage, in particular with + uncompressed and gzip compressed indexes. -- Christian Perrier Tue, 11 May 2010 19:52:00 +0200 diff --git a/test/test-indexes.sh b/test/test-indexes.sh new file mode 100755 index 000000000..d3f5e7cd3 --- /dev/null +++ b/test/test-indexes.sh @@ -0,0 +1,106 @@ +#!/bin/sh -e + +# Test behaviour of index retrieval and usage, in particular with uncompressed +# and gzip compressed indexes. +# Author: Martin Pitt +# (C) 2010 Canonical Ltd. + +BUILDDIR=$(readlink -f $(dirname $0)/../build) + +TEST_SOURCE="deb http://ftp.debian.org/debian unstable contrib" +TEST_SOURCE_KEYID=55BE302B +GPG_KEYSERVER=gpg-keyserver.de +# should be a small package with dependencies satisfiable in TEST_SOURCE, i. e. +# ideally no depends at all +TEST_PKG="python-psyco-doc" + +export LD_LIBRARY_PATH=$BUILDDIR/bin + +OPTS="-o RootDir=. -o Dir::Bin::Methods=$BUILDDIR/bin/methods -o Debug::NoLocking=true" +DEBUG="" +#DEBUG="-o Debug::pkgCacheGen=true" +#DEBUG="-o Debug::pkgAcquire=true" +APT_GET="$BUILDDIR/bin/apt-get $OPTS $DEBUG" +APT_CACHE="$BUILDDIR/bin/apt-cache $OPTS $DEBUG" + +[ -x "$BUILDDIR/bin/apt-get" ] || { + echo "please build the tree first" >&2 + exit 1 +} + +echo "---- building sandbox----" +WORKDIR=$(mktemp -d) +trap "cd /; rm -rf $WORKDIR" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM +cd $WORKDIR + +rm -fr etc var +rm -f home +ln -s /home home +mkdir -p etc/apt/preferences.d etc/apt/trusted.gpg.d var/cache/apt/archives/partial var/lib/apt/lists/partial var/lib/dpkg +cp /etc/apt/trusted.gpg etc/apt +touch var/lib/dpkg/status +echo "$TEST_SOURCE" > etc/apt/sources.list + +# get keyring +gpg --no-options --no-default-keyring --secret-keyring etc/apt/secring.gpg --trustdb-name etc/apt/trustdb.gpg --keyring etc/apt/trusted.gpg --primary-keyring etc/apt/trusted.gpg --keyserver $GPG_KEYSERVER --recv-keys $TEST_SOURCE_KEYID + +echo "---- uncompressed update ----" +$APT_GET update +test -e var/lib/apt/lists/*_Packages +! test -e var/lib/apt/lists/*_Packages.gz + +echo "---- uncompressed cache ----" +$APT_CACHE show $TEST_PKG | grep -q ^Version: +# again (with cache) +$APT_CACHE show $TEST_PKG | grep -q ^Version: +rm var/cache/apt/*.bin +$APT_CACHE policy $TEST_PKG | grep -q '500 http://' +# again (with cache) +$APT_CACHE policy $TEST_PKG | grep -q '500 http://' + +echo "---- uncompressed install ----" +$APT_GET install -d $TEST_PKG +test -e var/cache/apt/archives/$TEST_PKG*.deb +$APT_GET clean +! test -e var/cache/apt/archives/$TEST_PKG*.deb + +echo "----- uncompressed update with preexisting indexes, no pdiff ----" +$APT_GET -o Acquire::PDiffs=false update +test -e var/lib/apt/lists/*_Packages +! test -e var/lib/apt/lists/*_Packages.gz + +echo "----- uncompressed update with preexisting indexes, with pdiff ----" +$APT_GET -o Acquire::PDiffs=true update +test -e var/lib/apt/lists/*_Packages +! test -e var/lib/apt/lists/*_Packages.gz + +echo "----- compressed update ----" +find var/lib/apt/lists/ -type f | xargs -r rm +$APT_GET -o Acquire::GzipIndexes=true update +! test -e var/lib/apt/lists/*_Packages +test -e var/lib/apt/lists/*_Packages.gz + +echo "---- compressed cache ----" +$APT_CACHE show $TEST_PKG | grep -q ^Version: +# again (with cache) +$APT_CACHE show $TEST_PKG | grep -q ^Version: +rm var/cache/apt/*.bin +$APT_CACHE policy $TEST_PKG | grep -q '500 http://' +# again (with cache) +$APT_CACHE policy $TEST_PKG | grep -q '500 http://' + +echo "---- compressed install ----" +$APT_GET install -d $TEST_PKG +! test -e var/cache/apt/archives/$TEST_PKG*.deb + +echo "----- compressed update with preexisting indexes, no pdiff ----" +$APT_GET -o Acquire::PDiffs=false -o Acquire::GzipIndexes=true update +! test -e var/lib/apt/lists/*_Packages +test -e var/lib/apt/lists/*_Packages.gz + +echo "----- compressed update with preexisting indexes, with pdiff ----" +$APT_GET -o Acquire::PDiffs=true -o Acquire::GzipIndexes=true update +! test -e var/lib/apt/lists/*_Packages +test -e var/lib/apt/lists/*_Packages.gz + +echo "---- ALL TESTS PASSED ----" -- cgit v1.2.3 From fdd739c74dcf266a7cb2f3688ea11afec4055f2c Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Fri, 11 Jun 2010 10:01:27 +0200 Subject: * debian/rules: - Make DEB_BUILD_OPTIONS=noopt actually work by passing the right CXXFLAGS. --- debian/changelog | 3 +++ debian/rules | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index bd328fd08..483fff9c3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,6 +5,9 @@ apt (0.7.26~exp5) UNRELEASED; urgency=low * Italian translation update. Closes: #581742 [ Martin Pitt ] + * debian/rules: + - Make DEB_BUILD_OPTIONS=noopt actually work by passing the right + CXXFLAGS. * apt-pkg/contrib/fileutl.{h,cc}: - Add support for transparent reading of gzipped files. - Link against zlib (in apt-pkg/makefile) and add zlib build dependency. diff --git a/debian/rules b/debian/rules index 7677708b2..450f3e0f6 100755 --- a/debian/rules +++ b/debian/rules @@ -108,7 +108,7 @@ build/configure-stamp: configure dh_testdir -mkdir build cp COPYING debian/copyright - cd build && CXXFLAGS="$(confcxxflags)" ../configure $(confflags) + cd build && CXXFLAGS="$(CXXFLAGS)" ../configure $(confflags) touch $@ build/build-stamp: build/configure-stamp -- cgit v1.2.3 From bb109d0b14218cde4fccc45856cf67e5513c0cc9 Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Fri, 11 Jun 2010 10:43:43 +0200 Subject: Fix compressed index retrieval for current timestamps Fix a thinko in r1973, which did the Acquire::GzipIndexes test ealier than the IMS-Hit test. This led to rename errors. --- apt-pkg/acquire-item.cc | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index eab34e26c..83fb5328b 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -716,23 +716,6 @@ void pkgAcqIndex::Done(string Message,unsigned long Size,string Hash, Erase = false; Complete = true; - string compExt = flExtension(flNotDir(URI(Desc.URI).Path)); - - // If we enable compressed indexes and already have gzip, keep it - if (_config->FindB("Acquire::GzipIndexes",false) && compExt == "gz") { - string FinalFile = _config->FindDir("Dir::State::lists"); - FinalFile += URItoFileName(RealURI) + ".gz"; - //if(Debug) - // std::clog << "pkgAcqIndex: keeping gzipped " << FinalFile << endl; - Rename(DestFile,FinalFile); - chmod(FinalFile.c_str(),0644); - - // Update DestFile for .gz suffix so that the clean operation keeps it - DestFile = _config->FindDir("Dir::State::lists") + "partial/"; - DestFile += URItoFileName(RealURI) + ".gz"; - return; - } - // Handle the unzipd case string FileName = LookupTag(Message,"Alt-Filename"); if (FileName.empty() == false) @@ -765,8 +748,24 @@ void pkgAcqIndex::Done(string Message,unsigned long Size,string Hash, else Local = true; + string compExt = flExtension(flNotDir(URI(Desc.URI).Path)); string decompProg; + // If we enable compressed indexes and already have gzip, keep it + if (_config->FindB("Acquire::GzipIndexes",false) && compExt == "gz") { + string FinalFile = _config->FindDir("Dir::State::lists"); + FinalFile += URItoFileName(RealURI) + ".gz"; + //if(Debug) + // std::clog << "pkgAcqIndex: keeping gzipped " << FinalFile << endl; + Rename(DestFile,FinalFile); + chmod(FinalFile.c_str(),0644); + + // Update DestFile for .gz suffix so that the clean operation keeps it + DestFile = _config->FindDir("Dir::State::lists") + "partial/"; + DestFile += URItoFileName(RealURI) + ".gz"; + return; + } + // get the binary name for your used compression type decompProg = _config->Find(string("Acquire::CompressionTypes::").append(compExt),""); if(decompProg.empty() == false); -- cgit v1.2.3 From c8c6e61bb039136410a95dac716129d371d14d19 Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Fri, 11 Jun 2010 10:56:56 +0200 Subject: * doc/apt.conf.5.xml: - Document the new Acquire::GzipIndexes option. --- debian/changelog | 2 ++ doc/apt.conf.5.xml | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/debian/changelog b/debian/changelog index 483fff9c3..85e80bb90 100644 --- a/debian/changelog +++ b/debian/changelog @@ -20,6 +20,8 @@ apt (0.7.26~exp5) UNRELEASED; urgency=low - If the Acquire::GzipIndexes option is true and we download a gzipped index file, keep it as it is (and rename to .gz) instead of uncompressing it. + * doc/apt.conf.5.xml: + - Document the new Acquire::GzipIndexes option. * Add test/test-indexes.sh: - Test behaviour of index retrieval and usage, in particular with uncompressed and gzip compressed indexes. diff --git a/doc/apt.conf.5.xml b/doc/apt.conf.5.xml index c13ad4867..410489a73 100644 --- a/doc/apt.conf.5.xml +++ b/doc/apt.conf.5.xml @@ -411,6 +411,15 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";}; really prefer uncompressed files to support the usage of local mirrors. + GzipIndexes + + When downloading gzip compressed indexes (Packages, Sources, or + Translations), keep them gzip compressed locally instead of unpacking + them. This saves quite a lot of disk space at the expense of more CPU + requirements when building the local package caches. False by default. + + + Languages The Languages subsection controls which Translation files are downloaded and in which order APT tries to display the Description-Translations. APT will try to display the first -- cgit v1.2.3 From de2c243cd22b3bad3c27a5f3f7a35f0698cf07f1 Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Fri, 11 Jun 2010 11:04:12 +0200 Subject: * doc/po/apt-doc.pot, doc/po/de.po: - German translation of new Acquire::GzipIndexes option. --- debian/changelog | 2 + doc/po/apt-doc.pot | 254 ++++++++++++++++++++++++++------------------------- doc/po/de.po | 259 ++++++++++++++++++++++++++++------------------------- 3 files changed, 275 insertions(+), 240 deletions(-) diff --git a/debian/changelog b/debian/changelog index 85e80bb90..7caa401fc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -22,6 +22,8 @@ apt (0.7.26~exp5) UNRELEASED; urgency=low uncompressing it. * doc/apt.conf.5.xml: - Document the new Acquire::GzipIndexes option. + * doc/po/apt-doc.pot, doc/po/de.po: + - German translation of new Acquire::GzipIndexes option. * Add test/test-indexes.sh: - Test behaviour of index retrieval and usage, in particular with uncompressed and gzip compressed indexes. diff --git a/doc/po/apt-doc.pot b/doc/po/apt-doc.pot index f3b50640c..6b9240d4f 100644 --- a/doc/po/apt-doc.pot +++ b/doc/po/apt-doc.pot @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2010-02-18 20:53+0100\n" +"POT-Creation-Date: 2010-06-11 10:56+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1284,7 +1284,7 @@ msgid "" msgstr "" #. type: Content of: -#: apt-cache.8.xml:281 apt-config.8.xml:93 apt-extracttemplates.1.xml:56 apt-ftparchive.1.xml:493 apt-get.8.xml:319 apt-mark.8.xml:89 apt-sortpkgs.1.xml:54 apt.conf.5.xml:502 apt.conf.5.xml:524 +#: apt-cache.8.xml:281 apt-config.8.xml:93 apt-extracttemplates.1.xml:56 apt-ftparchive.1.xml:493 apt-get.8.xml:319 apt-mark.8.xml:89 apt-sortpkgs.1.xml:54 apt.conf.5.xml:511 apt.conf.5.xml:533 msgid "options" msgstr "" @@ -1482,7 +1482,7 @@ msgid "&apt-commonoptions;" msgstr "" #. type: Content of: -#: apt-cache.8.xml:361 apt-get.8.xml:559 apt-key.8.xml:153 apt-mark.8.xml:122 apt.conf.5.xml:1035 apt_preferences.5.xml:630 +#: apt-cache.8.xml:361 apt-get.8.xml:559 apt-key.8.xml:153 apt-mark.8.xml:122 apt.conf.5.xml:1044 apt_preferences.5.xml:630 msgid "Files" msgstr "" @@ -1492,7 +1492,7 @@ msgid "&file-sourceslist; &file-statelists;" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-cache.8.xml:368 apt-cdrom.8.xml:155 apt-config.8.xml:103 apt-extracttemplates.1.xml:74 apt-ftparchive.1.xml:592 apt-get.8.xml:569 apt-key.8.xml:174 apt-mark.8.xml:133 apt-secure.8.xml:181 apt-sortpkgs.1.xml:69 apt.conf.5.xml:1041 apt_preferences.5.xml:637 sources.list.5.xml:233 +#: apt-cache.8.xml:368 apt-cdrom.8.xml:155 apt-config.8.xml:103 apt-extracttemplates.1.xml:74 apt-ftparchive.1.xml:592 apt-get.8.xml:569 apt-key.8.xml:174 apt-mark.8.xml:133 apt-secure.8.xml:181 apt-sortpkgs.1.xml:69 apt.conf.5.xml:1050 apt_preferences.5.xml:637 sources.list.5.xml:233 msgid "See Also" msgstr "" @@ -2806,7 +2806,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-ftparchive.1.xml:581 apt.conf.5.xml:1029 apt_preferences.5.xml:477 sources.list.5.xml:193 +#: apt-ftparchive.1.xml:581 apt.conf.5.xml:1038 apt_preferences.5.xml:477 sources.list.5.xml:193 msgid "Examples" msgstr "" @@ -5043,11 +5043,25 @@ msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> #: apt.conf.5.xml:414 +msgid "GzipIndexes" +msgstr "" + +#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml:416 +msgid "" +"When downloading <literal>gzip</literal> compressed indexes (Packages, " +"Sources, or Translations), keep them gzip compressed locally instead of " +"unpacking them. This saves quite a lot of disk space at the expense of more " +"CPU requirements when building the local package caches. False by default." +msgstr "" + +#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> +#: apt.conf.5.xml:423 msgid "Languages" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:415 +#: apt.conf.5.xml:424 msgid "" "The Languages subsection controls which <filename>Translation</filename> " "files are downloaded and in which order APT tries to display the " @@ -5060,13 +5074,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><programlisting> -#: apt.conf.5.xml:431 +#: apt.conf.5.xml:440 #, no-wrap msgid "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:421 +#: apt.conf.5.xml:430 msgid "" "The default list includes \"environment\" and " "\"en\". \"<literal>environment</literal>\" has a special meaning here: It " @@ -5097,12 +5111,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:438 +#: apt.conf.5.xml:447 msgid "Directories" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:440 +#: apt.conf.5.xml:449 msgid "" "The <literal>Dir::State</literal> section has directories that pertain to " "local state information. <literal>lists</literal> is the directory to place " @@ -5114,7 +5128,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:447 +#: apt.conf.5.xml:456 msgid "" "<literal>Dir::Cache</literal> contains locations pertaining to local cache " "information, such as the two package caches <literal>srcpkgcache</literal> " @@ -5127,7 +5141,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:456 +#: apt.conf.5.xml:465 msgid "" "<literal>Dir::Etc</literal> contains the location of configuration files, " "<literal>sourcelist</literal> gives the location of the sourcelist and " @@ -5137,7 +5151,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:462 +#: apt.conf.5.xml:471 msgid "" "The <literal>Dir::Parts</literal> setting reads in all the config fragments " "in lexical order from the directory specified. After this is done then the " @@ -5145,7 +5159,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:466 +#: apt.conf.5.xml:475 msgid "" "Binary programs are pointed to by " "<literal>Dir::Bin</literal>. <literal>Dir::Bin::Methods</literal> specifies " @@ -5157,7 +5171,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:474 +#: apt.conf.5.xml:483 msgid "" "The configuration item <literal>RootDir</literal> has a special meaning. If " "set, all paths in <literal>Dir::</literal> will be relative to " @@ -5170,12 +5184,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:487 +#: apt.conf.5.xml:496 msgid "APT in DSelect" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:489 +#: apt.conf.5.xml:498 msgid "" "When APT is used as a &dselect; method several configuration directives " "control the default behaviour. These are in the <literal>DSelect</literal> " @@ -5183,12 +5197,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:493 +#: apt.conf.5.xml:502 msgid "Clean" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:494 +#: apt.conf.5.xml:503 msgid "" "Cache Clean mode; this value may be one of always, prompt, auto, pre-auto " "and never. always and prompt will remove all packages from the cache after " @@ -5199,50 +5213,50 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:503 +#: apt.conf.5.xml:512 msgid "" "The contents of this variable is passed to &apt-get; as command line options " "when it is run for the install phase." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:507 +#: apt.conf.5.xml:516 msgid "Updateoptions" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:508 +#: apt.conf.5.xml:517 msgid "" "The contents of this variable is passed to &apt-get; as command line options " "when it is run for the update phase." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:512 +#: apt.conf.5.xml:521 msgid "PromptAfterUpdate" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:513 +#: apt.conf.5.xml:522 msgid "" "If true the [U]pdate operation in &dselect; will always prompt to continue. " "The default is to prompt only on error." msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:519 +#: apt.conf.5.xml:528 msgid "How APT calls dpkg" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:520 +#: apt.conf.5.xml:529 msgid "" "Several configuration directives control how APT invokes &dpkg;. These are " "in the <literal>DPkg</literal> section." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:525 +#: apt.conf.5.xml:534 msgid "" "This is a list of options to pass to dpkg. The options must be specified " "using the list notation and each list item is passed as a single argument to " @@ -5250,17 +5264,17 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:530 +#: apt.conf.5.xml:539 msgid "Pre-Invoke" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:530 +#: apt.conf.5.xml:539 msgid "Post-Invoke" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:531 +#: apt.conf.5.xml:540 msgid "" "This is a list of shell commands to run before/after invoking &dpkg;. Like " "<literal>options</literal> this must be specified in list notation. The " @@ -5269,12 +5283,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:537 +#: apt.conf.5.xml:546 msgid "Pre-Install-Pkgs" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:538 +#: apt.conf.5.xml:547 msgid "" "This is a list of shell commands to run before invoking dpkg. Like " "<literal>options</literal> this must be specified in list notation. The " @@ -5284,7 +5298,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:544 +#: apt.conf.5.xml:553 msgid "" "Version 2 of this protocol dumps more information, including the protocol " "version, the APT configuration space and the packages, files and versions " @@ -5295,36 +5309,36 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:551 +#: apt.conf.5.xml:560 msgid "Run-Directory" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:552 +#: apt.conf.5.xml:561 msgid "" "APT chdirs to this directory before invoking dpkg, the default is " "<filename>/</filename>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:556 +#: apt.conf.5.xml:565 msgid "Build-options" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:557 +#: apt.conf.5.xml:566 msgid "" "These options are passed to &dpkg-buildpackage; when compiling packages, the " "default is to disable signing and produce all binaries." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt.conf.5.xml:562 +#: apt.conf.5.xml:571 msgid "dpkg trigger usage (and related options)" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt.conf.5.xml:563 +#: apt.conf.5.xml:572 msgid "" "APT can call dpkg in a way so it can make aggressive use of triggers over " "multiply calls of dpkg. Without further options dpkg will use triggers only " @@ -5339,7 +5353,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><literallayout> -#: apt.conf.5.xml:578 +#: apt.conf.5.xml:587 #, no-wrap msgid "" "DPkg::NoTriggers \"true\";\n" @@ -5349,7 +5363,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt.conf.5.xml:572 +#: apt.conf.5.xml:581 msgid "" "Note that it is not guaranteed that APT will support these options or that " "these options will not cause (big) trouble in the future. If you have " @@ -5363,12 +5377,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:584 +#: apt.conf.5.xml:593 msgid "DPkg::NoTriggers" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:585 +#: apt.conf.5.xml:594 msgid "" "Add the no triggers flag to all dpkg calls (except the ConfigurePending " "call). See &dpkg; if you are interested in what this actually means. In " @@ -5380,12 +5394,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:592 +#: apt.conf.5.xml:601 msgid "PackageManager::Configure" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:593 +#: apt.conf.5.xml:602 msgid "" "Valid values are \"<literal>all</literal>\", \"<literal>smart</literal>\" " "and \"<literal>no</literal>\". \"<literal>all</literal>\" is the default " @@ -5402,12 +5416,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:603 +#: apt.conf.5.xml:612 msgid "DPkg::ConfigurePending" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:604 +#: apt.conf.5.xml:613 msgid "" "If this option is set apt will call <command>dpkg --configure " "--pending</command> to let dpkg handle all required configurations and " @@ -5419,12 +5433,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:610 +#: apt.conf.5.xml:619 msgid "DPkg::TriggersPending" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:611 +#: apt.conf.5.xml:620 msgid "" "Useful for <literal>smart</literal> configuration as a package which has " "pending triggers is not considered as <literal>installed</literal> and dpkg " @@ -5434,12 +5448,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:616 +#: apt.conf.5.xml:625 msgid "PackageManager::UnpackAll" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:617 +#: apt.conf.5.xml:626 msgid "" "As the configuration can be deferred to be done at the end by dpkg it can be " "tried to order the unpack series only by critical needs, e.g. by " @@ -5451,12 +5465,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:624 +#: apt.conf.5.xml:633 msgid "OrderList::Score::Immediate" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:632 +#: apt.conf.5.xml:641 #, no-wrap msgid "" "OrderList::Score {\n" @@ -5468,7 +5482,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:625 +#: apt.conf.5.xml:634 msgid "" "Essential packages (and there dependencies) should be configured immediately " "after unpacking. It will be a good idea to do this quite early in the " @@ -5482,12 +5496,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:645 +#: apt.conf.5.xml:654 msgid "Periodic and Archives options" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:646 +#: apt.conf.5.xml:655 msgid "" "<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups " "of options configure behavior of apt periodic updates, which is done by " @@ -5496,12 +5510,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:654 +#: apt.conf.5.xml:663 msgid "Debug options" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:656 +#: apt.conf.5.xml:665 msgid "" "Enabling options in the <literal>Debug::</literal> section will cause " "debugging information to be sent to the standard error stream of the program " @@ -5512,7 +5526,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:667 +#: apt.conf.5.xml:676 msgid "" "<literal>Debug::pkgProblemResolver</literal> enables output about the " "decisions made by <literal>dist-upgrade, upgrade, install, remove, " @@ -5520,7 +5534,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:675 +#: apt.conf.5.xml:684 msgid "" "<literal>Debug::NoLocking</literal> disables all file locking. This can be " "used to run some operations (for instance, <literal>apt-get -s " @@ -5528,7 +5542,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:684 +#: apt.conf.5.xml:693 msgid "" "<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each " "time that <literal>apt</literal> invokes &dpkg;." @@ -5538,110 +5552,110 @@ msgstr "" #. motivating example, except I haven't a clue why you'd want #. to do this. #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:692 +#: apt.conf.5.xml:701 msgid "" "<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data " "in CDROM IDs." msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:702 +#: apt.conf.5.xml:711 msgid "A full list of debugging options to apt follows." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:707 +#: apt.conf.5.xml:716 msgid "<literal>Debug::Acquire::cdrom</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:711 +#: apt.conf.5.xml:720 msgid "Print information related to accessing <literal>cdrom://</literal> sources." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:718 +#: apt.conf.5.xml:727 msgid "<literal>Debug::Acquire::ftp</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:722 +#: apt.conf.5.xml:731 msgid "Print information related to downloading packages using FTP." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:729 +#: apt.conf.5.xml:738 msgid "<literal>Debug::Acquire::http</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:733 +#: apt.conf.5.xml:742 msgid "Print information related to downloading packages using HTTP." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:740 +#: apt.conf.5.xml:749 msgid "<literal>Debug::Acquire::https</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:744 +#: apt.conf.5.xml:753 msgid "Print information related to downloading packages using HTTPS." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:751 +#: apt.conf.5.xml:760 msgid "<literal>Debug::Acquire::gpgv</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:755 +#: apt.conf.5.xml:764 msgid "" "Print information related to verifying cryptographic signatures using " "<literal>gpg</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:762 +#: apt.conf.5.xml:771 msgid "<literal>Debug::aptcdrom</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:766 +#: apt.conf.5.xml:775 msgid "" "Output information about the process of accessing collections of packages " "stored on CD-ROMs." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:773 +#: apt.conf.5.xml:782 msgid "<literal>Debug::BuildDeps</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:776 +#: apt.conf.5.xml:785 msgid "Describes the process of resolving build-dependencies in &apt-get;." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:783 +#: apt.conf.5.xml:792 msgid "<literal>Debug::Hashes</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:786 +#: apt.conf.5.xml:795 msgid "" "Output each cryptographic hash that is generated by the " "<literal>apt</literal> libraries." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:793 +#: apt.conf.5.xml:802 msgid "<literal>Debug::IdentCDROM</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:796 +#: apt.conf.5.xml:805 msgid "" "Do not include information from <literal>statfs</literal>, namely the number " "of used and free blocks on the CD-ROM filesystem, when generating an ID for " @@ -5649,92 +5663,92 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:804 +#: apt.conf.5.xml:813 msgid "<literal>Debug::NoLocking</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:807 +#: apt.conf.5.xml:816 msgid "" "Disable all file locking. For instance, this will allow two instances of " "<quote><literal>apt-get update</literal></quote> to run at the same time." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:815 +#: apt.conf.5.xml:824 msgid "<literal>Debug::pkgAcquire</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:819 +#: apt.conf.5.xml:828 msgid "Log when items are added to or removed from the global download queue." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:826 +#: apt.conf.5.xml:835 msgid "<literal>Debug::pkgAcquire::Auth</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:829 +#: apt.conf.5.xml:838 msgid "" "Output status messages and errors related to verifying checksums and " "cryptographic signatures of downloaded files." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:836 +#: apt.conf.5.xml:845 msgid "<literal>Debug::pkgAcquire::Diffs</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:839 +#: apt.conf.5.xml:848 msgid "" "Output information about downloading and applying package index list diffs, " "and errors relating to package index list diffs." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:847 +#: apt.conf.5.xml:856 msgid "<literal>Debug::pkgAcquire::RRed</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:851 +#: apt.conf.5.xml:860 msgid "" "Output information related to patching apt package lists when downloading " "index diffs instead of full indices." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:858 +#: apt.conf.5.xml:867 msgid "<literal>Debug::pkgAcquire::Worker</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:862 +#: apt.conf.5.xml:871 msgid "Log all interactions with the sub-processes that actually perform downloads." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:869 +#: apt.conf.5.xml:878 msgid "<literal>Debug::pkgAutoRemove</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:873 +#: apt.conf.5.xml:882 msgid "" "Log events related to the automatically-installed status of packages and to " "the removal of unused packages." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:880 +#: apt.conf.5.xml:889 msgid "<literal>Debug::pkgDepCache::AutoInstall</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:883 +#: apt.conf.5.xml:892 msgid "" "Generate debug messages describing which packages are being automatically " "installed to resolve dependencies. This corresponds to the initial " @@ -5744,12 +5758,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:894 +#: apt.conf.5.xml:903 msgid "<literal>Debug::pkgDepCache::Marker</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:897 +#: apt.conf.5.xml:906 msgid "" "Generate debug messages describing which package is marked as " "keep/install/remove while the ProblemResolver does his work. Each addition " @@ -5767,90 +5781,90 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:916 +#: apt.conf.5.xml:925 msgid "<literal>Debug::pkgInitConfig</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:919 +#: apt.conf.5.xml:928 msgid "Dump the default configuration to standard error on startup." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:926 +#: apt.conf.5.xml:935 msgid "<literal>Debug::pkgDPkgPM</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:929 +#: apt.conf.5.xml:938 msgid "" "When invoking &dpkg;, output the precise command line with which it is being " "invoked, with arguments separated by a single space character." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:937 +#: apt.conf.5.xml:946 msgid "<literal>Debug::pkgDPkgProgressReporting</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:940 +#: apt.conf.5.xml:949 msgid "" "Output all the data received from &dpkg; on the status file descriptor and " "any errors encountered while parsing it." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:947 +#: apt.conf.5.xml:956 msgid "<literal>Debug::pkgOrderList</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:951 +#: apt.conf.5.xml:960 msgid "" "Generate a trace of the algorithm that decides the order in which " "<literal>apt</literal> should pass packages to &dpkg;." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:959 +#: apt.conf.5.xml:968 msgid "<literal>Debug::pkgPackageManager</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:963 +#: apt.conf.5.xml:972 msgid "Output status messages tracing the steps performed when invoking &dpkg;." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:970 +#: apt.conf.5.xml:979 msgid "<literal>Debug::pkgPolicy</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:974 +#: apt.conf.5.xml:983 msgid "Output the priority of each package list on startup." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:980 +#: apt.conf.5.xml:989 msgid "<literal>Debug::pkgProblemResolver</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:984 +#: apt.conf.5.xml:993 msgid "" "Trace the execution of the dependency resolver (this applies only to what " "happens when a complex dependency problem is encountered)." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:992 +#: apt.conf.5.xml:1001 msgid "<literal>Debug::pkgProblemResolver::ShowScores</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:995 +#: apt.conf.5.xml:1004 msgid "" "Display a list of all installed packages with their calculated score used by " "the pkgProblemResolver. The description of the package is the same as " @@ -5858,32 +5872,32 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1003 +#: apt.conf.5.xml:1012 msgid "<literal>Debug::sourceList</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1007 +#: apt.conf.5.xml:1016 msgid "" "Print information about the vendors read from " "<filename>/etc/apt/vendors.list</filename>." msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:1030 +#: apt.conf.5.xml:1039 msgid "" "&configureindex; is a configuration file showing example values for all " "possible options." msgstr "" #. type: Content of: <refentry><refsect1><variablelist> -#: apt.conf.5.xml:1037 +#: apt.conf.5.xml:1046 msgid "&file-aptconf;" msgstr "" #. ? reading apt.conf #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:1042 +#: apt.conf.5.xml:1051 msgid "&apt-cache;, &apt-config;, &apt-preferences;." msgstr "" diff --git a/doc/po/de.po b/doc/po/de.po index 99d56bed3..92d9092d2 100644 --- a/doc/po/de.po +++ b/doc/po/de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: apt-doc 0.7.24\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2010-02-18 20:53+0100\n" +"POT-Creation-Date: 2010-06-11 10:56+0300\n" "PO-Revision-Date: 2009-12-31 17:41+GMT\n" "Last-Translator: Chris Leick <c.leick@vollbio.de>\n" "Language-Team: German <debian-l10n-german@lists.debian.org>\n" @@ -1751,7 +1751,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml:281 apt-config.8.xml:93 apt-extracttemplates.1.xml:56 #: apt-ftparchive.1.xml:493 apt-get.8.xml:319 apt-mark.8.xml:89 -#: apt-sortpkgs.1.xml:54 apt.conf.5.xml:502 apt.conf.5.xml:524 +#: apt-sortpkgs.1.xml:54 apt.conf.5.xml:511 apt.conf.5.xml:533 msgid "options" msgstr "Optionen" @@ -1994,7 +1994,7 @@ msgstr "&apt-commonoptions;" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:361 apt-get.8.xml:559 apt-key.8.xml:153 apt-mark.8.xml:122 -#: apt.conf.5.xml:1035 apt_preferences.5.xml:630 +#: apt.conf.5.xml:1044 apt_preferences.5.xml:630 msgid "Files" msgstr "Dateien" @@ -2007,7 +2007,7 @@ msgstr "&file-sourceslist; &file-statelists;" #: apt-cache.8.xml:368 apt-cdrom.8.xml:155 apt-config.8.xml:103 #: apt-extracttemplates.1.xml:74 apt-ftparchive.1.xml:592 apt-get.8.xml:569 #: apt-key.8.xml:174 apt-mark.8.xml:133 apt-secure.8.xml:181 -#: apt-sortpkgs.1.xml:69 apt.conf.5.xml:1041 apt_preferences.5.xml:637 +#: apt-sortpkgs.1.xml:69 apt.conf.5.xml:1050 apt_preferences.5.xml:637 #: sources.list.5.xml:233 msgid "See Also" msgstr "Siehe auch" @@ -3717,7 +3717,7 @@ msgstr "" "Dateien mit <command>apt-ftparchive</command> zu erstellen." #. type: Content of: <refentry><refsect1><title> -#: apt-ftparchive.1.xml:581 apt.conf.5.xml:1029 apt_preferences.5.xml:477 +#: apt-ftparchive.1.xml:581 apt.conf.5.xml:1038 apt_preferences.5.xml:477 #: sources.list.5.xml:193 msgid "Examples" msgstr "Beispiele" @@ -6811,11 +6811,30 @@ msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> #: apt.conf.5.xml:414 +msgid "GzipIndexes" +msgstr "GzipIndexes" + +#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml:416 +msgid "" +"When downloading <literal>gzip</literal> compressed indexes (Packages, " +"Sources, or Translations), keep them gzip compressed locally instead of " +"unpacking them. This saves quite a lot of disk space at the expense of more " +"CPU requirements when building the local package caches. False by default." +msgstr "" +"Wenn <literal>gzip</literal>-komprimierte Indizes heruntergeladen werden " +"(Packages, Sources, oder Translations), speichere sie lokal mit " +"gzip-Komprimierung. Dies spart eine Menge Festplattenplatz, aber benötigt " +"mehr CPU-Ressourcen bei der Erstellung des lokalen Paket-Caches. " +"Vorgabe ist False." + +#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> +#: apt.conf.5.xml:423 msgid "Languages" msgstr "Sprachen" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:415 +#: apt.conf.5.xml:424 #, fuzzy #| msgid "" #| "The Languages subsection controls which <filename>Translation</filename> " @@ -6847,13 +6866,13 @@ msgstr "" "hier unmögliche Werte einsetzen." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><programlisting> -#: apt.conf.5.xml:431 +#: apt.conf.5.xml:440 #, no-wrap msgid "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };" msgstr "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:421 +#: apt.conf.5.xml:430 #, fuzzy #| msgid "" #| "The default list includes \"environment\" and \"en\". " @@ -6925,12 +6944,12 @@ msgstr "" "id=\"0\"/>" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:438 +#: apt.conf.5.xml:447 msgid "Directories" msgstr "Verzeichnisse" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:440 +#: apt.conf.5.xml:449 msgid "" "The <literal>Dir::State</literal> section has directories that pertain to " "local state information. <literal>lists</literal> is the directory to place " @@ -6950,7 +6969,7 @@ msgstr "" "filename> oder <filename>./</filename> beginnen." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:447 +#: apt.conf.5.xml:456 msgid "" "<literal>Dir::Cache</literal> contains locations pertaining to local cache " "information, such as the two package caches <literal>srcpkgcache</literal> " @@ -6973,7 +6992,7 @@ msgstr "" "<literal>Dir::Cache</literal> enthalten." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:456 +#: apt.conf.5.xml:465 msgid "" "<literal>Dir::Etc</literal> contains the location of configuration files, " "<literal>sourcelist</literal> gives the location of the sourcelist and " @@ -6988,7 +7007,7 @@ msgstr "" "Konfigurationsdatei erfolgt)." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:462 +#: apt.conf.5.xml:471 msgid "" "The <literal>Dir::Parts</literal> setting reads in all the config fragments " "in lexical order from the directory specified. After this is done then the " @@ -7000,7 +7019,7 @@ msgstr "" "geladen." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:466 +#: apt.conf.5.xml:475 msgid "" "Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::" "Bin::Methods</literal> specifies the location of the method handlers and " @@ -7018,7 +7037,7 @@ msgstr "" "Programms an." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:474 +#: apt.conf.5.xml:483 msgid "" "The configuration item <literal>RootDir</literal> has a special meaning. If " "set, all paths in <literal>Dir::</literal> will be relative to " @@ -7038,12 +7057,12 @@ msgstr "" "<filename>/tmp/staging/var/lib/dpkg/status</filename> nachgesehen." #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:487 +#: apt.conf.5.xml:496 msgid "APT in DSelect" msgstr "APT in DSelect" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:489 +#: apt.conf.5.xml:498 msgid "" "When APT is used as a &dselect; method several configuration directives " "control the default behaviour. These are in the <literal>DSelect</literal> " @@ -7054,12 +7073,12 @@ msgstr "" "<literal>DSelect</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:493 +#: apt.conf.5.xml:502 msgid "Clean" msgstr "Clean" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:494 +#: apt.conf.5.xml:503 msgid "" "Cache Clean mode; this value may be one of always, prompt, auto, pre-auto " "and never. always and prompt will remove all packages from the cache after " @@ -7077,7 +7096,7 @@ msgstr "" "vor dem Herunterladen neuer Pakete durch." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:503 +#: apt.conf.5.xml:512 msgid "" "The contents of this variable is passed to &apt-get; as command line options " "when it is run for the install phase." @@ -7086,12 +7105,12 @@ msgstr "" "übermittelt, wenn es für die Installationsphase durchlaufen wird." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:507 +#: apt.conf.5.xml:516 msgid "Updateoptions" msgstr "Updateoptions" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:508 +#: apt.conf.5.xml:517 msgid "" "The contents of this variable is passed to &apt-get; as command line options " "when it is run for the update phase." @@ -7100,12 +7119,12 @@ msgstr "" "übermittelt, wenn es für die Aktualisierungsphase durchlaufen wird." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:512 +#: apt.conf.5.xml:521 msgid "PromptAfterUpdate" msgstr "PromptAfterUpdate" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:513 +#: apt.conf.5.xml:522 msgid "" "If true the [U]pdate operation in &dselect; will always prompt to continue. " "The default is to prompt only on error." @@ -7114,12 +7133,12 @@ msgstr "" "nachfragen, um fortzufahren. Vorgabe ist es, nur bei Fehlern nachzufragen." #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:519 +#: apt.conf.5.xml:528 msgid "How APT calls dpkg" msgstr "Wie APT Dpkg aufruft" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:520 +#: apt.conf.5.xml:529 msgid "" "Several configuration directives control how APT invokes &dpkg;. These are " "in the <literal>DPkg</literal> section." @@ -7128,7 +7147,7 @@ msgstr "" "stehen im Abschnitt <literal>DPkg</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:525 +#: apt.conf.5.xml:534 msgid "" "This is a list of options to pass to dpkg. The options must be specified " "using the list notation and each list item is passed as a single argument to " @@ -7139,17 +7158,17 @@ msgstr "" "jedes Listenelement wird als einzelnes Argument an &dpkg; übermittelt." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:530 +#: apt.conf.5.xml:539 msgid "Pre-Invoke" msgstr "Pre-Invoke" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:530 +#: apt.conf.5.xml:539 msgid "Post-Invoke" msgstr "Post-Invoke" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:531 +#: apt.conf.5.xml:540 msgid "" "This is a list of shell commands to run before/after invoking &dpkg;. Like " "<literal>options</literal> this must be specified in list notation. The " @@ -7163,12 +7182,12 @@ msgstr "" "APT abgebrochen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:537 +#: apt.conf.5.xml:546 msgid "Pre-Install-Pkgs" msgstr "Pre-Install-Pkgs" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:538 +#: apt.conf.5.xml:547 msgid "" "This is a list of shell commands to run before invoking dpkg. Like " "<literal>options</literal> this must be specified in list notation. The " @@ -7185,7 +7204,7 @@ msgstr "" "pro Zeile." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:544 +#: apt.conf.5.xml:553 msgid "" "Version 2 of this protocol dumps more information, including the protocol " "version, the APT configuration space and the packages, files and versions " @@ -7201,12 +7220,12 @@ msgstr "" "literal> gegeben wird." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:551 +#: apt.conf.5.xml:560 msgid "Run-Directory" msgstr "Run-Directory" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:552 +#: apt.conf.5.xml:561 msgid "" "APT chdirs to this directory before invoking dpkg, the default is <filename>/" "</filename>." @@ -7215,12 +7234,12 @@ msgstr "" "die Vorgabe ist <filename>/</filename>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:556 +#: apt.conf.5.xml:565 msgid "Build-options" msgstr "Build-options" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:557 +#: apt.conf.5.xml:566 msgid "" "These options are passed to &dpkg-buildpackage; when compiling packages, the " "default is to disable signing and produce all binaries." @@ -7230,12 +7249,12 @@ msgstr "" "Programme werden erstellt." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt.conf.5.xml:562 +#: apt.conf.5.xml:571 msgid "dpkg trigger usage (and related options)" msgstr "Dpkd-Trigger-Benutzung (und zugehöriger Optionen)" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt.conf.5.xml:563 +#: apt.conf.5.xml:572 msgid "" "APT can call dpkg in a way so it can make aggressive use of triggers over " "multiply calls of dpkg. Without further options dpkg will use triggers only " @@ -7261,7 +7280,7 @@ msgstr "" "Status 100% stehen, während es aktuell alle Pakete konfiguriert." #. type: Content of: <refentry><refsect1><refsect2><para><literallayout> -#: apt.conf.5.xml:578 +#: apt.conf.5.xml:587 #, no-wrap msgid "" "DPkg::NoTriggers \"true\";\n" @@ -7275,7 +7294,7 @@ msgstr "" "DPkg::TriggersPending \"true\";" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt.conf.5.xml:572 +#: apt.conf.5.xml:581 msgid "" "Note that it is not guaranteed that APT will support these options or that " "these options will not cause (big) trouble in the future. If you have " @@ -7300,12 +7319,12 @@ msgstr "" "wäre <placeholder type=\"literallayout\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:584 +#: apt.conf.5.xml:593 msgid "DPkg::NoTriggers" msgstr "DPkg::NoTriggers" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:585 +#: apt.conf.5.xml:594 msgid "" "Add the no triggers flag to all dpkg calls (except the ConfigurePending " "call). See &dpkg; if you are interested in what this actually means. In " @@ -7326,12 +7345,12 @@ msgstr "" "außerdem an die »unpack«- und »remove«-Aufrufe anhängen." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:592 +#: apt.conf.5.xml:601 msgid "PackageManager::Configure" msgstr "PackageManager::Configure" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:593 +#: apt.conf.5.xml:602 msgid "" "Valid values are \"<literal>all</literal>\", \"<literal>smart</literal>\" " "and \"<literal>no</literal>\". \"<literal>all</literal>\" is the default " @@ -7360,12 +7379,12 @@ msgstr "" "mehr startbar sein könnte." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:603 +#: apt.conf.5.xml:612 msgid "DPkg::ConfigurePending" msgstr "DPkg::ConfigurePending" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:604 +#: apt.conf.5.xml:613 msgid "" "If this option is set apt will call <command>dpkg --configure --pending</" "command> to let dpkg handle all required configurations and triggers. This " @@ -7384,12 +7403,12 @@ msgstr "" "deaktivieren." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:610 +#: apt.conf.5.xml:619 msgid "DPkg::TriggersPending" msgstr "DPkg::TriggersPending" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:611 +#: apt.conf.5.xml:620 msgid "" "Useful for <literal>smart</literal> configuration as a package which has " "pending triggers is not considered as <literal>installed</literal> and dpkg " @@ -7405,12 +7424,12 @@ msgstr "" "benötigt werden." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:616 +#: apt.conf.5.xml:625 msgid "PackageManager::UnpackAll" msgstr "PackageManager::UnpackAll" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:617 +#: apt.conf.5.xml:626 msgid "" "As the configuration can be deferred to be done at the end by dpkg it can be " "tried to order the unpack series only by critical needs, e.g. by Pre-" @@ -7429,12 +7448,12 @@ msgstr "" "und weitere Verbesserungen benötigt, bevor sie wirklich nützlich wird." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:624 +#: apt.conf.5.xml:633 msgid "OrderList::Score::Immediate" msgstr "OrderList::Score::Immediate" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:632 +#: apt.conf.5.xml:641 #, no-wrap msgid "" "OrderList::Score {\n" @@ -7452,7 +7471,7 @@ msgstr "" "};" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:625 +#: apt.conf.5.xml:634 msgid "" "Essential packages (and there dependencies) should be configured immediately " "after unpacking. It will be a good idea to do this quite early in the " @@ -7476,12 +7495,12 @@ msgstr "" "mit ihren Vorgabewerten. <placeholder type=\"literallayout\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:645 +#: apt.conf.5.xml:654 msgid "Periodic and Archives options" msgstr "Periodische- und Archivoptionen" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:646 +#: apt.conf.5.xml:655 msgid "" "<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups " "of options configure behavior of apt periodic updates, which is done by " @@ -7495,12 +7514,12 @@ msgstr "" "Dokumentation dieser Optionen zu erhalten." #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:654 +#: apt.conf.5.xml:663 msgid "Debug options" msgstr "Fehlersuchoptionen" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:656 +#: apt.conf.5.xml:665 msgid "" "Enabling options in the <literal>Debug::</literal> section will cause " "debugging information to be sent to the standard error stream of the program " @@ -7518,7 +7537,7 @@ msgstr "" "könnten es sein:" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:667 +#: apt.conf.5.xml:676 msgid "" "<literal>Debug::pkgProblemResolver</literal> enables output about the " "decisions made by <literal>dist-upgrade, upgrade, install, remove, purge</" @@ -7529,7 +7548,7 @@ msgstr "" "getroffenen Entscheidungen ein." #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:675 +#: apt.conf.5.xml:684 msgid "" "<literal>Debug::NoLocking</literal> disables all file locking. This can be " "used to run some operations (for instance, <literal>apt-get -s install</" @@ -7540,7 +7559,7 @@ msgstr "" "<literal>apt-get -s install</literal>) als nicht root-Anwender auszuführen." #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:684 +#: apt.conf.5.xml:693 msgid "" "<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each " "time that <literal>apt</literal> invokes &dpkg;." @@ -7552,7 +7571,7 @@ msgstr "" #. motivating example, except I haven't a clue why you'd want #. to do this. #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:692 +#: apt.conf.5.xml:701 msgid "" "<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data " "in CDROM IDs." @@ -7561,17 +7580,17 @@ msgstr "" "Daten in CD-ROM-IDs aus." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:702 +#: apt.conf.5.xml:711 msgid "A full list of debugging options to apt follows." msgstr "Eine vollständige Liste der Fehlersuchoptionen von APT folgt." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:707 +#: apt.conf.5.xml:716 msgid "<literal>Debug::Acquire::cdrom</literal>" msgstr "<literal>Debug::Acquire::cdrom</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:711 +#: apt.conf.5.xml:720 msgid "" "Print information related to accessing <literal>cdrom://</literal> sources." msgstr "" @@ -7579,48 +7598,48 @@ msgstr "" "literal>-Quellen beziehen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:718 +#: apt.conf.5.xml:727 msgid "<literal>Debug::Acquire::ftp</literal>" msgstr "<literal>Debug::Acquire::ftp</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:722 +#: apt.conf.5.xml:731 msgid "Print information related to downloading packages using FTP." msgstr "" "Gibt Informationen aus, die sich auf das Herunterladen von Paketen per FTP " "beziehen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:729 +#: apt.conf.5.xml:738 msgid "<literal>Debug::Acquire::http</literal>" msgstr "<literal>Debug::Acquire::http</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:733 +#: apt.conf.5.xml:742 msgid "Print information related to downloading packages using HTTP." msgstr "" "Gibt Informationen aus, die sich auf das Herunterladen von Paketen per HTTP " "beziehen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:740 +#: apt.conf.5.xml:749 msgid "<literal>Debug::Acquire::https</literal>" msgstr "<literal>Debug::Acquire::https</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:744 +#: apt.conf.5.xml:753 msgid "Print information related to downloading packages using HTTPS." msgstr "" "Gibt Informationen aus, die sich auf das Herunterladen von Paketen per HTTPS " "beziehen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:751 +#: apt.conf.5.xml:760 msgid "<literal>Debug::Acquire::gpgv</literal>" msgstr "<literal>Debug::Acquire::gpgv</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:755 +#: apt.conf.5.xml:764 msgid "" "Print information related to verifying cryptographic signatures using " "<literal>gpg</literal>." @@ -7629,12 +7648,12 @@ msgstr "" "mittels <literal>gpg</literal> beziehen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:762 +#: apt.conf.5.xml:771 msgid "<literal>Debug::aptcdrom</literal>" msgstr "<literal>Debug::aptcdrom</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:766 +#: apt.conf.5.xml:775 msgid "" "Output information about the process of accessing collections of packages " "stored on CD-ROMs." @@ -7643,23 +7662,23 @@ msgstr "" "CD-ROMs gespeichert sind." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:773 +#: apt.conf.5.xml:782 msgid "<literal>Debug::BuildDeps</literal>" msgstr "<literal>Debug::BuildDeps</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:776 +#: apt.conf.5.xml:785 msgid "Describes the process of resolving build-dependencies in &apt-get;." msgstr "" "Beschreibt den Prozess der Auflösung von Bauabhängigkeiten in &apt-get;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:783 +#: apt.conf.5.xml:792 msgid "<literal>Debug::Hashes</literal>" msgstr "<literal>Debug::Hashes</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:786 +#: apt.conf.5.xml:795 msgid "" "Output each cryptographic hash that is generated by the <literal>apt</" "literal> libraries." @@ -7668,12 +7687,12 @@ msgstr "" "Bibliotheken generiert wurde." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:793 +#: apt.conf.5.xml:802 msgid "<literal>Debug::IdentCDROM</literal>" msgstr "<literal>Debug::IdentCDROM</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:796 +#: apt.conf.5.xml:805 msgid "" "Do not include information from <literal>statfs</literal>, namely the number " "of used and free blocks on the CD-ROM filesystem, when generating an ID for " @@ -7684,12 +7703,12 @@ msgstr "" "ID für eine CD-ROM generiert wird." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:804 +#: apt.conf.5.xml:813 msgid "<literal>Debug::NoLocking</literal>" msgstr "<literal>Debug::NoLocking</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:807 +#: apt.conf.5.xml:816 msgid "" "Disable all file locking. For instance, this will allow two instances of " "<quote><literal>apt-get update</literal></quote> to run at the same time." @@ -7699,24 +7718,24 @@ msgstr "" "gleichen Zeit laufen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:815 +#: apt.conf.5.xml:824 msgid "<literal>Debug::pkgAcquire</literal>" msgstr "<literal>Debug::pkgAcquire</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:819 +#: apt.conf.5.xml:828 msgid "Log when items are added to or removed from the global download queue." msgstr "" "Protokollieren, wenn Elemente aus der globalen Warteschlange zum " "Herunterladen hinzugefügt oder entfernt werden." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:826 +#: apt.conf.5.xml:835 msgid "<literal>Debug::pkgAcquire::Auth</literal>" msgstr "<literal>Debug::pkgAcquire::Auth</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:829 +#: apt.conf.5.xml:838 msgid "" "Output status messages and errors related to verifying checksums and " "cryptographic signatures of downloaded files." @@ -7725,12 +7744,12 @@ msgstr "" "und kryptografischen Signaturen von heruntergeladenen Dateien beziehen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:836 +#: apt.conf.5.xml:845 msgid "<literal>Debug::pkgAcquire::Diffs</literal>" msgstr "<literal>Debug::pkgAcquire::Diffs</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:839 +#: apt.conf.5.xml:848 msgid "" "Output information about downloading and applying package index list diffs, " "and errors relating to package index list diffs." @@ -7739,12 +7758,12 @@ msgstr "" "und Fehler, die die Paketindexlisten-Diffs betreffen, ausgeben." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:847 +#: apt.conf.5.xml:856 msgid "<literal>Debug::pkgAcquire::RRed</literal>" msgstr "<literal>Debug::pkgAcquire::RRed</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:851 +#: apt.conf.5.xml:860 msgid "" "Output information related to patching apt package lists when downloading " "index diffs instead of full indices." @@ -7754,12 +7773,12 @@ msgstr "" "werden." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:858 +#: apt.conf.5.xml:867 msgid "<literal>Debug::pkgAcquire::Worker</literal>" msgstr "<literal>Debug::pkgAcquire::Worker</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:862 +#: apt.conf.5.xml:871 msgid "" "Log all interactions with the sub-processes that actually perform downloads." msgstr "" @@ -7767,12 +7786,12 @@ msgstr "" "durchführen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:869 +#: apt.conf.5.xml:878 msgid "<literal>Debug::pkgAutoRemove</literal>" msgstr "<literal>Debug::pkgAutoRemove</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:873 +#: apt.conf.5.xml:882 msgid "" "Log events related to the automatically-installed status of packages and to " "the removal of unused packages." @@ -7782,12 +7801,12 @@ msgstr "" "beziehen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:880 +#: apt.conf.5.xml:889 msgid "<literal>Debug::pkgDepCache::AutoInstall</literal>" msgstr "<literal>Debug::pkgDepCache::AutoInstall</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:883 +#: apt.conf.5.xml:892 msgid "" "Generate debug messages describing which packages are being automatically " "installed to resolve dependencies. This corresponds to the initial auto-" @@ -7803,12 +7822,12 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:894 +#: apt.conf.5.xml:903 msgid "<literal>Debug::pkgDepCache::Marker</literal>" msgstr "<literal>Debug::pkgDepCache::Marker</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:897 +#: apt.conf.5.xml:906 msgid "" "Generate debug messages describing which package is marked as keep/install/" "remove while the ProblemResolver does his work. Each addition or deletion " @@ -7840,23 +7859,23 @@ msgstr "" "erscheint." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:916 +#: apt.conf.5.xml:925 msgid "<literal>Debug::pkgInitConfig</literal>" msgstr "<literal>Debug::pkgInitConfig</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:919 +#: apt.conf.5.xml:928 msgid "Dump the default configuration to standard error on startup." msgstr "" "Die Vorgabekonfiguration beim Start auf der Standardfehlerausgabe ausgeben." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:926 +#: apt.conf.5.xml:935 msgid "<literal>Debug::pkgDPkgPM</literal>" msgstr "<literal>Debug::pkgDPkgPM</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:929 +#: apt.conf.5.xml:938 msgid "" "When invoking &dpkg;, output the precise command line with which it is being " "invoked, with arguments separated by a single space character." @@ -7866,12 +7885,12 @@ msgstr "" "sind." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:937 +#: apt.conf.5.xml:946 msgid "<literal>Debug::pkgDPkgProgressReporting</literal>" msgstr "<literal>Debug::pkgDPkgProgressReporting</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:940 +#: apt.conf.5.xml:949 msgid "" "Output all the data received from &dpkg; on the status file descriptor and " "any errors encountered while parsing it." @@ -7880,12 +7899,12 @@ msgstr "" "alle während deren Auswertung gefundenen Fehler ausgeben." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:947 +#: apt.conf.5.xml:956 msgid "<literal>Debug::pkgOrderList</literal>" msgstr "<literal>Debug::pkgOrderList</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:951 +#: apt.conf.5.xml:960 msgid "" "Generate a trace of the algorithm that decides the order in which " "<literal>apt</literal> should pass packages to &dpkg;." @@ -7895,12 +7914,12 @@ msgstr "" "soll." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:959 +#: apt.conf.5.xml:968 msgid "<literal>Debug::pkgPackageManager</literal>" msgstr "<literal>Debug::pkgPackageManager</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:963 +#: apt.conf.5.xml:972 msgid "" "Output status messages tracing the steps performed when invoking &dpkg;." msgstr "" @@ -7908,22 +7927,22 @@ msgstr "" "von &dpkg; ausgeführt werden." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:970 +#: apt.conf.5.xml:979 msgid "<literal>Debug::pkgPolicy</literal>" msgstr "<literal>Debug::pkgPolicy</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:974 +#: apt.conf.5.xml:983 msgid "Output the priority of each package list on startup." msgstr "Die Priorität jeder Paketliste beim Start ausgeben." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:980 +#: apt.conf.5.xml:989 msgid "<literal>Debug::pkgProblemResolver</literal>" msgstr "<literal>Debug::pkgProblemResolver</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:984 +#: apt.conf.5.xml:993 msgid "" "Trace the execution of the dependency resolver (this applies only to what " "happens when a complex dependency problem is encountered)." @@ -7933,12 +7952,12 @@ msgstr "" "aufgetreten ist)." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:992 +#: apt.conf.5.xml:1001 msgid "<literal>Debug::pkgProblemResolver::ShowScores</literal>" msgstr "<literal>Debug::pkgProblemResolver::ShowScores</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:995 +#: apt.conf.5.xml:1004 msgid "" "Display a list of all installed packages with their calculated score used by " "the pkgProblemResolver. The description of the package is the same as " @@ -7950,12 +7969,12 @@ msgstr "" "beschrieben." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1003 +#: apt.conf.5.xml:1012 msgid "<literal>Debug::sourceList</literal>" msgstr "<literal>Debug::sourceList</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1007 +#: apt.conf.5.xml:1016 msgid "" "Print information about the vendors read from <filename>/etc/apt/vendors." "list</filename>." @@ -7964,7 +7983,7 @@ msgstr "" "gelesenen Anbieter ausgeben." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:1030 +#: apt.conf.5.xml:1039 msgid "" "&configureindex; is a configuration file showing example values for all " "possible options." @@ -7973,13 +7992,13 @@ msgstr "" "möglichen Optionen zeigen." #. type: Content of: <refentry><refsect1><variablelist> -#: apt.conf.5.xml:1037 +#: apt.conf.5.xml:1046 msgid "&file-aptconf;" msgstr "&file-aptconf;" #. ? reading apt.conf #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:1042 +#: apt.conf.5.xml:1051 msgid "&apt-cache;, &apt-config;, &apt-preferences;." msgstr "&apt-cache;, &apt-config;, &apt-preferences;." -- cgit v1.2.3 From bcc27ad808016b27bba7d7d137098df6abf766c3 Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Fri, 11 Jun 2010 11:16:22 +0200 Subject: * configure.in: - Check for zlib library and headers. --- configure.in | 4 ++++ debian/changelog | 2 ++ 2 files changed, 6 insertions(+) diff --git a/configure.in b/configure.in index 82785a9dd..015b142ea 100644 --- a/configure.in +++ b/configure.in @@ -83,6 +83,10 @@ AC_CHECK_LIB(curl, curl_easy_init, AC_SUBST(BDBLIB) +AC_CHECK_LIB(z, gzopen, + [AC_CHECK_HEADER(zlib.h, [], AC_MSG_ERROR([failed: zlib.h not found]))], + AC_MSG_ERROR([failed: Need libz])) + dnl Converts the ARCH to be something singular for this general CPU family dnl This is often the dpkg architecture string. dnl First check against the full canonical canoncial-system-type in $target diff --git a/debian/changelog b/debian/changelog index 7caa401fc..9f9e09727 100644 --- a/debian/changelog +++ b/debian/changelog @@ -13,6 +13,8 @@ apt (0.7.26~exp5) UNRELEASED; urgency=low - Link against zlib (in apt-pkg/makefile) and add zlib build dependency. - [ABI BREAK] This introduces a new protected member of FileFD and changes the behaviour of FileFd for reading gzipped files. + * configure.in: + - Check for zlib library and headers. * apt-pkg/deb/debindexfile.cc: - If we do not find uncompressed package/source/translation indexes, look for gzip compressed ones. -- cgit v1.2.3 From 35454fa94aae83cf60042284dc82fac579aa84cd Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Fri, 11 Jun 2010 12:34:26 +0200 Subject: changelog: clarify abi break, it's not external --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 9f9e09727..017e774ba 100644 --- a/debian/changelog +++ b/debian/changelog @@ -11,8 +11,8 @@ apt (0.7.26~exp5) UNRELEASED; urgency=low * apt-pkg/contrib/fileutl.{h,cc}: - Add support for transparent reading of gzipped files. - Link against zlib (in apt-pkg/makefile) and add zlib build dependency. - - [ABI BREAK] This introduces a new protected member of FileFD and changes - the behaviour of FileFd for reading gzipped files. + - [Weak internal ABI BREAK] This changes the behaviour of FileFd for + reading gzipped files. * configure.in: - Check for zlib library and headers. * apt-pkg/deb/debindexfile.cc: -- cgit v1.2.3 From f4782b42840c1f86c40a59690698ccf6920e990a Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Fri, 11 Jun 2010 18:22:48 +0200 Subject: test-indexes.sh: Add source related tests, which uncovers two regressions --- test/test-indexes.sh | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/test/test-indexes.sh b/test/test-indexes.sh index d3f5e7cd3..e82633022 100755 --- a/test/test-indexes.sh +++ b/test/test-indexes.sh @@ -7,7 +7,7 @@ BUILDDIR=$(readlink -f $(dirname $0)/../build) -TEST_SOURCE="deb http://ftp.debian.org/debian unstable contrib" +TEST_SOURCE="http://ftp.debian.org/debian unstable contrib" TEST_SOURCE_KEYID=55BE302B GPG_KEYSERVER=gpg-keyserver.de # should be a small package with dependencies satisfiable in TEST_SOURCE, i. e. @@ -39,7 +39,8 @@ ln -s /home home mkdir -p etc/apt/preferences.d etc/apt/trusted.gpg.d var/cache/apt/archives/partial var/lib/apt/lists/partial var/lib/dpkg cp /etc/apt/trusted.gpg etc/apt touch var/lib/dpkg/status -echo "$TEST_SOURCE" > etc/apt/sources.list +echo "deb $TEST_SOURCE" > etc/apt/sources.list +echo "deb-src $TEST_SOURCE" >> etc/apt/sources.list # get keyring gpg --no-options --no-default-keyring --secret-keyring etc/apt/secring.gpg --trustdb-name etc/apt/trustdb.gpg --keyring etc/apt/trusted.gpg --primary-keyring etc/apt/trusted.gpg --keyserver $GPG_KEYSERVER --recv-keys $TEST_SOURCE_KEYID @@ -47,7 +48,9 @@ gpg --no-options --no-default-keyring --secret-keyring etc/apt/secring.gpg --tru echo "---- uncompressed update ----" $APT_GET update test -e var/lib/apt/lists/*_Packages +test -e var/lib/apt/lists/*_Sources ! test -e var/lib/apt/lists/*_Packages.gz +! test -e var/lib/apt/lists/*_Sources.gz echo "---- uncompressed cache ----" $APT_CACHE show $TEST_PKG | grep -q ^Version: @@ -58,27 +61,45 @@ $APT_CACHE policy $TEST_PKG | grep -q '500 http://' # again (with cache) $APT_CACHE policy $TEST_PKG | grep -q '500 http://' +TEST_SRC=`$APT_CACHE show $TEST_PKG | grep ^Source: | awk '{print $2}'` +rm var/cache/apt/*.bin +$APT_CACHE showsrc $TEST_SRC | grep -q ^Binary: +# again (with cache) +$APT_CACHE showsrc $TEST_SRC | grep -q ^Binary: + echo "---- uncompressed install ----" $APT_GET install -d $TEST_PKG test -e var/cache/apt/archives/$TEST_PKG*.deb $APT_GET clean ! test -e var/cache/apt/archives/$TEST_PKG*.deb +echo "---- uncompressed get source ----" +$APT_GET source $TEST_PKG +test -f $TEST_SRC_*.dsc +test -d $TEST_SRC-* +rm -r $TEST_SRC* + echo "----- uncompressed update with preexisting indexes, no pdiff ----" $APT_GET -o Acquire::PDiffs=false update test -e var/lib/apt/lists/*_Packages +test -e var/lib/apt/lists/*_Sources ! test -e var/lib/apt/lists/*_Packages.gz +! test -e var/lib/apt/lists/*_Sources.gz echo "----- uncompressed update with preexisting indexes, with pdiff ----" $APT_GET -o Acquire::PDiffs=true update test -e var/lib/apt/lists/*_Packages +test -e var/lib/apt/lists/*_Sources ! test -e var/lib/apt/lists/*_Packages.gz +! test -e var/lib/apt/lists/*_Sources.gz echo "----- compressed update ----" find var/lib/apt/lists/ -type f | xargs -r rm $APT_GET -o Acquire::GzipIndexes=true update ! test -e var/lib/apt/lists/*_Packages +! test -e var/lib/apt/lists/*_Sources test -e var/lib/apt/lists/*_Packages.gz +test -e var/lib/apt/lists/*_Sources.gz echo "---- compressed cache ----" $APT_CACHE show $TEST_PKG | grep -q ^Version: @@ -89,18 +110,34 @@ $APT_CACHE policy $TEST_PKG | grep -q '500 http://' # again (with cache) $APT_CACHE policy $TEST_PKG | grep -q '500 http://' +TEST_SRC=`$APT_CACHE show $TEST_PKG | grep ^Source: | awk '{print $2}'` +rm var/cache/apt/*.bin +$APT_CACHE showsrc $TEST_SRC | grep -q ^Binary: +# again (with cache) +$APT_CACHE showsrc $TEST_SRC | grep -q ^Binary: + echo "---- compressed install ----" $APT_GET install -d $TEST_PKG ! test -e var/cache/apt/archives/$TEST_PKG*.deb +echo "---- compressed get source ----" +$APT_GET source $TEST_PKG +test -f $TEST_SRC_*.dsc +test -d $TEST_SRC-* +rm -r $TEST_SRC* + echo "----- compressed update with preexisting indexes, no pdiff ----" $APT_GET -o Acquire::PDiffs=false -o Acquire::GzipIndexes=true update ! test -e var/lib/apt/lists/*_Packages +! test -e var/lib/apt/lists/*_Sources test -e var/lib/apt/lists/*_Packages.gz +test -e var/lib/apt/lists/*_Sources.gz echo "----- compressed update with preexisting indexes, with pdiff ----" $APT_GET -o Acquire::PDiffs=true -o Acquire::GzipIndexes=true update ! test -e var/lib/apt/lists/*_Packages +! test -e var/lib/apt/lists/*_Sources test -e var/lib/apt/lists/*_Packages.gz +test -e var/lib/apt/lists/*_Sources.gz echo "---- ALL TESTS PASSED ----" -- cgit v1.2.3 From b26e2415ee2d4f611966488954f8d4f30fcf827c Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Fri, 11 Jun 2010 18:59:06 +0200 Subject: * apt-pkg/acquire-item.cc: - Fix return value of pkgAcqFile::Custom600Headers() in the non-index case, to avoid returning NULL and causing crashers in callers. This also fixes a compiler warning. --- apt-pkg/acquire-item.cc | 2 ++ debian/changelog | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index 83fb5328b..bcfe6a98a 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -1688,5 +1688,7 @@ string pkgAcqFile::Custom600Headers() { if (IsIndexFile) return "\nIndex-File: true"; + else + return ""; } /*}}}*/ diff --git a/debian/changelog b/debian/changelog index 017e774ba..380060aa6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -29,6 +29,10 @@ apt (0.7.26~exp5) UNRELEASED; urgency=low * Add test/test-indexes.sh: - Test behaviour of index retrieval and usage, in particular with uncompressed and gzip compressed indexes. + * apt-pkg/acquire-item.cc: + - Fix return value of pkgAcqFile::Custom600Headers() in the non-index + case, to avoid returning NULL and causing crashers in callers. This also + fixes a compiler warning. -- Christian Perrier <bubulle@debian.org> Tue, 11 May 2010 19:52:00 +0200 -- cgit v1.2.3 From 94e8c9d4df70d2532e1640dfe2700dd63a094a4f Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Fri, 11 Jun 2010 19:23:08 +0200 Subject: apt-pkg/deb/debindexfile.cc: Fix one more place to check for gzipped indexes, to work with apt-get source as well --- apt-pkg/deb/debindexfile.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/apt-pkg/deb/debindexfile.cc b/apt-pkg/deb/debindexfile.cc index e87c21f13..9832329c0 100644 --- a/apt-pkg/deb/debindexfile.cc +++ b/apt-pkg/deb/debindexfile.cc @@ -63,9 +63,13 @@ string debSourcesIndex::SourceInfo(pkgSrcRecords::Parser const &Record, /* */ pkgSrcRecords::Parser *debSourcesIndex::CreateSrcParser() const { - string SourcesURI = URItoFileName(IndexURI("Sources")); - return new debSrcRecordParser(_config->FindDir("Dir::State::lists") + - SourcesURI,this); + string SourcesURI = _config->FindDir("Dir::State::lists") + + URItoFileName(IndexURI("Sources")); + string SourcesURIgzip = SourcesURI + ".gz"; + if (!FileExists(SourcesURI) && FileExists(SourcesURIgzip)) + SourcesURI = SourcesURIgzip; + + return new debSrcRecordParser(SourcesURI,this); } /*}}}*/ // SourcesIndex::Describe - Give a descriptive path to the index /*{{{*/ -- cgit v1.2.3 From 8d48388ebfb69ab21a50d068275d2f6b7abffb87 Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Tue, 15 Jun 2010 13:17:33 +0200 Subject: test/test-indexes.sh: Stop hardcoding archive gpg key ID, get it from first failed apt-get update output --- test/test-indexes.sh | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/test/test-indexes.sh b/test/test-indexes.sh index e82633022..58b9cff72 100755 --- a/test/test-indexes.sh +++ b/test/test-indexes.sh @@ -8,7 +8,6 @@ BUILDDIR=$(readlink -f $(dirname $0)/../build) TEST_SOURCE="http://ftp.debian.org/debian unstable contrib" -TEST_SOURCE_KEYID=55BE302B GPG_KEYSERVER=gpg-keyserver.de # should be a small package with dependencies satisfiable in TEST_SOURCE, i. e. # ideally no depends at all @@ -42,11 +41,15 @@ touch var/lib/dpkg/status echo "deb $TEST_SOURCE" > etc/apt/sources.list echo "deb-src $TEST_SOURCE" >> etc/apt/sources.list -# get keyring -gpg --no-options --no-default-keyring --secret-keyring etc/apt/secring.gpg --trustdb-name etc/apt/trustdb.gpg --keyring etc/apt/trusted.gpg --primary-keyring etc/apt/trusted.gpg --keyserver $GPG_KEYSERVER --recv-keys $TEST_SOURCE_KEYID - echo "---- uncompressed update ----" +# first attempt should fail, no trusted GPG key +out=$($APT_GET update 2>&1) +echo "$out" | grep -q NO_PUBKEY +key=$(echo "$out" | sed -n '/NO_PUBKEY/ { s/^.*NO_PUBKEY \([[:alnum:]]\+\)$/\1/; p}') +# get keyring +gpg --no-options --no-default-keyring --secret-keyring etc/apt/secring.gpg --trustdb-name etc/apt/trustdb.gpg --keyring etc/apt/trusted.gpg --primary-keyring etc/apt/trusted.gpg --keyserver $GPG_KEYSERVER --recv-keys $key $APT_GET update + test -e var/lib/apt/lists/*_Packages test -e var/lib/apt/lists/*_Sources ! test -e var/lib/apt/lists/*_Packages.gz -- cgit v1.2.3 From 8d60bef0c235f86772686df1499ae5e9593437e2 Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Thu, 17 Jun 2010 11:17:13 +0200 Subject: test-indexes.sh: More verbose failures on wrong/missing indexes --- test/test-indexes.sh | 53 +++++++++++++++++++++++++++------------------------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/test/test-indexes.sh b/test/test-indexes.sh index 58b9cff72..d79e9e7e4 100755 --- a/test/test-indexes.sh +++ b/test/test-indexes.sh @@ -27,6 +27,28 @@ APT_CACHE="$BUILDDIR/bin/apt-cache $OPTS $DEBUG" exit 1 } +# if $1 == "compressed", check that we have compressed indexes, otherwise +# uncompressed ones +check_indexes() { + local F + if [ "$1" = "compressed" ]; then + ! test -e var/lib/apt/lists/*_Packages || F=1 + ! test -e var/lib/apt/lists/*_Sources || F=1 + test -e var/lib/apt/lists/*_Packages.gz || F=1 + test -e var/lib/apt/lists/*_Sources.gz || F=1 + else + test -e var/lib/apt/lists/*_Packages || F=1 + test -e var/lib/apt/lists/*_Sources || F=1 + ! test -e var/lib/apt/lists/*_Packages.gz || F=1 + ! test -e var/lib/apt/lists/*_Sources.gz || F=1 + fi + + if [ -n "$F" ]; then + ls -l var/lib/apt/lists/ + exit 1 + fi +} + echo "---- building sandbox----" WORKDIR=$(mktemp -d) trap "cd /; rm -rf $WORKDIR" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM @@ -49,11 +71,7 @@ key=$(echo "$out" | sed -n '/NO_PUBKEY/ { s/^.*NO_PUBKEY \([[:alnum:]]\+\)$/\1/; # get keyring gpg --no-options --no-default-keyring --secret-keyring etc/apt/secring.gpg --trustdb-name etc/apt/trustdb.gpg --keyring etc/apt/trusted.gpg --primary-keyring etc/apt/trusted.gpg --keyserver $GPG_KEYSERVER --recv-keys $key $APT_GET update - -test -e var/lib/apt/lists/*_Packages -test -e var/lib/apt/lists/*_Sources -! test -e var/lib/apt/lists/*_Packages.gz -! test -e var/lib/apt/lists/*_Sources.gz +check_indexes echo "---- uncompressed cache ----" $APT_CACHE show $TEST_PKG | grep -q ^Version: @@ -84,25 +102,16 @@ rm -r $TEST_SRC* echo "----- uncompressed update with preexisting indexes, no pdiff ----" $APT_GET -o Acquire::PDiffs=false update -test -e var/lib/apt/lists/*_Packages -test -e var/lib/apt/lists/*_Sources -! test -e var/lib/apt/lists/*_Packages.gz -! test -e var/lib/apt/lists/*_Sources.gz +check_indexes echo "----- uncompressed update with preexisting indexes, with pdiff ----" $APT_GET -o Acquire::PDiffs=true update -test -e var/lib/apt/lists/*_Packages -test -e var/lib/apt/lists/*_Sources -! test -e var/lib/apt/lists/*_Packages.gz -! test -e var/lib/apt/lists/*_Sources.gz +check_indexes echo "----- compressed update ----" find var/lib/apt/lists/ -type f | xargs -r rm $APT_GET -o Acquire::GzipIndexes=true update -! test -e var/lib/apt/lists/*_Packages -! test -e var/lib/apt/lists/*_Sources -test -e var/lib/apt/lists/*_Packages.gz -test -e var/lib/apt/lists/*_Sources.gz +check_indexes compressed echo "---- compressed cache ----" $APT_CACHE show $TEST_PKG | grep -q ^Version: @@ -131,16 +140,10 @@ rm -r $TEST_SRC* echo "----- compressed update with preexisting indexes, no pdiff ----" $APT_GET -o Acquire::PDiffs=false -o Acquire::GzipIndexes=true update -! test -e var/lib/apt/lists/*_Packages -! test -e var/lib/apt/lists/*_Sources -test -e var/lib/apt/lists/*_Packages.gz -test -e var/lib/apt/lists/*_Sources.gz +check_indexes compressed echo "----- compressed update with preexisting indexes, with pdiff ----" $APT_GET -o Acquire::PDiffs=true -o Acquire::GzipIndexes=true update -! test -e var/lib/apt/lists/*_Packages -! test -e var/lib/apt/lists/*_Sources -test -e var/lib/apt/lists/*_Packages.gz -test -e var/lib/apt/lists/*_Sources.gz +check_indexes compressed echo "---- ALL TESTS PASSED ----" -- cgit v1.2.3 From 2aab191f2a87d4d33a78d76e3c2978689c142190 Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Thu, 17 Jun 2010 11:47:51 +0200 Subject: test-indexes.sh: Refactor common code into functions --- test/test-indexes.sh | 155 +++++++++++++++++++++++++++------------------------ 1 file changed, 81 insertions(+), 74 deletions(-) diff --git a/test/test-indexes.sh b/test/test-indexes.sh index d79e9e7e4..fdc1a698a 100755 --- a/test/test-indexes.sh +++ b/test/test-indexes.sh @@ -15,7 +15,7 @@ TEST_PKG="python-psyco-doc" export LD_LIBRARY_PATH=$BUILDDIR/bin -OPTS="-o RootDir=. -o Dir::Bin::Methods=$BUILDDIR/bin/methods -o Debug::NoLocking=true" +OPTS="-qq -o RootDir=. -o Dir::Bin::Methods=$BUILDDIR/bin/methods -o Debug::NoLocking=true" DEBUG="" #DEBUG="-o Debug::pkgCacheGen=true" #DEBUG="-o Debug::pkgAcquire=true" @@ -27,9 +27,25 @@ APT_CACHE="$BUILDDIR/bin/apt-cache $OPTS $DEBUG" exit 1 } +check_update() { + echo "--- apt-get update $@ (no trusted keys)" + + rm -f etc/apt/trusted.gpg etc/apt/secring.gpg + touch etc/apt/trusted.gpg etc/apt/secring.gpg + out=$($APT_GET "$@" update 2>&1) + echo "$out" | grep -q NO_PUBKEY + key=$(echo "$out" | sed -n '/NO_PUBKEY/ { s/^.*NO_PUBKEY \([[:alnum:]]\+\)$/\1/; p}') + # get keyring + gpg -q --no-options --no-default-keyring --secret-keyring etc/apt/secring.gpg --trustdb-name etc/apt/trustdb.gpg --keyring etc/apt/trusted.gpg --primary-keyring etc/apt/trusted.gpg --keyserver $GPG_KEYSERVER --recv-keys $key + + echo "--- apt-get update $@ (with trusted keys)" + $APT_GET "$@" update +} + # if $1 == "compressed", check that we have compressed indexes, otherwise # uncompressed ones check_indexes() { + echo "--- only ${1:-uncompressed} index files present" local F if [ "$1" = "compressed" ]; then ! test -e var/lib/apt/lists/*_Packages || F=1 @@ -44,12 +60,54 @@ check_indexes() { fi if [ -n "$F" ]; then - ls -l var/lib/apt/lists/ + ls -laR var/lib/apt/lists/ exit 1 fi } -echo "---- building sandbox----" +# test apt-cache commands +check_cache() { + echo "--- apt-cache commands" + + $APT_CACHE show $TEST_PKG | grep -q ^Version: + # again (with cache) + $APT_CACHE show $TEST_PKG | grep -q ^Version: + rm var/cache/apt/*.bin + $APT_CACHE policy $TEST_PKG | grep -q '500 http://' + # again (with cache) + $APT_CACHE policy $TEST_PKG | grep -q '500 http://' + + TEST_SRC=`$APT_CACHE show $TEST_PKG | grep ^Source: | awk '{print $2}'` + rm var/cache/apt/*.bin + $APT_CACHE showsrc $TEST_SRC | grep -q ^Binary: + # again (with cache) + $APT_CACHE showsrc $TEST_SRC | grep -q ^Binary: +} + +# test apt-get install +check_install() { + echo "--- apt-get install" + + $APT_GET install -d $TEST_PKG + test -e var/cache/apt/archives/$TEST_PKG*.deb + $APT_GET clean + ! test -e var/cache/apt/archives/$TEST_PKG*.deb +} + +# test apt-get source +check_get_source() { + echo "--- apt-get source" + $APT_GET source $TEST_PKG + test -f $TEST_SRC_*.dsc + test -d $TEST_SRC-* + rm -r $TEST_SRC* +} + +############################################################################ +# main +############################################################################ + +echo "===== building sandbox =====" WORKDIR=$(mktemp -d) trap "cd /; rm -rf $WORKDIR" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM cd $WORKDIR @@ -63,87 +121,36 @@ touch var/lib/dpkg/status echo "deb $TEST_SOURCE" > etc/apt/sources.list echo "deb-src $TEST_SOURCE" >> etc/apt/sources.list -echo "---- uncompressed update ----" +echo "===== uncompressed indexes =====" # first attempt should fail, no trusted GPG key -out=$($APT_GET update 2>&1) -echo "$out" | grep -q NO_PUBKEY -key=$(echo "$out" | sed -n '/NO_PUBKEY/ { s/^.*NO_PUBKEY \([[:alnum:]]\+\)$/\1/; p}') -# get keyring -gpg --no-options --no-default-keyring --secret-keyring etc/apt/secring.gpg --trustdb-name etc/apt/trustdb.gpg --keyring etc/apt/trusted.gpg --primary-keyring etc/apt/trusted.gpg --keyserver $GPG_KEYSERVER --recv-keys $key -$APT_GET update +check_update check_indexes +check_cache +check_install +check_get_source -echo "---- uncompressed cache ----" -$APT_CACHE show $TEST_PKG | grep -q ^Version: -# again (with cache) -$APT_CACHE show $TEST_PKG | grep -q ^Version: -rm var/cache/apt/*.bin -$APT_CACHE policy $TEST_PKG | grep -q '500 http://' -# again (with cache) -$APT_CACHE policy $TEST_PKG | grep -q '500 http://' - -TEST_SRC=`$APT_CACHE show $TEST_PKG | grep ^Source: | awk '{print $2}'` -rm var/cache/apt/*.bin -$APT_CACHE showsrc $TEST_SRC | grep -q ^Binary: -# again (with cache) -$APT_CACHE showsrc $TEST_SRC | grep -q ^Binary: - -echo "---- uncompressed install ----" -$APT_GET install -d $TEST_PKG -test -e var/cache/apt/archives/$TEST_PKG*.deb -$APT_GET clean -! test -e var/cache/apt/archives/$TEST_PKG*.deb - -echo "---- uncompressed get source ----" -$APT_GET source $TEST_PKG -test -f $TEST_SRC_*.dsc -test -d $TEST_SRC-* -rm -r $TEST_SRC* - -echo "----- uncompressed update with preexisting indexes, no pdiff ----" -$APT_GET -o Acquire::PDiffs=false update +echo "--- apt-get update with preexisting indexes" +$APT_GET update check_indexes -echo "----- uncompressed update with preexisting indexes, with pdiff ----" +echo "--- apt-get update with preexisting indexes and pdiff mode" $APT_GET -o Acquire::PDiffs=true update check_indexes -echo "----- compressed update ----" +echo "===== compressed indexes =====" find var/lib/apt/lists/ -type f | xargs -r rm -$APT_GET -o Acquire::GzipIndexes=true update +check_update -o Acquire::GzipIndexes=true check_indexes compressed +check_cache +check_install +check_get_source -echo "---- compressed cache ----" -$APT_CACHE show $TEST_PKG | grep -q ^Version: -# again (with cache) -$APT_CACHE show $TEST_PKG | grep -q ^Version: -rm var/cache/apt/*.bin -$APT_CACHE policy $TEST_PKG | grep -q '500 http://' -# again (with cache) -$APT_CACHE policy $TEST_PKG | grep -q '500 http://' - -TEST_SRC=`$APT_CACHE show $TEST_PKG | grep ^Source: | awk '{print $2}'` -rm var/cache/apt/*.bin -$APT_CACHE showsrc $TEST_SRC | grep -q ^Binary: -# again (with cache) -$APT_CACHE showsrc $TEST_SRC | grep -q ^Binary: - -echo "---- compressed install ----" -$APT_GET install -d $TEST_PKG -! test -e var/cache/apt/archives/$TEST_PKG*.deb - -echo "---- compressed get source ----" -$APT_GET source $TEST_PKG -test -f $TEST_SRC_*.dsc -test -d $TEST_SRC-* -rm -r $TEST_SRC* - -echo "----- compressed update with preexisting indexes, no pdiff ----" -$APT_GET -o Acquire::PDiffs=false -o Acquire::GzipIndexes=true update -check_indexes compressed +echo "--- apt-get update with preexisting indexes" +check_update -o Acquire::GzipIndexes=true +check_indexes -echo "----- compressed update with preexisting indexes, with pdiff ----" -$APT_GET -o Acquire::PDiffs=true -o Acquire::GzipIndexes=true update -check_indexes compressed +echo "--- apt-get update with preexisting indexes and pdiff mode" +check_update -o Acquire::GzipIndexes=true -o Acquire::PDiffs=true update +check_indexes -echo "---- ALL TESTS PASSED ----" +echo "===== ALL TESTS PASSED =====" -- cgit v1.2.3 From 81563bc11a6491b85d55dbefa9f25f8035ab187e Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Thu, 17 Jun 2010 12:18:54 +0200 Subject: test-indexes: Use /etc/apt from temporary work dir, not from system --- test/test-indexes.sh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/test/test-indexes.sh b/test/test-indexes.sh index fdc1a698a..452b0cc7a 100755 --- a/test/test-indexes.sh +++ b/test/test-indexes.sh @@ -15,7 +15,7 @@ TEST_PKG="python-psyco-doc" export LD_LIBRARY_PATH=$BUILDDIR/bin -OPTS="-qq -o RootDir=. -o Dir::Bin::Methods=$BUILDDIR/bin/methods -o Debug::NoLocking=true" +OPTS="-qq -o Dir::Bin::Methods=$BUILDDIR/bin/methods -o Debug::NoLocking=true" DEBUG="" #DEBUG="-o Debug::pkgCacheGen=true" #DEBUG="-o Debug::pkgAcquire=true" @@ -115,12 +115,18 @@ cd $WORKDIR rm -fr etc var rm -f home ln -s /home home -mkdir -p etc/apt/preferences.d etc/apt/trusted.gpg.d var/cache/apt/archives/partial var/lib/apt/lists/partial var/lib/dpkg +mkdir -p etc/apt/preferences.d etc/apt/trusted.gpg.d etc/apt/apt.conf.d var/cache/apt/archives/partial var/lib/apt/lists/partial var/lib/dpkg cp /etc/apt/trusted.gpg etc/apt touch var/lib/dpkg/status echo "deb $TEST_SOURCE" > etc/apt/sources.list echo "deb-src $TEST_SOURCE" >> etc/apt/sources.list +# specifying -o RootDir at the command line does not work for +# etc/apt/apt.conf.d/ since it is parsed after pkgInitConfig(); $APT_CONFIG is +# checked first, so this works +echo 'RootDir ".";' > apt_config +export APT_CONFIG=`pwd`/apt_config + echo "===== uncompressed indexes =====" # first attempt should fail, no trusted GPG key check_update -- cgit v1.2.3 From 08abac551a4bd4a26be4935d6f0707855f166da0 Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Thu, 17 Jun 2010 13:18:19 +0200 Subject: test-indexes.sh: Actually test for non/pre-existing indexes in compressed mode --- test/test-indexes.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/test/test-indexes.sh b/test/test-indexes.sh index 452b0cc7a..514e82534 100755 --- a/test/test-indexes.sh +++ b/test/test-indexes.sh @@ -32,6 +32,7 @@ check_update() { rm -f etc/apt/trusted.gpg etc/apt/secring.gpg touch etc/apt/trusted.gpg etc/apt/secring.gpg + find var/lib/apt/lists/ -type f | xargs -r rm out=$($APT_GET "$@" update 2>&1) echo "$out" | grep -q NO_PUBKEY key=$(echo "$out" | sed -n '/NO_PUBKEY/ { s/^.*NO_PUBKEY \([[:alnum:]]\+\)$/\1/; p}') @@ -39,6 +40,7 @@ check_update() { gpg -q --no-options --no-default-keyring --secret-keyring etc/apt/secring.gpg --trustdb-name etc/apt/trustdb.gpg --keyring etc/apt/trusted.gpg --primary-keyring etc/apt/trusted.gpg --keyserver $GPG_KEYSERVER --recv-keys $key echo "--- apt-get update $@ (with trusted keys)" + find var/lib/apt/lists/ -type f | xargs -r rm $APT_GET "$@" update } @@ -144,7 +146,6 @@ $APT_GET -o Acquire::PDiffs=true update check_indexes echo "===== compressed indexes =====" -find var/lib/apt/lists/ -type f | xargs -r rm check_update -o Acquire::GzipIndexes=true check_indexes compressed check_cache @@ -152,11 +153,11 @@ check_install check_get_source echo "--- apt-get update with preexisting indexes" -check_update -o Acquire::GzipIndexes=true +$APT_GET -o Acquire::GzipIndexes=true update check_indexes echo "--- apt-get update with preexisting indexes and pdiff mode" -check_update -o Acquire::GzipIndexes=true -o Acquire::PDiffs=true update +$APT_GET -o Acquire::GzipIndexes=true -o Acquire::PDiffs=true update check_indexes echo "===== ALL TESTS PASSED =====" -- cgit v1.2.3 From 321798bedb529edf914f2c884e4d38363c908315 Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Thu, 17 Jun 2010 13:35:23 +0200 Subject: test-indexes.sh: fix check_indexes call in compressed mode --- test/test-indexes.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/test-indexes.sh b/test/test-indexes.sh index 514e82534..2c6ccfedf 100755 --- a/test/test-indexes.sh +++ b/test/test-indexes.sh @@ -154,10 +154,10 @@ check_get_source echo "--- apt-get update with preexisting indexes" $APT_GET -o Acquire::GzipIndexes=true update -check_indexes +check_indexes compressed echo "--- apt-get update with preexisting indexes and pdiff mode" $APT_GET -o Acquire::GzipIndexes=true -o Acquire::PDiffs=true update -check_indexes +check_indexes compressed echo "===== ALL TESTS PASSED =====" -- cgit v1.2.3 From 0b9032b180763ec974cdc918f93910540f05293a Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Thu, 17 Jun 2010 13:36:52 +0200 Subject: pkgAcqIndex::Done(): If we have an IMS-Hit, also rename the destination file in GzipIndexes mode, to avoid it being cleaned --- apt-pkg/acquire-item.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index bcfe6a98a..fe81ee791 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -739,16 +739,21 @@ void pkgAcqIndex::Done(string Message,unsigned long Size,string Hash, ErrorText = "Method gave a blank filename"; } + string compExt = flExtension(flNotDir(URI(Desc.URI).Path)); + // The files timestamp matches - if (StringToBool(LookupTag(Message,"IMS-Hit"),false) == true) + if (StringToBool(LookupTag(Message,"IMS-Hit"),false) == true) { + if (_config->FindB("Acquire::GzipIndexes",false) && compExt == "gz") + // Update DestFile for .gz suffix so that the clean operation keeps it + DestFile += ".gz"; return; + } if (FileName == DestFile) Erase = true; else Local = true; - string compExt = flExtension(flNotDir(URI(Desc.URI).Path)); string decompProg; // If we enable compressed indexes and already have gzip, keep it -- cgit v1.2.3 From eee5ab3cb4a20a26468e6a0dc78ca0706b2b4ec6 Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Thu, 17 Jun 2010 13:38:42 +0200 Subject: test-indexes.sh: Just for paranoia, test that apt-cache is still working after apt-get update with previously existing indexes --- test/test-indexes.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/test-indexes.sh b/test/test-indexes.sh index 2c6ccfedf..84413d2dd 100755 --- a/test/test-indexes.sh +++ b/test/test-indexes.sh @@ -140,10 +140,12 @@ check_get_source echo "--- apt-get update with preexisting indexes" $APT_GET update check_indexes +check_cache echo "--- apt-get update with preexisting indexes and pdiff mode" $APT_GET -o Acquire::PDiffs=true update check_indexes +check_cache echo "===== compressed indexes =====" check_update -o Acquire::GzipIndexes=true @@ -155,9 +157,11 @@ check_get_source echo "--- apt-get update with preexisting indexes" $APT_GET -o Acquire::GzipIndexes=true update check_indexes compressed +check_cache echo "--- apt-get update with preexisting indexes and pdiff mode" $APT_GET -o Acquire::GzipIndexes=true -o Acquire::PDiffs=true update check_indexes compressed +check_cache echo "===== ALL TESTS PASSED =====" -- cgit v1.2.3 From 0311890f60a1075222acf066a6405cb452b475d0 Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Thu, 17 Jun 2010 13:41:48 +0200 Subject: test-indexes.sh: Also test compressed index mode with apt.conf.d file --- test/test-indexes.sh | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/test/test-indexes.sh b/test/test-indexes.sh index 84413d2dd..ce2c36481 100755 --- a/test/test-indexes.sh +++ b/test/test-indexes.sh @@ -33,12 +33,16 @@ check_update() { rm -f etc/apt/trusted.gpg etc/apt/secring.gpg touch etc/apt/trusted.gpg etc/apt/secring.gpg find var/lib/apt/lists/ -type f | xargs -r rm + + # first attempt should fail, no trusted GPG key out=$($APT_GET "$@" update 2>&1) echo "$out" | grep -q NO_PUBKEY key=$(echo "$out" | sed -n '/NO_PUBKEY/ { s/^.*NO_PUBKEY \([[:alnum:]]\+\)$/\1/; p}') + # get keyring gpg -q --no-options --no-default-keyring --secret-keyring etc/apt/secring.gpg --trustdb-name etc/apt/trustdb.gpg --keyring etc/apt/trusted.gpg --primary-keyring etc/apt/trusted.gpg --keyserver $GPG_KEYSERVER --recv-keys $key + # now it should work echo "--- apt-get update $@ (with trusted keys)" find var/lib/apt/lists/ -type f | xargs -r rm $APT_GET "$@" update @@ -130,7 +134,6 @@ echo 'RootDir ".";' > apt_config export APT_CONFIG=`pwd`/apt_config echo "===== uncompressed indexes =====" -# first attempt should fail, no trusted GPG key check_update check_indexes check_cache @@ -147,7 +150,7 @@ $APT_GET -o Acquire::PDiffs=true update check_indexes check_cache -echo "===== compressed indexes =====" +echo "===== compressed indexes (CLI option) =====" check_update -o Acquire::GzipIndexes=true check_indexes compressed check_cache @@ -164,4 +167,26 @@ $APT_GET -o Acquire::GzipIndexes=true -o Acquire::PDiffs=true update check_indexes compressed check_cache +echo "===== compressed indexes (apt.conf.d option) =====" +cat <<EOF > etc/apt/apt.conf.d/02compress-indexes +Acquire::GzipIndexes "true"; +Acquire::CompressionTypes::Order:: "gz"; +EOF + +check_update +check_indexes compressed +check_cache +check_install +check_get_source + +echo "--- apt-get update with preexisting indexes" +$APT_GET update +check_indexes compressed +check_cache + +echo "--- apt-get update with preexisting indexes and pdiff mode" +$APT_GET -o Acquire::PDiffs=true update +check_indexes compressed +check_cache + echo "===== ALL TESTS PASSED =====" -- cgit v1.2.3 From 594bfe6a9f11e393469522fdea54444488d6f8a3 Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Thu, 17 Jun 2010 13:58:39 +0200 Subject: test-indexes.sh: quiesce apt-get source; we know that we cannot verify package signatures --- test/test-indexes.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/test-indexes.sh b/test/test-indexes.sh index ce2c36481..916532183 100755 --- a/test/test-indexes.sh +++ b/test/test-indexes.sh @@ -103,7 +103,8 @@ check_install() { # test apt-get source check_get_source() { echo "--- apt-get source" - $APT_GET source $TEST_PKG + # quiesce: it'll complain about not being able to verify the signature + $APT_GET source $TEST_PKG >/dev/null 2>&1 test -f $TEST_SRC_*.dsc test -d $TEST_SRC-* rm -r $TEST_SRC* -- cgit v1.2.3 From 9d706e45650240cb7b05104211d93220dd6f614c Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Mon, 21 Jun 2010 13:22:40 +0200 Subject: debian/changelog: it is an ABI break after all --- debian/changelog | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 380060aa6..e44d7986d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -11,8 +11,9 @@ apt (0.7.26~exp5) UNRELEASED; urgency=low * apt-pkg/contrib/fileutl.{h,cc}: - Add support for transparent reading of gzipped files. - Link against zlib (in apt-pkg/makefile) and add zlib build dependency. - - [Weak internal ABI BREAK] This changes the behaviour of FileFd for - reading gzipped files. + - [ABI BREAK] This adds a new private member to FileFd, but its + initialization is in the public header file. This also changes the + behaviour of FileFd for reading gzipped files. * configure.in: - Check for zlib library and headers. * apt-pkg/deb/debindexfile.cc: -- cgit v1.2.3 From c4fc2fd7fa0fc63fd8cd6bc9b73492e6baf0222a Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Thu, 24 Jun 2010 21:27:27 +0200 Subject: Switch FileFd to not transparently gunzip, since that breaks code which expects the compressed contents to stay (such as the copy backend, or when using file:// repositories. Instead, introduce a new ReadOnlyGzip mode and use that where needed --- apt-pkg/acquire-item.cc | 4 ++-- apt-pkg/contrib/fileutl.cc | 14 +++++++++----- apt-pkg/contrib/fileutl.h | 2 +- apt-pkg/deb/debindexfile.cc | 6 +++--- apt-pkg/deb/debrecords.cc | 2 +- apt-pkg/deb/debsrcrecords.h | 2 +- cmdline/apt-cache.cc | 2 +- debian/changelog | 10 +++++++--- 8 files changed, 25 insertions(+), 17 deletions(-) diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index fe81ee791..9abdb0ad0 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -228,7 +228,7 @@ bool pkgAcqDiffIndex::ParseDiffIndex(string IndexDiffFile) /*{{{*/ ss >> ServerSha1 >> size; unsigned long const ServerSize = atol(size.c_str()); - FileFd fd(CurrentPackagesFile, FileFd::ReadOnly); + FileFd fd(CurrentPackagesFile, FileFd::ReadOnlyGzip); SHA1Summation SHA1; SHA1.AddFD(fd.Fd(), fd.Size()); string const local_sha1 = SHA1.Result(); @@ -459,7 +459,7 @@ bool pkgAcqIndexDiffs::QueueNextDiff() /*{{{*/ string FinalFile = _config->FindDir("Dir::State::lists"); FinalFile += URItoFileName(RealURI); - FileFd fd(FinalFile, FileFd::ReadOnly); + FileFd fd(FinalFile, FileFd::ReadOnlyGzip); SHA1Summation SHA1; SHA1.AddFD(fd.Fd(), fd.Size()); string local_sha1 = string(SHA1.Result()); diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc index 11a9e7f7b..2b91a46f7 100644 --- a/apt-pkg/contrib/fileutl.cc +++ b/apt-pkg/contrib/fileutl.cc @@ -604,12 +604,16 @@ bool FileFd::Open(string FileName,OpenMode Mode, unsigned long Perms) { case ReadOnly: iFd = open(FileName.c_str(),O_RDONLY); + break; + + case ReadOnlyGzip: + iFd = open(FileName.c_str(),O_RDONLY); if (iFd > 0 && FileName.compare(FileName.size()-3, 3, ".gz") == 0) { - gz = gzdopen (iFd, "r"); - if (gz == NULL) { - close (iFd); - iFd = -1; - } + gz = gzdopen (iFd, "r"); + if (gz == NULL) { + close (iFd); + iFd = -1; + } } break; diff --git a/apt-pkg/contrib/fileutl.h b/apt-pkg/contrib/fileutl.h index 9925bbed4..c4b282126 100644 --- a/apt-pkg/contrib/fileutl.h +++ b/apt-pkg/contrib/fileutl.h @@ -41,7 +41,7 @@ class FileFd gzFile gz; public: - enum OpenMode {ReadOnly,WriteEmpty,WriteExists,WriteAny,WriteTemp}; + enum OpenMode {ReadOnly,WriteEmpty,WriteExists,WriteAny,WriteTemp,ReadOnlyGzip}; inline bool Read(void *To,unsigned long Size,bool AllowEof) { diff --git a/apt-pkg/deb/debindexfile.cc b/apt-pkg/deb/debindexfile.cc index 9832329c0..7d7bd09fb 100644 --- a/apt-pkg/deb/debindexfile.cc +++ b/apt-pkg/deb/debindexfile.cc @@ -273,7 +273,7 @@ unsigned long debPackagesIndex::Size() const bool debPackagesIndex::Merge(pkgCacheGenerator &Gen,OpProgress &Prog) const { string PackageFile = IndexFile("Packages"); - FileFd Pkg(PackageFile,FileFd::ReadOnly); + FileFd Pkg(PackageFile,FileFd::ReadOnlyGzip); debListParser Parser(&Pkg); if (_error->PendingError() == true) return _error->Error("Problem opening %s",PackageFile.c_str()); @@ -464,7 +464,7 @@ bool debTranslationsIndex::Merge(pkgCacheGenerator &Gen,OpProgress &Prog) const string TranslationFile = IndexFile(Language); if (TranslationsAvailable() && FileExists(TranslationFile)) { - FileFd Trans(TranslationFile,FileFd::ReadOnly); + FileFd Trans(TranslationFile,FileFd::ReadOnlyGzip); debListParser TransParser(&Trans); if (_error->PendingError() == true) return false; @@ -544,7 +544,7 @@ unsigned long debStatusIndex::Size() const /* */ bool debStatusIndex::Merge(pkgCacheGenerator &Gen,OpProgress &Prog) const { - FileFd Pkg(File,FileFd::ReadOnly); + FileFd Pkg(File,FileFd::ReadOnlyGzip); if (_error->PendingError() == true) return false; debListParser Parser(&Pkg); diff --git a/apt-pkg/deb/debrecords.cc b/apt-pkg/deb/debrecords.cc index 34ef0d8f2..ec9e395ef 100644 --- a/apt-pkg/deb/debrecords.cc +++ b/apt-pkg/deb/debrecords.cc @@ -19,7 +19,7 @@ // --------------------------------------------------------------------- /* */ debRecordParser::debRecordParser(string FileName,pkgCache &Cache) : - File(FileName,FileFd::ReadOnly), + File(FileName,FileFd::ReadOnlyGzip), Tags(&File, std::max(Cache.Head().MaxVerFileSize, Cache.Head().MaxDescFileSize) + 200) { diff --git a/apt-pkg/deb/debsrcrecords.h b/apt-pkg/deb/debsrcrecords.h index c39d78bae..905264daa 100644 --- a/apt-pkg/deb/debsrcrecords.h +++ b/apt-pkg/deb/debsrcrecords.h @@ -48,7 +48,7 @@ class debSrcRecordParser : public pkgSrcRecords::Parser virtual bool Files(vector<pkgSrcRecords::File> &F); debSrcRecordParser(string const &File,pkgIndexFile const *Index) - : Parser(Index), Fd(File,FileFd::ReadOnly), Tags(&Fd,102400), + : Parser(Index), Fd(File,FileFd::ReadOnlyGzip), Tags(&Fd,102400), Buffer(0), BufSize(0) {} ~debSrcRecordParser(); }; diff --git a/cmdline/apt-cache.cc b/cmdline/apt-cache.cc index 3f68579cc..2b47184f9 100644 --- a/cmdline/apt-cache.cc +++ b/cmdline/apt-cache.cc @@ -1220,7 +1220,7 @@ bool DisplayRecord(pkgCache::VerIterator V) if (I.IsOk() == false) return _error->Error(_("Package file %s is out of sync."),I.FileName()); - FileFd PkgF(I.FileName(),FileFd::ReadOnly); + FileFd PkgF(I.FileName(),FileFd::ReadOnlyGzip); if (_error->PendingError() == true) return false; diff --git a/debian/changelog b/debian/changelog index e44d7986d..f3f2d3df4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -9,13 +9,17 @@ apt (0.7.26~exp5) UNRELEASED; urgency=low - Make DEB_BUILD_OPTIONS=noopt actually work by passing the right CXXFLAGS. * apt-pkg/contrib/fileutl.{h,cc}: - - Add support for transparent reading of gzipped files. + - Add support for reading of gzipped files with the new "ReadOnlyGzip" + OpenMode. - Link against zlib (in apt-pkg/makefile) and add zlib build dependency. - [ABI BREAK] This adds a new private member to FileFd, but its - initialization is in the public header file. This also changes the - behaviour of FileFd for reading gzipped files. + initialization is in the public header file. * configure.in: - Check for zlib library and headers. + * apt-pkg/acquire-item.cc, apt-pkg/deb/debindexfile.cc, + apt-pkg/deb/debrecords.cc, apt-pkg/deb/debsrcrecords.h, + cmdline/apt-cache.cc: + - Open Packages, Sources, and Translations indexes in "ReadOnlyGzip" mode. * apt-pkg/deb/debindexfile.cc: - If we do not find uncompressed package/source/translation indexes, look for gzip compressed ones. -- cgit v1.2.3 From c19625e7dc99caea960c91b1ce6dc999ec6f4ed4 Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Thu, 24 Jun 2010 21:27:59 +0200 Subject: test-indexes.sh: Test handling of local file:// archives --- test/test-indexes.sh | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/test/test-indexes.sh b/test/test-indexes.sh index 916532183..b0ae4dcd4 100755 --- a/test/test-indexes.sh +++ b/test/test-indexes.sh @@ -21,6 +21,7 @@ DEBUG="" #DEBUG="-o Debug::pkgAcquire=true" APT_GET="$BUILDDIR/bin/apt-get $OPTS $DEBUG" APT_CACHE="$BUILDDIR/bin/apt-cache $OPTS $DEBUG" +APT_FTPARCHIVE="$BUILDDIR/bin/apt-ftparchive" [ -x "$BUILDDIR/bin/apt-get" ] || { echo "please build the tree first" >&2 @@ -79,9 +80,9 @@ check_cache() { # again (with cache) $APT_CACHE show $TEST_PKG | grep -q ^Version: rm var/cache/apt/*.bin - $APT_CACHE policy $TEST_PKG | grep -q '500 http://' + $APT_CACHE policy $TEST_PKG | egrep -q '500 (http://|file:/)' # again (with cache) - $APT_CACHE policy $TEST_PKG | grep -q '500 http://' + $APT_CACHE policy $TEST_PKG | egrep -q '500 (http://|file:/)' TEST_SRC=`$APT_CACHE show $TEST_PKG | grep ^Source: | awk '{print $2}'` rm var/cache/apt/*.bin @@ -131,7 +132,7 @@ echo "deb-src $TEST_SOURCE" >> etc/apt/sources.list # specifying -o RootDir at the command line does not work for # etc/apt/apt.conf.d/ since it is parsed after pkgInitConfig(); $APT_CONFIG is # checked first, so this works -echo 'RootDir ".";' > apt_config +echo "RootDir \"$WORKDIR\";" > apt_config export APT_CONFIG=`pwd`/apt_config echo "===== uncompressed indexes =====" @@ -190,4 +191,34 @@ $APT_GET -o Acquire::PDiffs=true update check_indexes compressed check_cache +rm etc/apt/apt.conf.d/02compress-indexes + +echo "==== apt-ftparchive ====" +mkdir arch +$APT_GET install -d $TEST_PKG +cp var/cache/apt/archives/$TEST_PKG*.deb arch/ +cd arch +$APT_GET source -d $TEST_PKG >/dev/null 2>&1 +$APT_FTPARCHIVE packages . | gzip -9 > Packages.gz +$APT_FTPARCHIVE sources . | gzip -9 > Sources.gz +cd .. + +echo "deb file://$WORKDIR/arch / +deb-src file://$WORKDIR/arch /" > etc/apt/sources.list +$APT_GET clean + +echo "==== uncompressed indexes from local file:// archive ====" +echo "--- apt-get update" +$APT_GET update +check_indexes +check_cache +check_get_source + +echo "==== compressed indexes from local file:// archive ====" +echo "--- apt-get update" +$APT_GET -o Acquire::GzipIndexes=true update +check_indexes compressed +check_cache +check_get_source + echo "===== ALL TESTS PASSED =====" -- cgit v1.2.3 From 7aeee3653d7d0dc34769bb74a2bf4824b438834f Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Thu, 24 Jun 2010 22:43:07 +0200 Subject: apt-pkg/acquire-item.cc: Fix handling of local (file:/) sources --- apt-pkg/acquire-item.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index 9abdb0ad0..a506aa9aa 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -757,7 +757,7 @@ void pkgAcqIndex::Done(string Message,unsigned long Size,string Hash, string decompProg; // If we enable compressed indexes and already have gzip, keep it - if (_config->FindB("Acquire::GzipIndexes",false) && compExt == "gz") { + if (_config->FindB("Acquire::GzipIndexes",false) && compExt == "gz" && !Local) { string FinalFile = _config->FindDir("Dir::State::lists"); FinalFile += URItoFileName(RealURI) + ".gz"; //if(Debug) -- cgit v1.2.3 From 9a3a552a2859040ffc587a4e5d8d96311038e680 Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Thu, 24 Jun 2010 22:59:48 +0200 Subject: test-indexes.sh: EXFAIL: file:/ URIs currently decompress even with the GzipIndexes option; not a big deal for now --- test/test-indexes.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/test-indexes.sh b/test/test-indexes.sh index b0ae4dcd4..dad3e1fb2 100755 --- a/test/test-indexes.sh +++ b/test/test-indexes.sh @@ -217,7 +217,9 @@ check_get_source echo "==== compressed indexes from local file:// archive ====" echo "--- apt-get update" $APT_GET -o Acquire::GzipIndexes=true update -check_indexes compressed +# EXFAIL: file:/ URIs currently decompress even with above option +#check_indexes compressed +check_indexes check_cache check_get_source -- cgit v1.2.3 From d13c2d3f7b10e558301a05948e91ac4a60160793 Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Tue, 6 Jul 2010 12:48:06 +0200 Subject: FileFd(): Drop file name extension check in ReadOnlyGzip mode Drop the ".gz" extension check in FileFd::Open() in ReadOnlyGzip mode, to not depend on a particular file extension. This allows rewriting the gzip method using internal decompression (on ".decomp" files). This requires a zlib bug workaround in FileFd::Close(): When opening an empty file with gzdopen(), gzclose() fails with Z_BUF_ERROR. Do not count this as a failure. --- apt-pkg/contrib/fileutl.cc | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc index 2b91a46f7..0d2d3f356 100644 --- a/apt-pkg/contrib/fileutl.cc +++ b/apt-pkg/contrib/fileutl.cc @@ -608,7 +608,7 @@ bool FileFd::Open(string FileName,OpenMode Mode, unsigned long Perms) case ReadOnlyGzip: iFd = open(FileName.c_str(),O_RDONLY); - if (iFd > 0 && FileName.compare(FileName.size()-3, 3, ".gz") == 0) { + if (iFd > 0) { gz = gzdopen (iFd, "r"); if (gz == NULL) { close (iFd); @@ -827,8 +827,16 @@ bool FileFd::Close() { bool Res = true; if ((Flags & AutoClose) == AutoClose) - if ((gz != NULL && gzclose(gz) != 0) || (gz == NULL && iFd > 0 && close(iFd) != 0)) - Res &= _error->Errno("close",_("Problem closing the file")); + { + if (gz != NULL) { + int e = gzclose(gz); + // gzdopen() on empty files always fails with "buffer error" here, ignore that + if (e != 0 && e != Z_BUF_ERROR) + Res &= _error->Errno("close",_("Problem closing the gzip file")); + } else + if (iFd > 0 && close(iFd) != 0) + Res &= _error->Errno("close",_("Problem closing the file")); + } iFd = -1; gz = NULL; -- cgit v1.2.3 From 127e6df37213a1fda0dd5b44182acf678ccbbf02 Mon Sep 17 00:00:00 2001 From: "martin@piware.de" <> Date: Tue, 6 Jul 2010 13:14:57 +0200 Subject: methods/gzip.cc: With FileFd now being able to read gzipped files, there is no need for the gzip method any more to spawn an external gzip process. Rewrite it to use FileFd directly, which makes the code a lot simpler, and also using less memory and overhead. --- debian/changelog | 4 ++++ methods/gzip.cc | 63 +++++++------------------------------------------------- 2 files changed, 11 insertions(+), 56 deletions(-) diff --git a/debian/changelog b/debian/changelog index f3f2d3df4..6f3d2eb71 100644 --- a/debian/changelog +++ b/debian/changelog @@ -38,6 +38,10 @@ apt (0.7.26~exp5) UNRELEASED; urgency=low - Fix return value of pkgAcqFile::Custom600Headers() in the non-index case, to avoid returning NULL and causing crashers in callers. This also fixes a compiler warning. + * methods/gzip.cc: With FileFd now being able to read gzipped files, there + is no need for the gzip method any more to spawn an external gzip process. + Rewrite it to use FileFd directly, which makes the code a lot simpler, and + also using less memory and overhead. -- Christian Perrier <bubulle@debian.org> Tue, 11 May 2010 19:52:00 +0200 diff --git a/methods/gzip.cc b/methods/gzip.cc index f732c0b86..72e3ac909 100644 --- a/methods/gzip.cc +++ b/methods/gzip.cc @@ -23,8 +23,6 @@ #include <apti18n.h> /*}}}*/ -const char *Prog; - class GzipMethod : public pkgAcqMethod { virtual bool Fetch(FetchItem *Itm); @@ -43,14 +41,12 @@ bool GzipMethod::Fetch(FetchItem *Itm) URI Get = Itm->Uri; string Path = Get.Host + Get.Path; // To account for relative paths - string GzPathOption = "Dir::bin::"+string(Prog); - FetchResult Res; Res.Filename = Itm->DestFile; URIStart(Res); // Open the source and destination files - FileFd From(Path,FileFd::ReadOnly); + FileFd From(Path,FileFd::ReadOnlyGzip); // if the file is empty, just rename it and return if(From.Size() == 0) @@ -59,40 +55,12 @@ bool GzipMethod::Fetch(FetchItem *Itm) return true; } - int GzOut[2]; - if (pipe(GzOut) < 0) - return _error->Errno("pipe",_("Couldn't open pipe for %s"),Prog); - - // Fork gzip - pid_t Process = ExecFork(); - if (Process == 0) - { - close(GzOut[0]); - dup2(From.Fd(),STDIN_FILENO); - dup2(GzOut[1],STDOUT_FILENO); - From.Close(); - close(GzOut[1]); - SetCloseExec(STDIN_FILENO,false); - SetCloseExec(STDOUT_FILENO,false); - - const char *Args[3]; - string Tmp = _config->Find(GzPathOption,Prog); - Args[0] = Tmp.c_str(); - Args[1] = "-d"; - Args[2] = 0; - execvp(Args[0],(char **)Args); - _exit(100); - } - From.Close(); - close(GzOut[1]); - - FileFd FromGz(GzOut[0]); // For autoclose FileFd To(Itm->DestFile,FileFd::WriteEmpty); To.EraseOnFailure(); if (_error->PendingError() == true) return false; - // Read data from gzip, generate checksums and write + // Read data from source, generate checksums and write Hashes Hash; bool Failed = false; while (1) @@ -100,36 +68,23 @@ bool GzipMethod::Fetch(FetchItem *Itm) unsigned char Buffer[4*1024]; unsigned long Count; - Count = read(GzOut[0],Buffer,sizeof(Buffer)); - if (Count < 0 && errno == EINTR) - continue; - - if (Count < 0) + if (!From.Read(Buffer,sizeof(Buffer),&Count)) { - _error->Errno("read", _("Read error from %s process"),Prog); - Failed = true; - break; + To.OpFail(); + return false; } - if (Count == 0) break; - + Hash.Add(Buffer,Count); if (To.Write(Buffer,Count) == false) { Failed = true; - FromGz.Close(); break; } } - // Wait for gzip to finish - if (ExecWait(Process,_config->Find(GzPathOption,Prog).c_str(),false) == false) - { - To.OpFail(); - return false; - } - + From.Close(); To.Close(); if (Failed == true) @@ -165,9 +120,5 @@ int main(int argc, char *argv[]) setlocale(LC_ALL, ""); GzipMethod Mth; - - Prog = strrchr(argv[0],'/'); - Prog++; - return Mth.Run(); } -- cgit v1.2.3