diff options
44 files changed, 1110 insertions, 1341 deletions
diff --git a/README.MultiArch b/README.MultiArch index b2964ac38..588419b8d 100644 --- a/README.MultiArch +++ b/README.MultiArch @@ -47,67 +47,17 @@ and also to MultiArch as a Group consists of possible many packages which all have the same name and are therefore out of interest for pkgnames. -Caused by the paragraph "Dependencies involving Architecture: all packages" -in the MultiArch spec we have a second major conceptional change -which could even break existing applications, but we hope for the best… -An Architecture: all package is internally split into pseudo packages -for all MultiArch Architectures and additional a package with the -architecture "all" with no dependencies which is a dependency of all -these architecture depending packages. While the architecture depending -packages are mainly used for dependency resolution (a package of arch A which -depends on an arch all package assumes that the dependencies of this package -are also from arch A. Packages also sometimes change from any to all or v.v.) -the arch "all" package is used for scheduling download/installation of the -underlying "real" package. Note that the architecture depending packages can -be detected with Pseudo() while the "all" package reports exactly this arch -as package architecture and as pseudo architecture of the versions of this pkg. -Beware: All versions of a "real" architecture all package will be report "all" -as their architecture if asked with Arch() regardless if they are the "all" or -the architecture depending packages. If you want to know the architecture this -pseudo package was created for call Arch(true). Also, while the spec say that -arch:all packages are not allowed to have a MultiArch flag APT assigns a -special value to them: MultiArch: all. - - -As you might guess this arch:all handling has a few problems (but we think so -far that the problems are minor compared to the problems we would have with -other implementations.) -APT doesn't know which pseudo packages of such an arch all package are -"installed" (to satisfy dependencies), so APT will generate a Cache in which -all these pseudo packages are installed (e.g. apt-cache policy will display -them all as installed). Later in the DepCache step it will "remove" -all pseudo packages whose dependencies are not satisfied. -The expense is that if the package state is broken APT could come to the -conclusion to "remove" too many pseudo packages, but in a stable environment -APT should never end up in a broken system state… - - Given all these internal changes it is quite interesting that the actual implementation of MultiArch is trivial: Some implicit dependencies and a few more provides are all changes needed to get it working. Especially noteworthy is that it wasn't needed to change the resolver in any way and other parts only -need to be told about ignoring pseudo packages or using GrpIterator instead of -PkgIterator, so chances are good that libapt-applications will proceed to work -without or at least only require minor changes, but your mileage may vary… +need to be told about using GrpIterator instead of PkgIterator, so chances are +good that libapt-applications will proceed to work without or at least only +require minor changes, but your mileage may vary… Known Issues and/or noteworthy stuff: * The implementation is mostly untested, so it is very likely that APT will eat your kids if you aren't as lucky as the author of these patches. -* the (install)size of a pseudo package is always NULL - if you want to know - the (install)size you need to get the info from the arch "all" package. -* It is maybe confusing, but the arch "all" package does have the same versions - and in general roughly the same information with one subtil difference: - It doesn't have any dependency, regardless of the type. The pseudo packages - depend on this package. -* apt-cache policy foobar on installed architecture all package foobar will - report all architecture depending packages as installed. Displaying here the - correct information would require to build the complete DepCache… -* [BUG] An installed package which changes the architecture from any to all - (and v.v.) shows up in the NEW packages section instead of UPGRADE. -* [TODO] Investigate the DepCache pseudo-package killer heuristic: - e.g. add more safety guards… -* [FIXME] a few corner cases/missing features marked as FIXME in the code - [0] https://wiki.ubuntu.com/MultiarchSpec diff --git a/apt-inst/deb/debfile.cc b/apt-inst/deb/debfile.cc index cd7a88808..a40cd1ae8 100644 --- a/apt-inst/deb/debfile.cc +++ b/apt-inst/deb/debfile.cc @@ -20,6 +20,7 @@ #include <apt-pkg/extracttar.h> #include <apt-pkg/error.h> #include <apt-pkg/deblistparser.h> +#include <apt-pkg/aptconfiguration.h> #include <sys/stat.h> #include <unistd.h> @@ -46,7 +47,9 @@ debDebFile::debDebFile(FileFd &File) : File(File), AR(File) if (!CheckMember("data.tar.gz") && !CheckMember("data.tar.bz2") && - !CheckMember("data.tar.lzma")) { + !CheckMember("data.tar.lzma") && + !CheckMember("data.tar.xz")) { + // FIXME: add data.tar.xz here - adding it now would require a Translation round for a very small gain _error->Error(_("This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"), "data.tar.gz", "data.tar.bz2", "data.tar.lzma"); return; } @@ -125,22 +128,35 @@ bool debDebFile::ExtractControl(pkgDataBase &DB) /* Simple wrapper around tar.. */ bool debDebFile::ExtractArchive(pkgDirStream &Stream) { - // Get the archive member and positition the file - const ARArchive::Member *Member = AR.FindMember("data.tar.gz"); - const char *Compressor = "gzip"; - if (Member == 0) { - Member = AR.FindMember("data.tar.bz2"); - Compressor = "bzip2"; + // Get the archive member + const ARArchive::Member *Member = NULL; + std::string Compressor; + + std::string const data = "data.tar"; + std::vector<APT::Configuration::Compressor> compressor = APT::Configuration::getCompressors(); + for (std::vector<APT::Configuration::Compressor>::const_iterator c = compressor.begin(); + c != compressor.end(); ++c) + { + Member = AR.FindMember(std::string(data).append(c->Extension).c_str()); + if (Member == NULL) + continue; + Compressor = c->Binary; + break; } - if (Member == 0) { - Member = AR.FindMember("data.tar.lzma"); - Compressor = "lzma"; + + if (Member == NULL) + { + std::string ext = "data.tar.{"; + for (std::vector<APT::Configuration::Compressor>::const_iterator c = compressor.begin(); + c != compressor.end(); ++c) + ext.append(c->Extension.substr(1)); + ext.append("}"); + return _error->Error(_("Internal error, could not locate member %s"), ext.c_str()); } - if (Member == 0) - return _error->Error(_("Internal error, could not locate member")); + if (File.Seek(Member->Start) == false) return false; - + // Prepare Tar ExtractTar Tar(File,Member->Size,Compressor); if (_error->PendingError() == true) diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc index 66c182b23..0b4366e5e 100644 --- a/apt-pkg/algorithms.cc +++ b/apt-pkg/algorithms.cc @@ -90,21 +90,6 @@ bool pkgSimulate::Install(PkgIterator iPkg,string /*File*/) Describe(Pkg,cout,true,true); Sim.MarkInstall(Pkg,false); - if (strcmp(Pkg.Arch(),"all") == 0) - { - pkgCache::GrpIterator G = Pkg.Group(); - pkgCache::GrpIterator iG = iPkg.Group(); - for (pkgCache::PkgIterator P = G.FindPkg("any"); P.end() != true; P = G.NextPkg(P)) - { - if (strcmp(P.Arch(), "all") == 0) - continue; - if (iG.FindPkg(P.Arch())->CurrentVer == 0) - continue; - Flags[P->ID] = 1; - Sim.MarkInstall(P, false); - } - } - // Look for broken conflicts+predepends. for (PkgIterator I = Sim.PkgBegin(); I.end() == false; I++) { @@ -150,40 +135,6 @@ bool pkgSimulate::Configure(PkgIterator iPkg) Flags[Pkg->ID] = 2; - if (strcmp(Pkg.Arch(),"all") == 0) - { - pkgCache::GrpIterator G = Pkg.Group(); - for (pkgCache::PkgIterator P = G.FindPkg("any"); P.end() != true; P = G.NextPkg(P)) - { - if (strcmp(P.Arch(), "all") == 0) - continue; - if (Flags[P->ID] == 1) - Flags[P->ID] = 2; - } - } - - if (Sim[Pkg].InstBroken() == true) - { - /* We don't call Configure for Pseudo packages and if the 'all' is already installed - the simulation will think the pseudo package is not installed, so if something is - broken we walk over the dependencies and search for not installed pseudo packages */ - for (pkgCache::DepIterator D = Sim[Pkg].InstVerIter(Sim).DependsList(); D.end() == false; D++) - { - if (Sim.IsImportantDep(D) == false || - (Sim[D] & pkgDepCache::DepInstall) != 0) - continue; - pkgCache::PkgIterator T = D.TargetPkg(); - if (T.end() == true || T->CurrentVer != 0 || Flags[T->ID] != 0) - continue; - pkgCache::PkgIterator A = T.Group().FindPkg("all"); - if (A.end() == true || A->VersionList == 0 || A->CurrentVer == 0 || - Cache.VS().CheckDep(A.CurVersion(), pkgCache::Dep::Equals, T.CandVersion()) == false) - continue; - Sim.MarkInstall(T, false); - Flags[T->ID] = 2; - } - } - if (Sim[Pkg].InstBroken() == true) { cout << "Conf " << Pkg.FullName(false) << " broken" << endl; @@ -235,21 +186,6 @@ bool pkgSimulate::Remove(PkgIterator iPkg,bool Purge) Flags[Pkg->ID] = 3; Sim.MarkDelete(Pkg); - if (strcmp(Pkg.Arch(),"all") == 0) - { - pkgCache::GrpIterator G = Pkg.Group(); - pkgCache::GrpIterator iG = iPkg.Group(); - for (pkgCache::PkgIterator P = G.FindPkg("any"); P.end() != true; P = G.NextPkg(P)) - { - if (strcmp(P.Arch(), "all") == 0) - continue; - if (iG.FindPkg(P.Arch())->CurrentVer == 0) - continue; - Flags[P->ID] = 3; - Sim.MarkDelete(P); - } - } - if (Purge == true) cout << "Purg "; else diff --git a/apt-pkg/aptconfiguration.cc b/apt-pkg/aptconfiguration.cc index 3cf4d2429..b23e12acb 100644 --- a/apt-pkg/aptconfiguration.cc +++ b/apt-pkg/aptconfiguration.cc @@ -38,12 +38,11 @@ const Configuration::getCompressionTypes(bool const &Cached) { // setup the defaults for the compressiontypes => method mapping _config->CndSet("Acquire::CompressionTypes::bz2","bzip2"); + _config->CndSet("Acquire::CompressionTypes::xz","xz"); _config->CndSet("Acquire::CompressionTypes::lzma","lzma"); _config->CndSet("Acquire::CompressionTypes::gz","gzip"); - // Set default application paths to check for optional compression types - _config->CndSet("Dir::Bin::lzma", "/usr/bin/lzma"); - _config->CndSet("Dir::Bin::bzip2", "/bin/bzip2"); + setDefaultConfigurationForCompressors(); // accept non-list order as override setting for config settings on commandline std::string const overrideOrder = _config->Find("Acquire::CompressionTypes::Order",""); @@ -344,4 +343,86 @@ bool const Configuration::checkArchitecture(std::string const &Arch) { return (std::find(archs.begin(), archs.end(), Arch) != archs.end()); } /*}}}*/ +// setDefaultConfigurationForCompressors /*{{{*/ +void Configuration::setDefaultConfigurationForCompressors() { + // Set default application paths to check for optional compression types + _config->CndSet("Dir::Bin::lzma", "/usr/bin/lzma"); + _config->CndSet("Dir::Bin::xz", "/usr/bin/xz"); + _config->CndSet("Dir::Bin::bzip2", "/bin/bzip2"); +} + /*}}}*/ +// getCompressors - Return Vector of usbale compressors /*{{{*/ +// --------------------------------------------------------------------- +/* return a vector of compressors used by apt-ftparchive in the + multicompress functionality or to detect data.tar files */ +std::vector<APT::Configuration::Compressor> +const Configuration::getCompressors(bool const Cached) { + static std::vector<APT::Configuration::Compressor> compressors; + if (compressors.empty() == false) { + if (Cached == true) + return compressors; + else + compressors.clear(); + } + + setDefaultConfigurationForCompressors(); + + compressors.push_back(Compressor(".", "", "", "", "", 1)); + if (_config->Exists("Dir::Bin::gzip") == false || FileExists(_config->FindFile("Dir::Bin::gzip")) == true) + compressors.push_back(Compressor("gzip",".gz","gzip","-9n","-d",2)); + if (_config->Exists("Dir::Bin::bzip2") == false || FileExists(_config->FindFile("Dir::Bin::bzip2")) == true) + compressors.push_back(Compressor("bzip2",".bz2","bzip2","-9","-d",3)); + if (_config->Exists("Dir::Bin::lzma") == false || FileExists(_config->FindFile("Dir::Bin::lzma")) == true) + compressors.push_back(Compressor("lzma",".lzma","lzma","-9","-d",4)); + if (_config->Exists("Dir::Bin::xz") == false || FileExists(_config->FindFile("Dir::Bin::xz")) == true) + compressors.push_back(Compressor("xz",".xz","xz","-6","-d",5)); + + std::vector<std::string> const comp = _config->FindVector("APT::Compressor"); + for (std::vector<std::string>::const_iterator c = comp.begin(); + c != comp.end(); ++c) { + if (*c == "." || *c == "gzip" || *c == "bzip2" || *c == "lzma" || *c == "xz") + continue; + compressors.push_back(Compressor(c->c_str(), std::string(".").append(*c).c_str(), c->c_str(), "-9", "-d", 100)); + } + + return compressors; +} + /*}}}*/ +// getCompressorExtensions - supported data.tar extensions /*{{{*/ +// --------------------------------------------------------------------- +/* */ +std::vector<std::string> const Configuration::getCompressorExtensions() { + std::vector<APT::Configuration::Compressor> const compressors = getCompressors(); + std::vector<std::string> ext; + for (std::vector<APT::Configuration::Compressor>::const_iterator c = compressors.begin(); + c != compressors.end(); ++c) + if (c->Extension.empty() == false && c->Extension != ".") + ext.push_back(c->Extension); + return ext; +} + /*}}}*/ +// Compressor constructor /*{{{*/ +// --------------------------------------------------------------------- +/* */ +Configuration::Compressor::Compressor(char const *name, char const *extension, + char const *binary, + char const *compressArg, char const *uncompressArg, + unsigned short const cost) { + std::string const config = string("APT:Compressor::").append(name).append("::"); + Name = _config->Find(std::string(config).append("Name"), name); + Extension = _config->Find(std::string(config).append("Extension"), extension); + Binary = _config->Find(std::string(config).append("Binary"), binary); + Cost = _config->FindI(std::string(config).append("Cost"), cost); + std::string const compConf = std::string(config).append("CompressArg"); + if (_config->Exists(compConf) == true) + CompressArgs = _config->FindVector(compConf); + else if (compressArg != NULL) + CompressArgs.push_back(compressArg); + std::string const uncompConf = std::string(config).append("UncompressArg"); + if (_config->Exists(uncompConf) == true) + UncompressArgs = _config->FindVector(uncompConf); + else if (uncompressArg != NULL) + UncompressArgs.push_back(uncompressArg); +} + /*}}}*/ } diff --git a/apt-pkg/aptconfiguration.h b/apt-pkg/aptconfiguration.h index dd339d841..815db6cae 100644 --- a/apt-pkg/aptconfiguration.h +++ b/apt-pkg/aptconfiguration.h @@ -82,6 +82,35 @@ public: /*{{{*/ */ bool static const checkArchitecture(std::string const &Arch); + /** \brief Representation of supported compressors */ + struct Compressor { + std::string Name; + std::string Extension; + std::string Binary; + std::vector<std::string> CompressArgs; + std::vector<std::string> UncompressArgs; + unsigned short Cost; + + Compressor(char const *name, char const *extension, char const *binary, + char const *compressArg, char const *uncompressArg, + unsigned short const cost); + Compressor() {}; + }; + + /** \brief Return a vector of Compressors supported for data.tar's + * + * \param Cached saves the result so we need to calculated it only once + * this parameter should ony be used for testing purposes. + * + * \return a vector of Compressors + */ + std::vector<Compressor> static const getCompressors(bool const Cached = true); + + /** \brief Return a vector of extensions supported for data.tar's */ + std::vector<std::string> static const getCompressorExtensions(); + /*}}}*/ + private: /*{{{*/ + void static setDefaultConfigurationForCompressors(); /*}}}*/ }; /*}}}*/ diff --git a/apt-pkg/cacheiterators.h b/apt-pkg/cacheiterators.h index 449d4b441..31b3aced3 100644 --- a/apt-pkg/cacheiterators.h +++ b/apt-pkg/cacheiterators.h @@ -206,13 +206,9 @@ class pkgCache::VerIterator : public Iterator<Version, VerIterator> { inline const char *VerStr() const {return S->VerStr == 0?0:Owner->StrP + S->VerStr;}; inline const char *Section() const {return S->Section == 0?0:Owner->StrP + S->Section;}; inline const char *Arch() const { - if(S->MultiArch == pkgCache::Version::All) - return "all"; return S->ParentPkg == 0?0:Owner->StrP + ParentPkg()->Arch; }; - inline const char *Arch(bool const pseudo) const { - if(pseudo == false) - return Arch(); + __deprecated inline const char *Arch(bool const pseudo) const { return S->ParentPkg == 0?0:Owner->StrP + ParentPkg()->Arch; }; inline PkgIterator ParentPkg() const {return PkgIterator(*Owner,Owner->PkgP + S->ParentPkg);}; @@ -227,7 +223,7 @@ class pkgCache::VerIterator : public Iterator<Version, VerIterator> { string RelStr() const; bool Automatic() const; - bool Pseudo() const; + __deprecated bool Pseudo() const; VerFileIterator NewestFile() const; inline VerIterator(pkgCache &Owner,Version *Trg = 0) : Iterator<Version, VerIterator>(Owner, Trg) { diff --git a/apt-pkg/cacheset.h b/apt-pkg/cacheset.h index 3f4f0066b..e690d660c 100644 --- a/apt-pkg/cacheset.h +++ b/apt-pkg/cacheset.h @@ -257,7 +257,7 @@ public: /*{{{*/ inline const char *VerStr() const { return (**this).VerStr(); }; inline const char *Section() const { return (**this).Section(); }; inline const char *Arch() const { return (**this).Arch(); }; - inline const char *Arch(bool const pseudo) const { return (**this).Arch(pseudo); }; + __deprecated inline const char *Arch(bool const pseudo) const { return (**this).Arch(); }; inline pkgCache::PkgIterator ParentPkg() const { return (**this).ParentPkg(); }; inline pkgCache::DescIterator DescriptionList() const { return (**this).DescriptionList(); }; inline pkgCache::DescIterator TranslatedDescription() const { return (**this).TranslatedDescription(); }; @@ -268,7 +268,7 @@ public: /*{{{*/ inline const char *PriorityType() const { return (**this).PriorityType(); }; inline string RelStr() const { return (**this).RelStr(); }; inline bool Automatic() const { return (**this).Automatic(); }; - inline bool Pseudo() const { return (**this).Pseudo(); }; + __deprecated inline bool Pseudo() const { return false; }; inline pkgCache::VerFileIterator NewestFile() const { return (**this).NewestFile(); }; }; /*}}}*/ diff --git a/apt-pkg/cdrom.cc b/apt-pkg/cdrom.cc index 1e084bfb5..55600fe57 100644 --- a/apt-pkg/cdrom.cc +++ b/apt-pkg/cdrom.cc @@ -868,8 +868,20 @@ pkgUdevCdromDevices::Dlopen() /*{{{*/ return true; } /*}}}*/ + + /*{{{*/ +// compatiblity only with the old API/ABI, can be removed on the next +// ABI break +vector<CdromDevice> +pkgUdevCdromDevices::Scan() +{ + bool CdromOnly = _config->FindB("APT::cdrom::CdromOnly", true); + return ScanForRemovable(CdromOnly); +}; + /*}}}*/ + /*{{{*/ vector<CdromDevice> -pkgUdevCdromDevices::Scan() /*{{{*/ +pkgUdevCdromDevices::ScanForRemovable(bool CdromOnly) { vector<CdromDevice> cdrom_devices; struct udev_enumerate *enumerate; @@ -881,9 +893,10 @@ pkgUdevCdromDevices::Scan() /*{{{*/ udev_ctx = udev_new(); enumerate = udev_enumerate_new (udev_ctx); - udev_enumerate_add_match_property(enumerate, "ID_CDROM", "1"); - //FIXME: just use removalble here to include usb etc - //udev_enumerate_add_match_sysattr(enumerate, "removable", "1"); + if (CdromOnly) + udev_enumerate_add_match_property(enumerate, "ID_CDROM", "1"); + else + udev_enumerate_add_match_sysattr(enumerate, "removable", "1"); udev_enumerate_scan_devices (enumerate); devices = udev_enumerate_get_list_entry (enumerate); @@ -904,9 +917,6 @@ pkgUdevCdromDevices::Scan() /*{{{*/ else mountpath = FindMountPointForDevice(devnode); - if (_config->FindB("Debug::Acquire::cdrom", false)) - cerr << "found " << devnode << " mounted on " << mountpath << endl; - // fill in the struct cdrom.DeviceName = string(devnode); if (mountpath != "") { diff --git a/apt-pkg/cdrom.h b/apt-pkg/cdrom.h index 5f67a3a94..032fae755 100644 --- a/apt-pkg/cdrom.h +++ b/apt-pkg/cdrom.h @@ -68,7 +68,7 @@ class pkgCdrom /*{{{*/ /*}}}*/ -// class that uses libudev to find cdrom devices dynamically +// class that uses libudev to find cdrom/removable devices dynamically struct CdromDevice /*{{{*/ { string DeviceName; @@ -101,7 +101,12 @@ class pkgUdevCdromDevices /*{{{*/ // try to open bool Dlopen(); + + // this is the new interface + vector<CdromDevice> ScanForRemovable(bool CdromOnly); + // FIXME: compat with the old interface/API/ABI only vector<CdromDevice> Scan(); + }; /*}}}*/ diff --git a/apt-pkg/contrib/configuration.h b/apt-pkg/contrib/configuration.h index 175c1bef3..71e5a0e47 100644 --- a/apt-pkg/contrib/configuration.h +++ b/apt-pkg/contrib/configuration.h @@ -72,8 +72,8 @@ class Configuration string Find(string const &Name, string const &Default) const {return Find(Name.c_str(),Default.c_str());}; string FindFile(const char *Name,const char *Default = 0) const; string FindDir(const char *Name,const char *Default = 0) const; - std::vector<string> FindVector(string const &Name) const; std::vector<string> FindVector(const char *Name) const; + std::vector<string> FindVector(string const &Name) const { return FindVector(Name.c_str()); }; int FindI(const char *Name,int const &Default = 0) const; int FindI(string const &Name,int const &Default = 0) const {return FindI(Name.c_str(),Default);}; bool FindB(const char *Name,bool const &Default = false) const; diff --git a/apt-pkg/deb/deblistparser.cc b/apt-pkg/deb/deblistparser.cc index 9201e6a54..edc001abb 100644 --- a/apt-pkg/deb/deblistparser.cc +++ b/apt-pkg/deb/deblistparser.cc @@ -67,23 +67,12 @@ string debListParser::Package() { /*}}}*/ // ListParser::Architecture - Return the package arch /*{{{*/ // --------------------------------------------------------------------- -/* This will return the Architecture of the package this section describes - Note that architecture "all" packages will get the architecture of the - Packages file parsed here. */ +/* This will return the Architecture of the package this section describes */ string debListParser::Architecture() { - string const Result = Section.FindS("Architecture"); - if (Result.empty() == true || Result == "all") - { - if (Arch.empty() == true) - /* FIXME: this is a problem for installed arch all - packages as we don't know from which arch this - package was installed - and therefore which - dependency this package resolves. */ - return _config->Find("APT::Architecture"); - else - return Arch; - } - return Result; + std::string const Arch = Section.FindS("Architecture"); + if (Arch.empty() == true) + return _config->Find("APT::Architecture"); + return Arch; } /*}}}*/ // ListParser::ArchitectureAll /*{{{*/ @@ -112,27 +101,30 @@ bool debListParser::NewVersion(pkgCache::VerIterator &Ver) Ver->Section = UniqFindTagWrite("Section"); // Parse multi-arch - if (Section.FindS("Architecture") == "all") - /* Arch all packages can't have a Multi-Arch field, - but we need a special treatment for them nonetheless */ - Ver->MultiArch = pkgCache::Version::All; - else - { - string const MultiArch = Section.FindS("Multi-Arch"); - if (MultiArch.empty() == true) - Ver->MultiArch = pkgCache::Version::None; - else if (MultiArch == "same") - Ver->MultiArch = pkgCache::Version::Same; - else if (MultiArch == "foreign") - Ver->MultiArch = pkgCache::Version::Foreign; - else if (MultiArch == "allowed") - Ver->MultiArch = pkgCache::Version::Allowed; - else + string const MultiArch = Section.FindS("Multi-Arch"); + if (MultiArch.empty() == true) + Ver->MultiArch = pkgCache::Version::None; + else if (MultiArch == "same") { + // Parse multi-arch + if (Section.FindS("Architecture") == "all") { - _error->Warning("Unknown Multi-Arch type »%s« for package »%s«", - MultiArch.c_str(), Section.FindS("Package").c_str()); + /* Arch all packages can't be Multi-Arch: same */ + _error->Warning("Architecture: all package '%s' can't be Multi-Arch: same", + Section.FindS("Package").c_str()); Ver->MultiArch = pkgCache::Version::None; } + else + Ver->MultiArch = pkgCache::Version::Same; + } + else if (MultiArch == "foreign") + Ver->MultiArch = pkgCache::Version::Foreign; + else if (MultiArch == "allowed") + Ver->MultiArch = pkgCache::Version::Allowed; + else + { + _error->Warning("Unknown Multi-Arch type '%s' for package '%s'", + MultiArch.c_str(), Section.FindS("Package").c_str()); + Ver->MultiArch = pkgCache::Version::None; } // Archive Size @@ -150,24 +142,6 @@ bool debListParser::NewVersion(pkgCache::VerIterator &Ver) Ver->Priority = pkgCache::State::Extra; } - if (Ver->MultiArch == pkgCache::Version::All) - { - /* We maintain a "pseudo" arch=all package for architecture all versions - on which these versions can depend on. This pseudo package is many used - for downloading/installing: The other pseudo-packages will degenerate - to a NOP in the download/install step - this package will ensure that - it is downloaded only one time and installed only one time -- even if - the architecture bound versions coming in and out on regular basis. */ - if (strcmp(Ver.Arch(true),"all") == 0) - return true; - else if (MultiArchEnabled == true) - { - // our pseudo packages have no size to not confuse the fetcher - Ver->Size = 0; - Ver->InstalledSize = 0; - } - } - if (ParseDepends(Ver,"Depends",pkgCache::Dep::Depends) == false) return false; if (ParseDepends(Ver,"Pre-Depends",pkgCache::Dep::PreDepends) == false) @@ -644,7 +618,7 @@ bool debListParser::ParseDepends(pkgCache::VerIterator &Ver, return true; string Package; - string const pkgArch = Ver.Arch(true); + string const pkgArch = Ver.Arch(); string Version; unsigned int Op; @@ -683,7 +657,7 @@ bool debListParser::ParseProvides(pkgCache::VerIterator &Ver) { string Package; string Version; - string const Arch = Ver.Arch(true); + string const Arch = Ver.Arch(); unsigned int Op; while (1) @@ -768,7 +742,7 @@ bool debListParser::Step() if (Architecture == Arch) return true; - if (Architecture == "all") + if (Architecture == "all" && Arch == _config->Find("APT::Architecture")) return true; } diff --git a/apt-pkg/deb/debsrcrecords.cc b/apt-pkg/deb/debsrcrecords.cc index 21336e1af..749305005 100644 --- a/apt-pkg/deb/debsrcrecords.cc +++ b/apt-pkg/deb/debsrcrecords.cc @@ -14,6 +14,7 @@ #include <apt-pkg/error.h> #include <apt-pkg/strutl.h> #include <apt-pkg/configuration.h> +#include <apt-pkg/aptconfiguration.h> using std::max; /*}}}*/ @@ -111,7 +112,9 @@ bool debSrcRecordParser::Files(vector<pkgSrcRecords::File> &List) string Base = Sect.FindS("Directory"); if (Base.empty() == false && Base[Base.length()-1] != '/') Base += '/'; - + + std::vector<std::string> const compExts = APT::Configuration::getCompressorExtensions(); + // Iterate over the entire list grabbing each triplet const char *C = Files.c_str(); while (*C != 0) @@ -144,7 +147,8 @@ bool debSrcRecordParser::Files(vector<pkgSrcRecords::File> &List) } F.Type = string(F.Path,Tmp+1,Pos-Tmp); - if (F.Type == "gz" || F.Type == "bz2" || F.Type == "lzma" || F.Type == "tar") + if (std::find(compExts.begin(), compExts.end(), std::string(".").append(F.Type)) != compExts.end() || + F.Type == "tar") { Pos = Tmp-1; continue; diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc index eeb57f715..240574d2a 100644 --- a/apt-pkg/deb/dpkgpm.cc +++ b/apt-pkg/deb/dpkgpm.cc @@ -890,7 +890,10 @@ bool pkgDPkgPM::Go(int OutStatusFd) // Generate the argument list const char *Args[MaxArgs + 50]; - + // keep track of allocated strings for multiarch package names + char *Packages[MaxArgs + 50]; + unsigned int pkgcount = 0; + // Now check if we are within the MaxArgs limit // // this code below is problematic, because it may happen that @@ -998,13 +1001,20 @@ bool pkgDPkgPM::Go(int OutStatusFd) } else { + string const nativeArch = _config->Find("APT::Architecture"); for (;I != J && Size < MaxArgBytes; I++) { if((*I).Pkg.end() == true) continue; if (I->Op == Item::Configure && disappearedPkgs.find(I->Pkg.Name()) != disappearedPkgs.end()) continue; - Args[n++] = I->Pkg.Name(); + if (I->Pkg.Arch() == nativeArch || !strcmp(I->Pkg.Arch(), "all")) + Args[n++] = I->Pkg.Name(); + else + { + Packages[pkgcount] = strdup(I->Pkg.FullName(false).c_str()); + Args[n++] = Packages[pkgcount++]; + } Size += strlen(Args[n-1]); } } @@ -1154,6 +1164,11 @@ bool pkgDPkgPM::Go(int OutStatusFd) sigemptyset(&sigmask); sigprocmask(SIG_BLOCK,&sigmask,&original_sigmask); + /* clean up the temporary allocation for multiarch package names in + the parent, so we don't leak memory when we return. */ + for (unsigned int i = 0; i < pkgcount; i++) + free(Packages[i]); + // the result of the waitpid call int res; int select_ret; diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc index cb1264b04..a30bea3cc 100644 --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@ -705,107 +705,6 @@ void pkgDepCache::UpdateVerState(PkgIterator Pkg) } } /*}}}*/ -// DepCache::RemovePseudoInstalledPkg - MultiArch helper for Update() /*{{{*/ -// --------------------------------------------------------------------- -/* We "install" arch all packages for all archs if it is installed. Many - of these will be broken. This method will look at these broken Pkg and - "remove" it. */ -bool pkgDepCache::RemovePseudoInstalledPkg(PkgIterator &Pkg, std::set<unsigned long> &recheck) { - if (unlikely(Pkg->CurrentVer == 0)) - return false; - - VerIterator V = Pkg.CurrentVer(); - if (V->MultiArch != Version::All) - return false; - - // Never ever kill an "all" package - they have no dependency so they can't be broken - if (strcmp(Pkg.Arch(),"all") == 0) - return false; - - unsigned char const CurDepState = VersionState(V.DependsList(),DepInstall,DepInstMin,DepInstPolicy); - if ((CurDepState & DepInstMin) == DepInstMin) { - // okay, the package isn't broken, but is the package also required? - // If it has no real dependencies, no installed rdepends and doesn't - // provide something of value, we will kill it as not required. - // These pseudopackages have otherwise interesting effects if they get - // a new dependency in a newer version… - for (pkgCache::DepIterator D = V.DependsList(); - D.end() != true; ++D) - if (D.IsCritical() == true && D.ParentPkg()->Group != Pkg->Group) - return false; - for (DepIterator D = Pkg.RevDependsList(); D.end() != true; ++D) - { - if (D.IsCritical() == false) - continue; - PkgIterator const P = D.ParentPkg(); - if (P->Group == Pkg->Group) - continue; - if (P->CurrentVer != 0) - return false; - } - for (PrvIterator Prv = V.ProvidesList(); Prv.end() != true; Prv++) - for (DepIterator d = Prv.ParentPkg().RevDependsList(); - d.end() != true; ++d) - { - PkgIterator const P = d.ParentPkg(); - if (P->CurrentVer != 0 && - P->Group != Pkg->Group) - return false; - } - } - - // Dependencies for this arch all package are not statisfied - // so we installed it only for our convenience: get right of it now. - RemoveSizes(Pkg); - RemoveStates(Pkg); - - Pkg->CurrentVer = 0; - PkgState[Pkg->ID].InstallVer = 0; - - AddStates(Pkg); - Update(Pkg); - AddSizes(Pkg); - - // After the remove previously satisfied pseudo pkg could be now - // no longer satisfied, so we need to recheck the reverse dependencies - for (DepIterator d = Pkg.RevDependsList(); d.end() != true; ++d) - { - PkgIterator const P = d.ParentPkg(); - if (P->CurrentVer != 0) - recheck.insert(P.Index()); - } - - for (DepIterator d = V.DependsList(); d.end() != true; ++d) - { - PkgIterator const P = d.TargetPkg(); - for (PrvIterator Prv = P.ProvidesList(); Prv.end() != true; ++Prv) - { - PkgIterator const O = Prv.OwnerPkg(); - if (O->CurrentVer != 0) - recheck.insert(O.Index()); - } - - if (P->CurrentVer != 0) - recheck.insert(P.Index()); - } - - for (PrvIterator Prv = V.ProvidesList(); Prv.end() != true; Prv++) - { - for (DepIterator d = Prv.ParentPkg().RevDependsList(); - d.end() != true; ++d) - { - PkgIterator const P = d.ParentPkg(); - if (P->CurrentVer == 0) - continue; - - recheck.insert(P.Index()); - } - } - - - return true; -} - /*}}}*/ // DepCache::Update - Figure out all the state information /*{{{*/ // --------------------------------------------------------------------- /* This will figure out the state of all the packages and all the @@ -820,12 +719,8 @@ void pkgDepCache::Update(OpProgress *Prog) iBrokenCount = 0; iBadCount = 0; - std::set<unsigned long> recheck; - // Perform the depends pass int Done = 0; - bool const checkMultiArch = APT::Configuration::getArchitectures().size() > 1; - unsigned long killed = 0; for (PkgIterator I = PkgBegin(); I.end() != true; I++,Done++) { if (Prog != 0 && Done%20 == 0) @@ -858,69 +753,6 @@ void pkgDepCache::Update(OpProgress *Prog) AddSizes(I); UpdateVerState(I); AddStates(I); - - if (checkMultiArch != true || I->CurrentVer == 0) - continue; - - VerIterator const V = I.CurrentVer(); - if (V->MultiArch != Version::All) - continue; - - recheck.insert(I.Index()); - --Done; // no progress if we need to recheck the package - } - - if (checkMultiArch == true) { - /* FIXME: recheck breaks proper progress reporting as we don't know - how many packages we need to recheck. To lower the effect - a bit we increase with a kill, but we should do something more clever… */ - while(recheck.empty() == false) - for (std::set<unsigned long>::const_iterator p = recheck.begin(); - p != recheck.end();) { - if (Prog != 0 && Done%20 == 0) - Prog->Progress(Done); - PkgIterator P = PkgIterator(*Cache, Cache->PkgP + *p); - if (RemovePseudoInstalledPkg(P, recheck) == true) { - ++killed; - ++Done; - } - recheck.erase(p++); - } - - /* Okay, we have killed a great amount of pseudopackages - - we have killed so many that we have now arch "all" packages - without an installed pseudo package, but we NEED an installed - pseudo package, so we will search now for a pseudo package - we can install without breaking everything. */ - for (GrpIterator G = Cache->GrpBegin(); G.end() != true; ++G) - { - PkgIterator P = G.FindPkg("all"); - if (P.end() == true) - continue; - if (P->CurrentVer == 0) - continue; - bool installed = false; - for (P = G.FindPkg("any"); P.end() != true; P = G.NextPkg(P)) - { - if (strcmp(P.Arch(), "all") == 0) - continue; - if (P->CurrentVer == 0) - continue; - installed = true; - break; - } - if (installed == false) - recheck.insert(G.Index()); - } - - while (recheck.empty() != true) - { - std::set<unsigned long>::const_iterator g = recheck.begin(); - unsigned long const G = *g; - recheck.erase(g); - if (unlikely(ReInstallPseudoForGroup(G, recheck) == false)) - _error->Warning(_("Internal error, group '%s' has no installable pseudo package"), GrpIterator(*Cache, Cache->GrpP + G).Name()); - } } if (Prog != 0) @@ -929,80 +761,6 @@ void pkgDepCache::Update(OpProgress *Prog) readStateFile(Prog); } /*}}}*/ -// DepCache::ReInstallPseudoForGroup - MultiArch helper for Update() /*{{{*/ -// --------------------------------------------------------------------- -/* RemovePseudoInstalledPkg() is very successful. It even kills packages - to an amount that no pseudo package is left, but we need a pseudo package - for upgrading senarios so we need to reinstall one pseudopackage which - doesn't break everything. Thankfully we can't have architecture depending - negative dependencies so this problem is already eliminated */ -bool pkgDepCache::ReInstallPseudoForGroup(pkgCache::PkgIterator const &P, std::set<unsigned long> &recheck) -{ - if (P->CurrentVer != 0) - return true; - // recursive call for packages which provide this package - for (pkgCache::PrvIterator Prv = P.ProvidesList(); Prv.end() != true; ++Prv) - ReInstallPseudoForGroup(Prv.OwnerPkg(), recheck); - // check if we actually need to look at this group - unsigned long const G = P->Group; - std::set<unsigned long>::const_iterator Pi = recheck.find(G); - if (Pi == recheck.end()) - return true; - recheck.erase(Pi); // remove here, so we can't fall into an endless loop - if (unlikely(ReInstallPseudoForGroup(G, recheck) == false)) - { - recheck.insert(G); - return false; - } - return true; -} -bool pkgDepCache::ReInstallPseudoForGroup(unsigned long const &G, std::set<unsigned long> &recheck) -{ - std::vector<std::string> static const Archs = APT::Configuration::getArchitectures(); - pkgCache::GrpIterator Grp(*Cache, Cache->GrpP + G); - if (unlikely(Grp.end() == true)) - return false; - for (std::vector<std::string>::const_iterator a = Archs.begin(); - a != Archs.end(); ++a) - { - pkgCache::PkgIterator P = Grp.FindPkg(*a); - if (P.end() == true) - continue; - pkgCache::VerIterator allV = Grp.FindPkg("all").CurrentVer(); - for (VerIterator V = P.VersionList(); V.end() != true; ++V) - { - // search for the same version as the all package - if (allV->Hash != V->Hash || strcmp(allV.VerStr(),V.VerStr()) != 0) - continue; - unsigned char const CurDepState = VersionState(V.DependsList(),DepInstall,DepInstMin,DepInstPolicy); - // If it is broken, try to install dependencies first before retry - if ((CurDepState & DepInstMin) != DepInstMin) - { - for (pkgCache::DepIterator D = V.DependsList(); D.end() != true; ++D) - { - if (D->Type != pkgCache::Dep::PreDepends && D->Type != pkgCache::Dep::Depends) - continue; - ReInstallPseudoForGroup(D.TargetPkg(), recheck); - } - unsigned char const CurDepState = VersionState(V.DependsList(),DepInstall,DepInstMin,DepInstPolicy); - // if package ist still broken… try another arch - if ((CurDepState & DepInstMin) != DepInstMin) - break; - } - // dependencies satisfied: reinstall the package - RemoveSizes(P); - RemoveStates(P); - P->CurrentVer = V.Index(); - PkgState[P->ID].InstallVer = V; - AddStates(P); - Update(P); - AddSizes(P); - return true; - } - } - return false; -} - /*}}}*/ // DepCache::Update - Update the deps list of a package /*{{{*/ // --------------------------------------------------------------------- /* This is a helper for update that only does the dep portion of the scan. @@ -1165,18 +923,6 @@ void pkgDepCache::MarkDelete(PkgIterator const &Pkg, bool rPurge, Update(Pkg); AddSizes(Pkg); - // if we remove the pseudo package, we also need to remove the "real" - if (Pkg->CurrentVer != 0 && Pkg.CurrentVer().Pseudo() == true) - MarkDelete(Pkg.Group().FindPkg("all"), rPurge, Depth+1, FromUser); - else if (rPurge == true && Pkg->CurrentVer == 0 && - Pkg->CurrentState != pkgCache::State::NotInstalled && - strcmp(Pkg.Arch(), "all") != 0) - { - PkgIterator const allPkg = Pkg.Group().FindPkg("all"); - if (allPkg.end() == false && allPkg->CurrentVer == 0 && - allPkg->CurrentState != pkgCache::State::NotInstalled) - MarkDelete(allPkg, rPurge, Depth+1, FromUser); - } } /*}}}*/ // DepCache::IsDeleteOk - check if it is ok to remove this package /*{{{*/ @@ -1280,10 +1026,6 @@ void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst, Update(Pkg); AddSizes(Pkg); - // always trigger the install of the all package for a pseudo package - if (P.CandidateVerIter(*Cache).Pseudo() == true) - MarkInstall(Pkg.Group().FindPkg("all"), AutoInst, Depth, FromUser, ForceImportantDeps); - if (AutoInst == false) return; @@ -1503,7 +1245,7 @@ void pkgDepCache::SetReInstall(PkgIterator const &Pkg,bool To) AddStates(Pkg); AddSizes(Pkg); - if (unlikely(Pkg.CurrentVer().end() == true) || Pkg.CurrentVer().Pseudo() == false) + if (unlikely(Pkg.CurrentVer().end() == true)) return; SetReInstall(Pkg.Group().FindPkg("all"), To); @@ -1514,7 +1256,6 @@ void pkgDepCache::SetReInstall(PkgIterator const &Pkg,bool To) /* */ void pkgDepCache::SetCandidateVersion(VerIterator TargetVer, bool const &Pseudo) { - pkgCache::PkgIterator Pkg = TargetVer.ParentPkg(); StateCache &P = PkgState[Pkg->ID]; @@ -1535,27 +1276,6 @@ void pkgDepCache::SetCandidateVersion(VerIterator TargetVer, bool const &Pseudo) Update(Pkg); AddSizes(Pkg); - if (TargetVer.Pseudo() == false || Pseudo == false) - return; - - // the version was pseudo: set all other pseudos also - pkgCache::GrpIterator Grp = Pkg.Group(); - for (Pkg = Grp.FindPkg("any"); Pkg.end() == false; ++Pkg) - { - StateCache &P = PkgState[Pkg->ID]; - if (TargetVer.SimilarVer(P.CandidateVerIter(*this)) == true || - (P.CandidateVerIter(*this).Pseudo() == false && - strcmp(Pkg.Arch(), "all") != 0)) - continue; - - for (pkgCache::VerIterator Ver = Pkg.VersionList(); Ver.end() == false; ++Ver) - { - if (TargetVer.SimilarVer(Ver) == false) - continue; - SetCandidateVersion(Ver, false); - break; - } - } } /*}}}*/ // DepCache::SetCandidateRelease - Change the candidate version /*{{{*/ @@ -1971,28 +1691,6 @@ void pkgDepCache::MarkPackage(const pkgCache::PkgIterator &pkg, if(ver.end() == true) return; - // If the version belongs to a Multi-Arch all package - // we will mark all others in this Group with this version also - if (ver->MultiArch == pkgCache::Version::All && - strcmp(ver.Arch(true), "all") == 0) - { - GrpIterator G = pkg.Group(); - const char* const VerStr = ver.VerStr(); - for (PkgIterator P = G.FindPkg("any"); - P.end() != true; P = G.NextPkg(P)) - { - for (VerIterator V = P.VersionList(); - V.end() != true; ++V) - { - if (ver->Hash != V->Hash || - strcmp(VerStr, V.VerStr()) != 0) - continue; - MarkPackage(P, V, follow_recommends, follow_suggests); - break; - } - } - } - for(DepIterator d = ver.DependsList(); !d.end(); ++d) { if(d->Type == Dep::Depends || diff --git a/apt-pkg/depcache.h b/apt-pkg/depcache.h index dba3e22dc..b95681118 100644 --- a/apt-pkg/depcache.h +++ b/apt-pkg/depcache.h @@ -395,6 +395,7 @@ class pkgDepCache : protected pkgCache::Namespace bool ForceImportantDeps = false); void SetReInstall(PkgIterator const &Pkg,bool To); + // FIXME: Remove the unused boolean parameter on abi break void SetCandidateVersion(VerIterator TargetVer, bool const &Pseudo = true); bool SetCandidateRelease(pkgCache::VerIterator TargetVer, std::string const &TargetRel); @@ -481,9 +482,10 @@ class pkgDepCache : protected pkgCache::Namespace private: // Helper for Update(OpProgress) to remove pseudoinstalled arch all packages - bool RemovePseudoInstalledPkg(PkgIterator &Pkg, std::set<unsigned long> &recheck); - bool ReInstallPseudoForGroup(unsigned long const &Grp, std::set<unsigned long> &recheck); - bool ReInstallPseudoForGroup(pkgCache::PkgIterator const &P, std::set<unsigned long> &recheck); + // FIXME: they are private so shouldn't affect abi, but just in case… + __deprecated bool RemovePseudoInstalledPkg(PkgIterator &Pkg, std::set<unsigned long> &recheck) { return true; }; + __deprecated bool ReInstallPseudoForGroup(unsigned long const &Grp, std::set<unsigned long> &recheck) { return true; }; + __deprecated bool ReInstallPseudoForGroup(pkgCache::PkgIterator const &P, std::set<unsigned long> &recheck) { return true; }; }; #endif diff --git a/apt-pkg/orderlist.cc b/apt-pkg/orderlist.cc index a53854a26..d5bd19581 100644 --- a/apt-pkg/orderlist.cc +++ b/apt-pkg/orderlist.cc @@ -128,10 +128,6 @@ bool pkgOrderList::IsMissing(PkgIterator Pkg) if (FileList[Pkg->ID].empty() == false) return false; - // Missing Pseudo packages are missing if the real package is missing - if (pkgCache::VerIterator(Cache, Cache[Pkg].CandidateVer).Pseudo() == true) - return IsMissing(Pkg.Group().FindPkg("all")); - return true; } /*}}}*/ diff --git a/apt-pkg/packagemanager.cc b/apt-pkg/packagemanager.cc index cff34058c..4c655cb7b 100644 --- a/apt-pkg/packagemanager.cc +++ b/apt-pkg/packagemanager.cc @@ -81,9 +81,6 @@ bool pkgPackageManager::GetArchives(pkgAcquire *Owner,pkgSourceList *Sources, if (List->IsNow(Pkg) == false) continue; - if (pkgCache::VerIterator(Cache, Cache[Pkg].CandidateVer).Pseudo() == true) - continue; - new pkgAcqArchive(Owner,Sources,Recs,Cache[Pkg].InstVerIter(Cache), FileNames[Pkg->ID]); } @@ -281,9 +278,7 @@ bool pkgPackageManager::ConfigureAll() { PkgIterator Pkg(Cache,*I); - if (ConfigurePkgs == true && - pkgCache::VerIterator(Cache, Cache[Pkg].CandidateVer).Pseudo() == false && - Configure(Pkg) == false) + if (ConfigurePkgs == true && Configure(Pkg) == false) return false; List->Flag(Pkg,pkgOrderList::Configured,pkgOrderList::States); @@ -318,9 +313,7 @@ bool pkgPackageManager::SmartConfigure(PkgIterator Pkg) { PkgIterator Pkg(Cache,*I); - if (ConfigurePkgs == true && - pkgCache::VerIterator(Cache, Cache[Pkg].CandidateVer).Pseudo() == false && - Configure(Pkg) == false) + if (ConfigurePkgs == true && Configure(Pkg) == false) return false; List->Flag(Pkg,pkgOrderList::Configured,pkgOrderList::States); @@ -473,10 +466,7 @@ bool pkgPackageManager::SmartRemove(PkgIterator Pkg) List->Flag(Pkg,pkgOrderList::Configured,pkgOrderList::States); - if (pkgCache::VerIterator(Cache, Cache[Pkg].CandidateVer).Pseudo() == false) - return Remove(Pkg,(Cache[Pkg].iFlags & pkgDepCache::Purge) == pkgDepCache::Purge); - else - return SmartRemove(Pkg.Group().FindPkg("all")); + return Remove(Pkg,(Cache[Pkg].iFlags & pkgDepCache::Purge) == pkgDepCache::Purge); return true; } /*}}}*/ @@ -592,22 +582,9 @@ bool pkgPackageManager::SmartUnPack(PkgIterator Pkg) P.end() == false; P++) CheckRConflicts(Pkg,P.ParentPkg().RevDependsList(),P.ProvideVersion()); - if (pkgCache::VerIterator(Cache, Cache[Pkg].CandidateVer).Pseudo() == false) - { - if(Install(Pkg,FileNames[Pkg->ID]) == false) - return false; - } else { - // Pseudo packages will not be unpacked - instead we will do this - // for the "real" package, but only once and if it is already - // configured we don't need to unpack it again… - PkgIterator const P = Pkg.Group().FindPkg("all"); - if (List->IsFlag(P,pkgOrderList::UnPacked) != true && - List->IsFlag(P,pkgOrderList::Configured) != true && - P.State() != pkgCache::PkgIterator::NeedsNothing) { - if (SmartUnPack(P) == false) - return false; - } - } + if(Install(Pkg,FileNames[Pkg->ID]) == false) + return false; + List->Flag(Pkg,pkgOrderList::UnPacked,pkgOrderList::States); // Perform immedate configuration of the package. diff --git a/apt-pkg/pkgcache.cc b/apt-pkg/pkgcache.cc index 616d400a2..7014aee22 100644 --- a/apt-pkg/pkgcache.cc +++ b/apt-pkg/pkgcache.cc @@ -737,22 +737,8 @@ bool pkgCache::VerIterator::Automatic() const return false; } /*}}}*/ -// VerIterator::Pseudo - Check if this version is a pseudo one /*{{{*/ -// --------------------------------------------------------------------- -/* Sometimes you have the need to express dependencies with versions - which doesn't really exist or exist multiply times for "different" - packages. We need these versions for dependency resolution but they - are a problem everytime we need to download/install something. */ -bool pkgCache::VerIterator::Pseudo() const -{ - if (S->MultiArch == pkgCache::Version::All && - strcmp(Arch(true),"all") != 0) - { - GrpIterator const Grp = ParentPkg().Group(); - return (Grp->LastPackage != Grp->FirstPackage); - } - return false; -} +// VerIterator::Pseudo - deprecated no-op method /*{{{*/ +bool pkgCache::VerIterator::Pseudo() const { return false; } /*}}}*/ // VerIterator::NewestFile - Return the newest file version relation /*{{{*/ // --------------------------------------------------------------------- diff --git a/apt-pkg/pkgcache.h b/apt-pkg/pkgcache.h index 82a69b2ca..89a296ce9 100644 --- a/apt-pkg/pkgcache.h +++ b/apt-pkg/pkgcache.h @@ -505,8 +505,8 @@ struct pkgCache::Version Foreign means that this version can fulfill dependencies even if it is built for another architecture as the requester. Same indicates that builds for different architectures can - be co-installed on the system and All is the marker for a - version with the Architecture: all. */ + be co-installed on the system */ + // FIXME: remove All on abi break enum {None, All, Foreign, Same, Allowed} MultiArch; /** \brief references all the PackageFile's that this version came from diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc index 5b943cca1..d44dbf3a9 100644 --- a/apt-pkg/pkgcachegen.cc +++ b/apt-pkg/pkgcachegen.cc @@ -178,23 +178,17 @@ bool pkgCacheGenerator::MergeList(ListParser &List, if (PackageName.empty() == true) return false; - /* As we handle Arch all packages as architecture bounded - we add all information to every (simulated) arch package */ - std::vector<string> genArch; - if (List.ArchitectureAll() == true) { - genArch = APT::Configuration::getArchitectures(); - if (genArch.size() != 1) - genArch.push_back("all"); - } else - genArch.push_back(List.Architecture()); - - for (std::vector<string>::const_iterator arch = genArch.begin(); - arch != genArch.end(); ++arch) - { + /* Treat Arch all packages as the same as the native arch. */ + string Arch; + if (List.ArchitectureAll() == true) + Arch = _config->Find("APT::Architecture"); + else + Arch = List.Architecture(); + // Get a pointer to the package structure pkgCache::PkgIterator Pkg; Dynamic<pkgCache::PkgIterator> DynPkg(Pkg); - if (NewPackage(Pkg, PackageName, *arch) == false) + if (NewPackage(Pkg, PackageName, Arch) == false) return _error->Error(_("Error occurred while processing %s (NewPackage)"),PackageName.c_str()); Counter++; if (Counter % 100 == 0 && Progress != 0) @@ -351,7 +345,6 @@ bool pkgCacheGenerator::MergeList(ListParser &List, if ((*LastDesc == 0 && _error->PendingError()) || NewFileDesc(Desc,List) == false) return _error->Error(_("Error occurred while processing %s (NewFileDesc2)"),PackageName.c_str()); - } } FoundFileDeps |= List.HasFileDeps(); @@ -650,10 +643,7 @@ bool pkgCacheGenerator::FinishCache(OpProgress *Progress) - MultiArch: same → Co-Installable if they have the same version - Architecture: all → Need to be Co-Installable for internal reasons - All others conflict with all other group members */ - bool const coInstall = ((V->MultiArch == pkgCache::Version::All && strcmp(Arch, "all") != 0) || - V->MultiArch == pkgCache::Version::Same); - if (V->MultiArch == pkgCache::Version::All && allPkg.end() == true) - allPkg = G.FindPkg("all"); + bool const coInstall = (V->MultiArch == pkgCache::Version::Same); for (vector<string>::const_iterator A = archs.begin(); A != archs.end(); ++A) { if (*A == Arch) @@ -675,24 +665,11 @@ bool pkgCacheGenerator::FinishCache(OpProgress *Progress) NewDepends(D, V, V.VerStr(), pkgCache::Dep::NotEquals, pkgCache::Dep::DpkgBreaks, OldDepLast); - if (V->MultiArch == pkgCache::Version::All) - { - // Depend on ${self}:all which does depend on nothing - NewDepends(allPkg, V, V.VerStr(), - pkgCache::Dep::Equals, pkgCache::Dep::Depends, - OldDepLast); - } } else { // Conflicts: ${self}:other - if (strcmp(Arch, "all") == 0) { - NewDepends(D, V, V.VerStr(), - pkgCache::Dep::NotEquals, pkgCache::Dep::Conflicts, - OldDepLast); - } else { - NewDepends(D, V, "", - pkgCache::Dep::NoOp, pkgCache::Dep::Conflicts, - OldDepLast); - } + NewDepends(D, V, "", + pkgCache::Dep::NoOp, pkgCache::Dep::Conflicts, + OldDepLast); } } } @@ -810,7 +787,7 @@ bool pkgCacheGenerator::ListParser::NewProvides(pkgCache::VerIterator &Ver, pkgCache &Cache = Owner->Cache; // We do not add self referencing provides - if (Ver.ParentPkg().Name() == PkgName && PkgArch == Ver.Arch(true)) + if (Ver.ParentPkg().Name() == PkgName && PkgArch == Ver.Arch()) return true; // Get a structure diff --git a/apt-pkg/policy.cc b/apt-pkg/policy.cc index 5427271b6..94c7fd4af 100644 --- a/apt-pkg/policy.cc +++ b/apt-pkg/policy.cc @@ -152,13 +152,6 @@ pkgCache::VerIterator pkgPolicy::GetCandidateVer(pkgCache::PkgIterator const &Pk { /* Lets see if this version is the installed version */ bool instVer = (Pkg.CurrentVer() == Ver); - if (Ver.Pseudo() == true && instVer == false) - { - pkgCache::PkgIterator const allPkg = Ver.ParentPkg().Group().FindPkg("all"); - if (allPkg->CurrentVer != 0 && allPkg.CurrentVer()->Hash == Ver->Hash && - strcmp(allPkg.CurVersion(), Ver.VerStr()) == 0) - instVer = true; - } for (pkgCache::VerFileIterator VF = Ver.FileList(); VF.end() == false; VF++) { diff --git a/cmdline/apt-cache.cc b/cmdline/apt-cache.cc index 34070ba9b..01e0d22e0 100644 --- a/cmdline/apt-cache.cc +++ b/cmdline/apt-cache.cc @@ -1519,7 +1519,6 @@ bool Policy(CommandLine &CmdL) return true; } - string const myArch = _config->Find("APT::Architecture"); char const * const msgInstalled = _(" Installed: "); char const * const msgCandidate = _(" Candidate: "); short const InstalledLessCandidate = @@ -1532,14 +1531,8 @@ bool Policy(CommandLine &CmdL) // Print out detailed information for each package APT::CacheSetHelper helper(true, GlobalError::NOTICE); APT::PackageSet pkgset = APT::PackageSet::FromCommandLine(CacheFile, CmdL.FileList + 1, helper); - for (APT::PackageSet::const_iterator I = pkgset.begin(); I != pkgset.end(); ++I) + for (APT::PackageSet::const_iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg) { - pkgCache::PkgIterator Pkg = I.Group().FindPkg("any"); - - for (; Pkg.end() != true; Pkg = I.Group().NextPkg(Pkg)) { - if (strcmp(Pkg.Arch(),"all") == 0) - continue; - cout << Pkg.FullName(true) << ":" << endl; // Installed version @@ -1588,7 +1581,6 @@ bool Policy(CommandLine &CmdL) Indx->Describe(true).c_str()); } } - } } return true; diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index e22adfb6c..f71b252c8 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -382,8 +382,6 @@ void ShowNew(ostream &out,CacheFile &Cache) { pkgCache::PkgIterator I(Cache,Cache.List[J]); if (Cache[I].NewInstall() == true) { - if (Cache[I].CandidateVerIter(Cache).Pseudo() == true) - continue; List += I.FullName(true) + " "; VersionsList += string(Cache[I].CandVersion) + "\n"; } @@ -406,8 +404,6 @@ void ShowDel(ostream &out,CacheFile &Cache) pkgCache::PkgIterator I(Cache,Cache.List[J]); if (Cache[I].Delete() == true) { - if (Cache[I].CandidateVerIter(Cache).Pseudo() == true) - continue; if ((Cache[I].iFlags & pkgDepCache::Purge) == pkgDepCache::Purge) List += I.FullName(true) + "* "; else @@ -456,8 +452,6 @@ void ShowUpgraded(ostream &out,CacheFile &Cache) // Not interesting if (Cache[I].Upgrade() == false || Cache[I].NewInstall() == true) continue; - if (Cache[I].CandidateVerIter(Cache).Pseudo() == true) - continue; List += I.FullName(true) + " "; VersionsList += string(Cache[I].CurVersion) + " => " + Cache[I].CandVersion + "\n"; @@ -479,8 +473,6 @@ bool ShowDowngraded(ostream &out,CacheFile &Cache) // Not interesting if (Cache[I].Downgrade() == false || Cache[I].NewInstall() == true) continue; - if (Cache[I].CandidateVerIter(Cache).Pseudo() == true) - continue; List += I.FullName(true) + " "; VersionsList += string(Cache[I].CurVersion) + " => " + Cache[I].CandVersion + "\n"; @@ -584,9 +576,6 @@ void Stats(ostream &out,pkgDepCache &Dep) unsigned long ReInstall = 0; for (pkgCache::PkgIterator I = Dep.PkgBegin(); I.end() == false; I++) { - if (pkgCache::VerIterator(Dep, Dep[I].CandidateVer).Pseudo() == true) - continue; - if (Dep[I].NewInstall() == true) Install++; else @@ -1718,7 +1707,7 @@ bool DoAutomaticRemove(CacheFile &Cache) R->Type != pkgCache::Dep::PreDepends) continue; pkgCache::PkgIterator N = R.ParentPkg(); - if (N.end() == true || N->CurrentVer == 0) + if (N.end() == true || (N->CurrentVer == 0 && (*Cache)[N].Install() == false)) continue; if (Debug == true) std::clog << "Save " << P << " as another installed garbage package depends on it" << std::endl; @@ -1916,8 +1905,6 @@ bool DoInstall(CommandLine &CmdL) if ((*Cache)[I].Install() == false) continue; pkgCache::VerIterator Cand = Cache[I].CandidateVerIter(Cache); - if (Cand.Pseudo() == true) - continue; if (verset[MOD_INSTALL].find(Cand) != verset[MOD_INSTALL].end()) continue; diff --git a/debian/apt.symbols b/debian/apt.symbols index 27925ee0c..1c108fb69 100644 --- a/debian/apt.symbols +++ b/debian/apt.symbols @@ -277,7 +277,7 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++)"pkgDepCache::DefaultRootSetFunc::InRootSet(pkgCache::PkgIterator const&)@Base" 0.8.0 (c++)"pkgDepCache::DefaultRootSetFunc::~DefaultRootSetFunc()@Base" 0.8.0 (c++)"pkgDepCache::MarkFollowsSuggests()@Base" 0.8.0 - (c++)"pkgDepCache::SetCandidateVersion(pkgCache::VerIterator, bool const&)@Base" 0.8.0 + (c++)"pkgDepCache::SetCandidateVersion(pkgCache::VerIterator)@Base" 0.8.0 (c++)"pkgDepCache::MarkFollowsRecommends()@Base" 0.8.0 (c++)"pkgDepCache::ReInstallPseudoForGroup(pkgCache::PkgIterator const&, std::set<unsigned long, std::less<unsigned long>, std::allocator<unsigned long> >&)@Base" 0.8.0 (c++)"pkgDepCache::ReInstallPseudoForGroup(unsigned long const&, std::set<unsigned long, std::less<unsigned long>, std::allocator<unsigned long> >&)@Base" 0.8.0 diff --git a/debian/changelog b/debian/changelog index f29452503..da079026e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,56 @@ +apt (0.8.12) UNRELEASED; urgency=low + + [ Michael Vogt ] + * apt-pkg/deb/debindexfile.cc: + - ignore missing deb-src files in /var/lib/apt/lists, thanks + to Thorsten Spindler (LP: #85590) + * apt-pkg/contrib/fileutl.cc, apt-pkg/deb/dpkgpm.cc: + - honor Dpkg::Chroot-Directory in the RunScripts*() methods + * apt-pkg/contrib/cdromutl.{cc,h}, apt-pkg/cdrom.{cc,h}: + - deal with missing FSTAB_DIR when using libudev to discover cdrom + - add experimental APT::cdrom::CdromOnly option (on by default). + When this is set to false apt-cdrom will handle any removable + deivce (like a usb-stick) as a "cdrom/dvd" source + + [ Christian Perrier ] + * Fix error in French translation of manpages (apt_preferences(5)). + Merci, Rémi Vanicat. Closes: #613689 + * Complete French manpage translation + * Italian translation update (Milo Casagrande). Closes: #614395 + + [ David Kalnischkies ] + * ftparchive/multicompress.cc, apt-inst/deb/debfile.cc: + - support xz compressor to create xz-compressed Indexes and be able + to open data.tar.xz files + - load the supported compressors from configuration + * ftparchive/writer.cc: + - ensure that Date and Valid-Until time strings are not localised + - add options to disable specific checksums for Indexes + - include xz-compressed Packages and Sources files in Release file + * apt-pkg/aptconfiguration.cc: + - support download of xz-compressed indexes files + - support adding new compressors by configuration + * apt-pkg/deb/debsrcrecords.cc: + - support xz-compressed source v3 debian.tar files + - support every compression we have a compressor configured + * ftparchive/contents.cc: + - remove ExtractArchive codecopy from apt-inst/deb/debfile.cc + * apt-inst/deb/debfile.cc: + - support data.tar's compressed with any configured compressor + * cmdline/apt-get.cc: + - reinstall dependencies of reinstalled "garbage" (Closes: #617257) + + [ Steve Langasek ] + * apt-pkg/deb/dpkgpm.cc: + - make sure that for multiarch packages, we are passing the full + qualified package name to dpkg for removals. (Closes: #614298) + * Remove the "pseudopackage" handling of Architecture: all packages for + Multi-Arch; instead, Arch: all packages only satisfy dependencies for + the native arch, except where the Arch: all package is declared + Multi-Arch: foreign. (Closes: #613584) + + -- David Kalnischkies <kalnischkies@gmail.com> Tue, 08 Mar 2011 19:20:56 +0100 + apt (0.8.11.5ubuntu3) UNRELEASED; urgency=low * cherry pick cdrom mount fixes from lp:~mvo/apt/mvo diff --git a/debian/control b/debian/control index 114241443..36573da4b 100644 --- a/debian/control +++ b/debian/control @@ -5,7 +5,7 @@ Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> XSBC-Original-Maintainer: APT Development Team <deity@lists.debian.org> Uploaders: Michael Vogt <mvo@debian.org>, Otavio Salvador <otavio@debian.org>, Christian Perrier <bubulle@debian.org>, Daniel Burrows <dburrows@debian.org>, - Luca Bruno <lethalman88@gmail.com>, Julian Andres Klode <jak@debian.org> + Julian Andres Klode <jak@debian.org> Standards-Version: 3.9.0 Build-Depends: dpkg-dev (>= 1.15.8), debhelper (>= 7.2.3~), libdb-dev, gettext (>= 0.12), libcurl4-gnutls-dev (>= 7.19.0), zlib1g-dev | libz-dev, debiandoc-sgml, xsltproc, docbook-xsl, docbook-xml, po4a (>= 0.34-2), autotools-dev, autoconf, automake, doxygen Build-Conflicts: autoconf2.13, automake1.4 diff --git a/doc/apt-ftparchive.1.xml b/doc/apt-ftparchive.1.xml index 0090d21d9..8e5df1f36 100644 --- a/doc/apt-ftparchive.1.xml +++ b/doc/apt-ftparchive.1.xml @@ -526,11 +526,14 @@ for i in Sections do &apt-cmdblurb; <variablelist> - <varlistentry><term><option>--md5</option></term> + <varlistentry><term><option>--md5</option>, <option>--sha1</option>, <option>--sha256</option></term> <listitem><para> - Generate MD5 sums. This defaults to on, when turned off the generated - index files will not have MD5Sum fields where possible. - Configuration Item: <literal>APT::FTPArchive::MD5</literal></para></listitem> + Generate the given checksum. These options default to on, when turned off the generated + index files will not have the checksum fields where possible. + Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</replaceable></literal> and + <literal>APT::FTPArchive::<replaceable>Index</replaceable>::<replaceable>Checksum</replaceable></literal> where + <literal>Index</literal> can be <literal>Packages</literal>, <literal>Sources</literal> or <literal>Release</literal> and + <literal>Checksum</literal> can be <literal>MD5</literal>, <literal>SHA1</literal> or <literal>SHA256</literal>.</para></listitem> </varlistentry> <varlistentry><term><option>-d</option></term><term><option>--db</option></term> diff --git a/doc/examples/configure-index b/doc/examples/configure-index index 03a37287d..6884e06e3 100644 --- a/doc/examples/configure-index +++ b/doc/examples/configure-index @@ -265,7 +265,10 @@ Acquire cdrom { // do auto detection of the cdrom mountpoint - AutoDetect "true"; + AutoDetect "true"; + // when auto-detecting, only look for cdrom/dvd. when this is false + // it will support any removable device as a "cdrom" source + CdromOnly "true"; // cdrom mountpoint (needs to be defined in fstab if AutoDetect is not used) mount "/cdrom"; diff --git a/doc/po/fr.po b/doc/po/fr.po index f86c65e06..3c8f1a8ac 100644 --- a/doc/po/fr.po +++ b/doc/po/fr.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"POT-Creation-Date: 2011-02-14 13:42+0100\n" -"PO-Revision-Date: 2011-02-16 19:38+0100\n" +"POT-Creation-Date: 2011-03-10 11:35+0100\n" +"PO-Revision-Date: 2011-02-17 07:50+0100\n" "Last-Translator: Christian Perrier <bubulle@debian.org>\n" "Language-Team: French <debian-l10n-french@lists.debian.org>\n" "Language: \n" @@ -601,6 +601,7 @@ msgstr "" " <listitem><para>Liste d'état des paquets installés automatiquement.\n" " Élément de configuration : <literal>Dir::State::extended_states</literal>.</para></listitem>\n" " </varlistentry>\n" +"\">\n" #. type: Plain text #: apt.ent:191 @@ -650,12 +651,9 @@ msgstr "" " traduction est légèrement en retard sur le contenu d'origine.\n" "\">\n" -#. The last update date +#. The last update date #. type: Content of: <refentry><refentryinfo> #: apt-cache.8.xml:16 -#| msgid "" -#| "&apt-author.jgunthorpe; &apt-author.team; &apt-email; &apt-product; " -#| "<date>14 February 2004</date>" msgid "" "&apt-author.jgunthorpe; &apt-author.team; &apt-email; &apt-product; <date>04 " "February 2011</date>" @@ -690,28 +688,6 @@ msgstr "recherche dans le cache d'APT" #. type: Content of: <refentry><refsynopsisdiv><cmdsynopsis> #: apt-cache.8.xml:39 -#| msgid "" -#| "<command>apt-cache</command> <arg><option>-hvsn</option></arg> " -#| "<arg><option>-o=<replaceable>config string</replaceable></option></arg> " -#| "<arg><option>-c=<replaceable>file</replaceable></option></arg> <group " -#| "choice=\"req\"> <arg>add <arg choice=\"plain\" rep=\"repeat" -#| "\"><replaceable>file</replaceable></arg></arg> <arg>gencaches</arg> " -#| "<arg>showpkg <arg choice=\"plain\" rep=\"repeat\"><replaceable>pkg</" -#| "replaceable></arg></arg> <arg>showsrc <arg choice=\"plain\" rep=\"repeat" -#| "\"><replaceable>pkg</replaceable></arg></arg> <arg>stats</arg> <arg>dump</" -#| "arg> <arg>dumpavail</arg> <arg>unmet</arg> <arg>search <arg choice=\"plain" -#| "\"><replaceable>regex</replaceable></arg></arg> <arg>show <arg choice=" -#| "\"plain\" rep=\"repeat\"><replaceable>pkg</replaceable></arg></arg> " -#| "<arg>depends <arg choice=\"plain\" rep=\"repeat\"><replaceable>pkg</" -#| "replaceable></arg></arg> <arg>rdepends <arg choice=\"plain\" rep=\"repeat" -#| "\"><replaceable>pkg</replaceable></arg></arg> <arg>pkgnames <arg choice=" -#| "\"plain\"><replaceable>prefix</replaceable></arg></arg> <arg>dotty <arg " -#| "choice=\"plain\" rep=\"repeat\"><replaceable>pkg</replaceable></arg></" -#| "arg> <arg>xvcg <arg choice=\"plain\" rep=\"repeat\"><replaceable>pkg</" -#| "replaceable></arg></arg> <arg>policy <arg choice=\"plain\" rep=\"repeat" -#| "\"><replaceable>pkgs</replaceable></arg></arg> <arg>madison <arg choice=" -#| "\"plain\" rep=\"repeat\"><replaceable>pkgs</replaceable></arg></arg> </" -#| "group>" msgid "" "<command>apt-cache</command> <arg><option>-hvsn</option></arg> <arg><option>-" "o=<replaceable>config string</replaceable></option></arg> <arg><option>-" @@ -736,14 +712,21 @@ msgstr "" "<command>apt-cache</command> <arg><option>-hvsn</option></arg> <arg><option>-" "o=<replaceable>option de configuration</replaceable></option></arg> " "<arg><option>-c=<replaceable>fichier</replaceable></option></arg> <group " -"choice=\"req\"> <arg>gencaches</arg> " -"<arg>showpkg <arg choice=\"plain\" rep=\"repeat\"><replaceable>paquet</replaceable></arg></arg> <arg>showsrc <arg choice=\"plain\" rep=\"repeat\"><replaceable>paquet</replaceable></arg></arg> <arg>stats</arg> <arg>" -"dump</arg> <arg>dumpavail</arg> <arg>unmet</arg> <arg>search <arg choice=\"plain\"><replaceable>regex</replaceable></arg></arg> <arg>show <arg choice=\"plain\" rep=\"repeat\"><replaceable>paquet</replaceable></arg>" -"</arg> <arg>depends " -"<arg choice=\"plain\" rep=\"repeat\"><replaceable>paquet</replaceable></arg></arg> <arg>rdepends <arg choice=\"plain\" rep=\"repeat\"><replaceable>paquet</replaceable></arg></arg> <arg>pkgnames <arg choice=" -"\"plain\"><replaceable>prefix</replaceable></arg></arg> <arg>dotty <arg " -"choice=\"plain\" rep=\"repeat\"><replaceable>paquet</replaceable></arg></arg> <arg>policy <arg choice=\"plain\" rep=\"repeat\"><replaceable>paquets</replaceable></arg></arg> <arg>madison <arg choice=\"plain\" " -"rep=\"repeat\"><replaceable>paquets</replaceable></arg></arg> </group>" +"choice=\"req\"> <arg>gencaches</arg> <arg>showpkg <arg choice=\"plain\" rep=" +"\"repeat\"><replaceable>paquet</replaceable></arg></arg> <arg>showsrc <arg " +"choice=\"plain\" rep=\"repeat\"><replaceable>paquet</replaceable></arg></" +"arg> <arg>stats</arg> <arg>dump</arg> <arg>dumpavail</arg> <arg>unmet</arg> " +"<arg>search <arg choice=\"plain\"><replaceable>regex</replaceable></arg></" +"arg> <arg>show <arg choice=\"plain\" rep=\"repeat\"><replaceable>paquet</" +"replaceable></arg></arg> <arg>depends <arg choice=\"plain\" rep=\"repeat" +"\"><replaceable>paquet</replaceable></arg></arg> <arg>rdepends <arg choice=" +"\"plain\" rep=\"repeat\"><replaceable>paquet</replaceable></arg></arg> " +"<arg>pkgnames <arg choice=\"plain\"><replaceable>prefix</replaceable></arg></" +"arg> <arg>dotty <arg choice=\"plain\" rep=\"repeat\"><replaceable>paquet</" +"replaceable></arg></arg> <arg>policy <arg choice=\"plain\" rep=\"repeat" +"\"><replaceable>paquets</replaceable></arg></arg> <arg>madison <arg choice=" +"\"plain\" rep=\"repeat\"><replaceable>paquets</replaceable></arg></arg> </" +"group>" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:64 apt-cdrom.8.xml:50 apt-config.8.xml:50 @@ -1294,7 +1277,7 @@ msgstr "" "<literal>Dir::Cache::pkgcache</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:288 apt-ftparchive.1.xml:568 apt-get.8.xml:393 +#: apt-cache.8.xml:288 apt-ftparchive.1.xml:571 apt-get.8.xml:393 #: apt-sortpkgs.1.xml:61 msgid "<option>-s</option>" msgstr "<option>-s</option>" @@ -1321,12 +1304,12 @@ msgstr "" "<literal>Dir::Cache::srcpkgcache</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:542 apt-get.8.xml:383 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>-q</option>" msgstr "<option>-q</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:542 apt-get.8.xml:383 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>--quiet</option>" msgstr "<option>--quiet</option>" @@ -1442,7 +1425,7 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:580 +#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:583 msgid "<option>-a</option>" msgstr "<option>-a</option>" @@ -1562,7 +1545,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist> #: apt-cache.8.xml:367 apt-cdrom.8.xml:153 apt-config.8.xml:101 -#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:608 apt-get.8.xml:570 +#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:611 apt-get.8.xml:570 #: apt-sortpkgs.1.xml:67 msgid "&apt-commonoptions;" msgstr "&apt-commonoptions;" @@ -1580,7 +1563,7 @@ msgstr "&file-sourceslist; &file-statelists;" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:379 apt-cdrom.8.xml:158 apt-config.8.xml:106 -#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:624 apt-get.8.xml:585 +#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:627 apt-get.8.xml:585 #: apt-key.8.xml:177 apt-mark.8.xml:131 apt-secure.8.xml:185 #: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:656 #: sources.list.5.xml:234 @@ -1594,7 +1577,7 @@ msgstr "&apt-conf;, &sources-list;, &apt-get;." #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:384 apt-cdrom.8.xml:163 apt-config.8.xml:111 -#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:628 apt-get.8.xml:591 +#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:631 apt-get.8.xml:591 #: apt-mark.8.xml:135 apt-sortpkgs.1.xml:76 msgid "Diagnostics" msgstr "Diagnostics" @@ -1729,7 +1712,7 @@ msgid "Options" msgstr "Options" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:536 apt-get.8.xml:345 +#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:539 apt-get.8.xml:345 msgid "<option>-d</option>" msgstr "<option>-d</option>" @@ -1869,7 +1852,7 @@ msgstr "" "<command>apt-cdrom</command> renvoie zéro après un déroulement normal, et le " "nombre décimal 100 en cas d'erreur." -#. The last update date +#. The last update date #. type: Content of: <refentry><refentryinfo> #: apt-config.8.xml:16 apt-extracttemplates.1.xml:16 apt-sortpkgs.1.xml:16 #: sources.list.5.xml:16 @@ -1986,7 +1969,7 @@ msgid "Just show the contents of the configuration space." msgstr "Affiche seulement le contenu de l'espace de configuration." #. type: Content of: <refentry><refsect1><para> -#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:625 +#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:628 #: apt-sortpkgs.1.xml:73 msgid "&apt-conf;" msgstr "&apt-conf;" @@ -2094,7 +2077,7 @@ msgstr "" "<command>apt-extracttemplates</command> retourne zéro si tout se passe bien, " "le nombre 100 en cas d'erreur." -#. The last update date +#. The last update date #. type: Content of: <refentry><refentryinfo> #: apt-ftparchive.1.xml:16 msgid "" @@ -2220,7 +2203,8 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml:86 apt-ftparchive.1.xml:110 -msgid "The option <option>--db</option> can be used to specify a binary caching DB." +msgid "" +"The option <option>--db</option> can be used to specify a binary caching DB." msgstr "" "On peut se servir de l'option <option>--db</option> pour demander un cache " "binaire." @@ -2297,13 +2281,17 @@ msgid "" "literal>. It then writes to stdout a Release file containing a MD5, SHA1 " "and SHA256 digest for each file." msgstr "" -"La commande <literal>release</literal> crée un fichier Release à partir d'une arborescence. Elle recherche récursivement dans le répertoire indiqué des fichiers <filename>Packages</filename> et <filename>Sources<" -"/filename> non compressés et compressés avec <command>gzip</command>, <command>bzip2</command> ou " -"<command>lzma</command> ainsi que des fichiers <filename>Release</filename> et " -"<filename>md5sum.txt</filename> par défaut (<literal>APT::FTPArchive::" -"Release::Default-Patterns</literal>). Des motifs supplémentaires pour les noms de fichiers peuvent être ajoutés en les mentionnant dans <literal>APT::FTPArchive::Release::Patterns</" -"literal>. Le fichier Release est ensuite affiché et comporte des sommes de contrôle MD5, SHA1 " -"et SHA256 pour chaque fichier." +"La commande <literal>release</literal> crée un fichier Release à partir " +"d'une arborescence. Elle recherche récursivement dans le répertoire indiqué " +"des fichiers <filename>Packages</filename> et <filename>Sources</filename> " +"non compressés et compressés avec <command>gzip</command>, <command>bzip2</" +"command> ou <command>lzma</command> ainsi que des fichiers " +"<filename>Release</filename> et <filename>md5sum.txt</filename> par défaut " +"(<literal>APT::FTPArchive::Release::Default-Patterns</literal>). Des motifs " +"supplémentaires pour les noms de fichiers peuvent être ajoutés en les " +"mentionnant dans <literal>APT::FTPArchive::Release::Patterns</literal>. Le " +"fichier Release est ensuite affiché et comporte des sommes de contrôle MD5, " +"SHA1 et SHA256 pour chaque fichier." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml:125 @@ -2384,8 +2372,10 @@ msgstr "" #. type: Content of: <refentry><refsect1><para> #: apt-ftparchive.1.xml:163 -msgid "The generate configuration has 4 separate sections, each described below." -msgstr "Ce fichier de configuration possède quatre sections, décrites ci-dessous." +msgid "" +"The generate configuration has 4 separate sections, each described below." +msgstr "" +"Ce fichier de configuration possède quatre sections, décrites ci-dessous." #. type: Content of: <refentry><refsect1><refsect2><title> #: apt-ftparchive.1.xml:165 @@ -3130,28 +3120,49 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-ftparchive.1.xml:529 -msgid "<option>--md5</option>" -msgstr "<option>--md5</option>" +msgid "" +"<option>--md5</option>, <option>--sha1</option>, <option>--sha256</option>" +msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml:531 -msgid "" -"Generate MD5 sums. This defaults to on, when turned off the generated index " -"files will not have MD5Sum fields where possible. Configuration Item: " -"<literal>APT::FTPArchive::MD5</literal>" +#, fuzzy +#| msgid "" +#| "Values for the additional metadata fields in the Release file are taken " +#| "from the corresponding variables under <literal>APT::FTPArchive::Release</" +#| "literal>, e.g. <literal>APT::FTPArchive::Release::Origin</literal>. The " +#| "supported fields are: <literal>Origin</literal>, <literal>Label</" +#| "literal>, <literal>Suite</literal>, <literal>Version</literal>, " +#| "<literal>Codename</literal>, <literal>Date</literal>, <literal>Valid-" +#| "Until</literal>, <literal>Architectures</literal>, <literal>Components</" +#| "literal>, <literal>Description</literal>." +msgid "" +"Generate the given checksum. These options default to on, when turned off " +"the generated index files will not have the checksum fields where possible. " +"Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</" +"replaceable></literal> and <literal>APT::FTPArchive::<replaceable>Index</" +"replaceable>::<replaceable>Checksum</replaceable></literal> where " +"<literal>Index</literal> can be <literal>Packages</literal>, " +"<literal>Sources</literal> or <literal>Release</literal> and " +"<literal>Checksum</literal> can be <literal>MD5</literal>, <literal>SHA1</" +"literal> or <literal>SHA256</literal>." msgstr "" -"Créer la somme de contrôle MD5. Cette option est activée par défaut. Quand " -"elle est désactivée, les fichiers d'index n'ont pas les champs MD5Sum là où " -"c'est possible. Élément de configuration : <literal>APT::FTPArchive::MD5</" -"literal>." +"La valeur des autres champs de métadonnées du fichier Release sont tirées de " +"la valeur correspondante dans <literal>APT::FTPArchive::Release</literal>, " +"p. ex. <literal>APT::FTPArchive::Release::Origin</literal>. Les champs " +"reconnus sont : <literal>Origin</literal>, <literal>Label</literal>, " +"<literal>Suite</literal>, <literal>Version</literal>, <literal>Codename</" +"literal>, <literal>Date</literal>, <literal>Valid-Until</literal>, " +"<literal>Architectures</literal>, <literal>Components</literal>, " +"<literal>Description</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:536 +#: apt-ftparchive.1.xml:539 msgid "<option>--db</option>" msgstr "<option>--db</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:538 +#: apt-ftparchive.1.xml:541 msgid "" "Use a binary caching DB. This has no effect on the generate command. " "Configuration Item: <literal>APT::FTPArchive::DB</literal>." @@ -3161,7 +3172,7 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:544 +#: apt-ftparchive.1.xml:547 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -3176,12 +3187,12 @@ msgstr "" "configuration : <literal>quiet</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:550 +#: apt-ftparchive.1.xml:553 msgid "<option>--delink</option>" msgstr "<option>--delink</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:552 +#: apt-ftparchive.1.xml:555 msgid "" "Perform Delinking. If the <literal>External-Links</literal> setting is used " "then this option actually enables delinking of the files. It defaults to on " @@ -3195,12 +3206,12 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:558 +#: apt-ftparchive.1.xml:561 msgid "<option>--contents</option>" msgstr "<option>--contents</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:560 +#: apt-ftparchive.1.xml:563 msgid "" "Perform contents generation. When this option is set and package indexes are " "being generated with a cache DB then the file listing will also be extracted " @@ -3216,12 +3227,12 @@ msgstr "" "de configuration : <literal>APT::FTPArchive::Contents</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:568 +#: apt-ftparchive.1.xml:571 msgid "<option>--source-override</option>" msgstr "<option>--source-override</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:570 +#: apt-ftparchive.1.xml:573 msgid "" "Select the source override file to use with the <literal>sources</literal> " "command. Configuration Item: <literal>APT::FTPArchive::SourceOverride</" @@ -3232,12 +3243,12 @@ msgstr "" "FTPArchive::SourceOverride</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:574 +#: apt-ftparchive.1.xml:577 msgid "<option>--readonly</option>" msgstr "<option>--readonly</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:576 +#: apt-ftparchive.1.xml:579 msgid "" "Make the caching databases read only. Configuration Item: <literal>APT::" "FTPArchive::ReadOnlyDB</literal>." @@ -3246,12 +3257,12 @@ msgstr "" "configuration : <literal>APT::FTPArchive::ReadOnlyDB</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:580 +#: apt-ftparchive.1.xml:583 msgid "<option>--arch</option>" msgstr "<option>--arch</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:581 +#: apt-ftparchive.1.xml:584 msgid "" "Accept in the <literal>packages</literal> and <literal>contents</literal> " "commands only package files matching <literal>*_arch.deb</literal> or " @@ -3265,12 +3276,12 @@ msgstr "" "<literal>APT::FTPArchive::Architecture</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:587 +#: apt-ftparchive.1.xml:590 msgid "<option>APT::FTPArchive::AlwaysStat</option>" msgstr "<option>APT::FTPArchive::AlwaysStat</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:589 +#: apt-ftparchive.1.xml:592 msgid "" "&apt-ftparchive; caches as much as possible of metadata in a cachedb. If " "packages are recompiled and/or republished with the same version again, this " @@ -3293,12 +3304,12 @@ msgstr "" "survenir et l'ensemble de ces contrôles devient inutile." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:599 +#: apt-ftparchive.1.xml:602 msgid "<option>APT::FTPArchive::LongDescription</option>" msgstr "<option>APT::FTPArchive::LongDescription</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:601 +#: apt-ftparchive.1.xml:604 msgid "" "This configuration option defaults to \"<literal>true</literal>\" and should " "only be set to <literal>\"false\"</literal> if the Archive generated with " @@ -3314,19 +3325,19 @@ msgstr "" "generate." #. type: Content of: <refentry><refsect1><title> -#: apt-ftparchive.1.xml:613 apt.conf.5.xml:1087 apt_preferences.5.xml:496 +#: apt-ftparchive.1.xml:616 apt.conf.5.xml:1087 apt_preferences.5.xml:496 #: sources.list.5.xml:198 msgid "Examples" msgstr "Exemples" #. type: Content of: <refentry><refsect1><para><programlisting> -#: apt-ftparchive.1.xml:619 +#: apt-ftparchive.1.xml:622 #, no-wrap msgid "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n" msgstr "<command>apt-ftparchive</command> packages <replaceable>répertoire</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:615 +#: apt-ftparchive.1.xml:618 msgid "" "To create a compressed Packages file for a directory containing binary " "packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>" @@ -3335,7 +3346,7 @@ msgstr "" "des paquets binaires (.deb): <placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:629 +#: apt-ftparchive.1.xml:632 msgid "" "<command>apt-ftparchive</command> returns zero on normal operation, decimal " "100 on error." @@ -3343,7 +3354,7 @@ msgstr "" "<command>apt-ftparchive</command> retourne zéro si tout se passe bien, le " "nombre 100 en cas d'erreur." -#. The last update date +#. The last update date #. type: Content of: <refentry><refentryinfo> #: apt-get.8.xml:16 msgid "" @@ -3361,7 +3372,8 @@ msgstr "apt-get" #. type: Content of: <refentry><refnamediv><refpurpose> #: apt-get.8.xml:33 msgid "APT package handling utility -- command-line interface" -msgstr "Utilitaire APT pour la gestion des paquets -- interface en ligne de commande." +msgstr "" +"Utilitaire APT pour la gestion des paquets -- interface en ligne de commande." #. type: Content of: <refentry><refsynopsisdiv><cmdsynopsis> #: apt-get.8.xml:39 @@ -3811,7 +3823,9 @@ msgstr "download" msgid "" "<literal>download</literal> will download the given binary package into the " "current directoy." -msgstr "<literal>download</literal> télécharge le fichier binaire indiqué dans le répertoire courant." +msgstr "" +"<literal>download</literal> télécharge le fichier binaire indiqué dans le " +"répertoire courant." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml:288 @@ -3889,10 +3903,15 @@ msgid "" "installed. However, you can specify the same options as for the " "<option>install</option> command." msgstr "" -"<literal>changelog</literal> télécharge le journal des modifications d'un paquet et l'affiche avec <command>sensible-pager</command>. Le nom du serveur et le répertoire de base sont définis dans la variable <" -"literal>APT::Changelogs::Server</literal> (p. ex. <ulink>http://packages.debian.org/changelogs</ulink> pour " -"Debian ou <ulink>http://changelogs.ubuntu.com/changelogs</ulink> pour Ubuntu). Par défaut, c'est le journal des modifications de la version installée du paquet qui est affiché. Cependant, il est possible d'utiliser " -"les mêmes options que pour la commande <option>install</option>." +"<literal>changelog</literal> télécharge le journal des modifications d'un " +"paquet et l'affiche avec <command>sensible-pager</command>. Le nom du " +"serveur et le répertoire de base sont définis dans la variable <literal>APT::" +"Changelogs::Server</literal> (p. ex. <ulink>http://packages.debian.org/" +"changelogs</ulink> pour Debian ou <ulink>http://changelogs.ubuntu.com/" +"changelogs</ulink> pour Ubuntu). Par défaut, c'est le journal des " +"modifications de la version installée du paquet qui est affiché. Cependant, " +"il est possible d'utiliser les mêmes options que pour la commande " +"<option>install</option>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-get.8.xml:335 @@ -3910,21 +3929,17 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-get.8.xml:340 -#| msgid "<option>--no-suggests</option>" msgid "<option>--install-suggests</option>" msgstr "<option>--install-suggests</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml:341 -#| msgid "" -#| "Do not consider recommended packages as a dependency for installing. " -#| "Configuration Item: <literal>APT::Install-Recommends</literal>." msgid "" "Consider suggested packages as a dependency for installing. Configuration " "Item: <literal>APT::Install-Suggests</literal>." msgstr "" -"Considérer les paquets suggérés comme des dépendances à installer. " -"Élément de configuration : <literal>APT::Install-Suggests</literal>." +"Considérer les paquets suggérés comme des dépendances à installer. Élément " +"de configuration : <literal>APT::Install-Suggests</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-get.8.xml:345 @@ -4752,8 +4767,10 @@ msgstr "Trousseau des clés fiables de l'archive Debian." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-key.8.xml:169 -msgid "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" -msgstr "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" +msgid "" +"<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" +msgstr "" +"<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-key.8.xml:170 @@ -4765,7 +4782,7 @@ msgstr "Trousseau des clés fiables supprimées de l'archive Debian." msgid "&apt-get;, &apt-secure;" msgstr "&apt-get;, &apt-secure;" -#. The last update date +#. The last update date #. type: Content of: <refentry><refentryinfo> #: apt-mark.8.xml:16 msgid "" @@ -4875,8 +4892,10 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-mark.8.xml:96 -msgid "<option>-f=<filename><replaceable>FILENAME</replaceable></filename></option>" -msgstr "<option>-f=<filename><replaceable>FICHIER</replaceable></filename></option>" +msgid "" +"<option>-f=<filename><replaceable>FILENAME</replaceable></filename></option>" +msgstr "" +"<option>-f=<filename><replaceable>FICHIER</replaceable></filename></option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-mark.8.xml:97 @@ -5151,13 +5170,6 @@ msgstr "" #. type: Content of: <refentry><refsect1><para> #: apt-secure.8.xml:147 -#| msgid "" -#| "In order to add a new key you need to first download it (you should make " -#| "sure you are using a trusted communication channel when retrieving it), " -#| "add it with <command>apt-key</command> and then run <command>apt-get " -#| "update</command> so that apt can download and verify the " -#| "<filename>Release.gpg</filename> files from the archives you have " -#| "configured." msgid "" "In order to add a new key you need to first download it (you should make " "sure you are using a trusted communication channel when retrieving it), add " @@ -5170,7 +5182,8 @@ msgstr "" "utiliser un canal fiable pour ce téléchargement. Ensuite vous l'ajoutez avec " "la commande <command>apt-key</command> et vous lancez la commande " "<command>apt-get update</command> pour télécharger et vérifier le fichier " -"<filename>InRelease</filename> ou <filename>Release.gpg</filename> de l'archive que vous avez configurée." +"<filename>InRelease</filename> ou <filename>Release.gpg</filename> de " +"l'archive que vous avez configurée." #. type: Content of: <refentry><refsect1><title> #: apt-secure.8.xml:156 @@ -5199,16 +5212,14 @@ msgstr "" #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para> #: apt-secure.8.xml:168 -#| msgid "" -#| "<emphasis>Sign it</emphasis>. You can do this by running <command>gpg -" -#| "abs -o Release.gpg Release</command>." msgid "" "<emphasis>Sign it</emphasis>. You can do this by running <command>gpg --" "clearsign -o InRelease Release</command> and <command>gpg -abs -o Release." "gpg Release</command>." msgstr "" -"<emphasis>le signer</emphasis>, avec les commande <command>gpg -- clearsign -o InRelease Release</command> et <command>gpg -abs -o " -"Release.gpg Release</command>." +"<emphasis>le signer</emphasis>, avec les commande <command>gpg -- clearsign -" +"o InRelease Release</command> et <command>gpg -abs -o Release.gpg Release</" +"command>." #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para> #: apt-secure.8.xml:172 @@ -5337,7 +5348,7 @@ msgstr "" "<command>apt-sortpkgs</command> retourne zéro si tout se passe bien ou 100 " "en cas d'erreur." -#. The last update date +#. The last update date #. type: Content of: <refentry><refentryinfo> #: apt.conf.5.xml:16 msgid "" @@ -5401,12 +5412,6 @@ msgstr "" #. type: Content of: <refentry><refsect1><orderedlist><listitem><para> #: apt.conf.5.xml:52 -#, fuzzy -#| msgid "" -#| "all files in <literal>Dir::Etc::Parts</literal> in alphanumeric ascending " -#| "order which have no or \"<literal>conf</literal>\" as filename extension " -#| "and which only contain alphanumeric, hyphen (-), underscore (_) and " -#| "period (.) characters - otherwise they will be silently ignored." msgid "" "all files in <literal>Dir::Etc::Parts</literal> in alphanumeric ascending " "order which have no or \"<literal>conf</literal>\" as filename extension and " @@ -5419,12 +5424,18 @@ msgstr "" "alphanumérique ascendant qui ont soit l'extension \"<literal>conf</literal>" "\", soit aucune extension et qui ne contiennent que des caractères " "alphanumériques, des tirets (-), des caractères de soulignement (_) et des " -"points (.), les autres fichiers étant ignorés." +"points (.), les autres fichiers étant ignorés. Dans le cas contraire, APT " +"affichera un avertissement indiquant qu'il a ignoré un fichier si celui-ci " +"ne correspond par à un motif défini dans <literal>Dir::Ignore-Files-" +"Silently</literal> (les fichiers correspondant à cette variable de " +"configuration étant, eux, ignorés silencieusemennt)." #. type: Content of: <refentry><refsect1><orderedlist><listitem><para> #: apt.conf.5.xml:59 -msgid "the main configuration file specified by <literal>Dir::Etc::main</literal>" -msgstr "le fichier de configuration défini par <literal>Dir::Etc::Main</literal>" +msgid "" +"the main configuration file specified by <literal>Dir::Etc::main</literal>" +msgstr "" +"le fichier de configuration défini par <literal>Dir::Etc::Main</literal>" #. type: Content of: <refentry><refsect1><orderedlist><listitem><para> #: apt.conf.5.xml:61 @@ -6443,18 +6454,6 @@ msgstr "Dir::Bin::bzip2 \"/bin/bzip2\";" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml:442 -#, fuzzy -#| msgid "" -#| "Note that at run time the <literal>Dir::Bin::<replaceable>Methodname</" -#| "replaceable></literal> will be checked: If this setting exists the method " -#| "will only be used if this file exists, e.g. for the bzip2 method (the " -#| "inbuilt) setting is <placeholder type=\"literallayout\" id=\"0\"/> Note " -#| "also that list entries specified on the command line will be added at the " -#| "end of the list specified in the configuration files, but before the " -#| "default entries. To prefer a type in this case over the ones specified in " -#| "in the configuration files you can set the option direct - not in list " -#| "style. This will not override the defined list, it will only prefix the " -#| "list with this type." msgid "" "Note that at run time the <literal>Dir::Bin::<replaceable>Methodname</" "replaceable></literal> will be checked: If this setting exists the method " @@ -6486,6 +6485,10 @@ msgid "" "uncompressed files a preference, but note that most archives doesn't provide " "uncompressed files so this is mostly only useable for local mirrors." msgstr "" +"Le type spécial <literal>uncompressed</literal> peut servir à donner la " +"préférence aux fichiers non compressés. Veuillez noter que la plupart des " +"archives ne fournissent pas de fichiers non compressés, donc ce réglage est " +"surtout destiné aux miroirs locaux." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> #: apt.conf.5.xml:454 @@ -6719,7 +6722,7 @@ msgstr "" "La liste <literal>Ignore-Files-Silently</literal> permet d'indiquer quels " "sont les fichiers qu'APT peut ignorer sans avertissement dans les " "répertoires contenant des fragments de configuration. Par défaut, les " -"fichiers qui se terminent par literal>.disabled</literal>, <literal>~</" +"fichiers qui se terminent par <literal>.disabled</literal>, <literal>~</" "literal>, <literal>.bak</literal> ou <literal>.dpkg-[a-z]+</literal> sont " "ignorés. Comme cela est visible dans le dernier élément de cette liste, il " "est possible d'utiliser la syntaxe des expressions rationnelles." @@ -6924,19 +6927,6 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt.conf.5.xml:621 -#, fuzzy -#| 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 in between his own run. Activating these options can therefore " -#| "decrease the time needed to perform the install / upgrade. Note that it " -#| "is intended to activate these options per default in the future, but as " -#| "it changes the way APT calling dpkg drastically it needs a lot more " -#| "testing. <emphasis>These options are therefore currently experimental " -#| "and should not be used in productive environments.</emphasis> Also it " -#| "breaks the progress reporting so all frontends will currently stay around " -#| "half (or more) of the time in the 100% state while it actually configures " -#| "all packages." msgid "" "APT can call dpkg in a way so it can make aggressive use of triggers over " "multiple calls of dpkg. Without further options dpkg will use triggers only " @@ -7260,7 +7250,7 @@ msgstr "" #. TODO: provide a #. motivating example, except I haven't a clue why you'd want -#. to do this. +#. to do this. #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> #: apt.conf.5.xml:750 msgid "" @@ -7282,7 +7272,8 @@ msgstr "<literal>Debug::Acquire::cdrom</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml:769 -msgid "Print information related to accessing <literal>cdrom://</literal> sources." +msgid "" +"Print information related to accessing <literal>cdrom://</literal> sources." msgstr "" "Affiche les informations concernant les sources de type <literal>cdrom://</" "literal>" @@ -7295,7 +7286,8 @@ msgstr "<literal>Debug::Acquire::ftp</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml:780 msgid "Print information related to downloading packages using FTP." -msgstr "Affiche les informations concernant le téléchargement de paquets par FTP." +msgstr "" +"Affiche les informations concernant le téléchargement de paquets par FTP." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt.conf.5.xml:787 @@ -7305,7 +7297,8 @@ msgstr "<literal>Debug::Acquire::http</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml:791 msgid "Print information related to downloading packages using HTTP." -msgstr "Affiche les informations concernant le téléchargement de paquets par HTTP." +msgstr "" +"Affiche les informations concernant le téléchargement de paquets par HTTP." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt.conf.5.xml:798 @@ -7466,7 +7459,8 @@ msgstr "<literal>Debug::pkgAcquire::Worker</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml:920 -msgid "Log all interactions with the sub-processes that actually perform downloads." +msgid "" +"Log all interactions with the sub-processes that actually perform downloads." msgstr "" "Affiche toutes les interactions avec les processus enfants qui se chargent " "effectivement des téléchargements." @@ -7607,7 +7601,8 @@ msgstr "<literal>Debug::pkgPackageManager</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml:1021 -msgid "Output status messages tracing the steps performed when invoking &dpkg;." +msgid "" +"Output status messages tracing the steps performed when invoking &dpkg;." msgstr "Affiche le détail des opérations liées à l'invocation de &dpkg;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> @@ -7678,17 +7673,19 @@ msgstr "" msgid "&file-aptconf;" msgstr "&file-aptconf;" -#. ? reading apt.conf +#. ? reading apt.conf #. type: Content of: <refentry><refsect1><para> #: apt.conf.5.xml:1100 msgid "&apt-cache;, &apt-config;, &apt-preferences;." msgstr "&apt-cache;, &apt-config;, &apt-preferences;." -#. The last update date +#. The last update date #. type: Content of: <refentry><refentryinfo> #: apt_preferences.5.xml:16 -msgid "&apt-author.team; &apt-email; &apt-product; <date>16 February 2010</date>" -msgstr "&apt-author.team; &apt-email; &apt-product; <date>16 février 2010</date>" +msgid "" +"&apt-author.team; &apt-email; &apt-product; <date>16 February 2010</date>" +msgstr "" +"&apt-author.team; &apt-email; &apt-product; <date>16 février 2010</date>" #. type: Content of: <refentry><refnamediv><refname> #: apt_preferences.5.xml:24 apt_preferences.5.xml:31 @@ -7773,14 +7770,6 @@ msgstr "" #. type: Content of: <refentry><refsect1><para> #: apt_preferences.5.xml:70 -#, fuzzy -#| msgid "" -#| "Note that the files in the <filename>/etc/apt/preferences.d</filename> " -#| "directory are parsed in alphanumeric ascending order and need to obey the " -#| "following naming convention: The files have no or \"<literal>pref</" -#| "literal>\" as filename extension and which only contain alphanumeric, " -#| "hyphen (-), underscore (_) and period (.) characters - otherwise they " -#| "will be silently ignored." msgid "" "Note that the files in the <filename>/etc/apt/preferences.d</filename> " "directory are parsed in alphanumeric ascending order and need to obey the " @@ -7795,8 +7784,11 @@ msgstr "" "d</filename> sont analysés par ordre alphanumérique ascendant, doivent avoir " "l'extension \"<literal>pref</literal>\" ou aucune extension et ne peuvent " "continir que des caractères alphanumériques, des tirets (-), des caractères " -"de soulignement (_) et des points (.). Dans le cas contraire, ils seront " -"ignorés sans avertissement." +"de soulignement (_) et des points (.). Dans le cas contraire, APT affichera " +"un avertissement indiquant qu'il a ignoré un fichier si celui-ci ne " +"correspond par à un motif défini dans <literal>Dir::Ignore-Files-Silently</" +"literal> (les fichiers correspondant à cette variable de configuration " +"étant, eux, ignorés silencieusemennt)." #. type: Content of: <refentry><refsect1><refsect2><title> #: apt_preferences.5.xml:79 @@ -7887,7 +7879,8 @@ msgstr "une priorité égale à 990" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> #: apt_preferences.5.xml:123 -msgid "to the versions that are not installed and belong to the target release." +msgid "" +"to the versions that are not installed and belong to the target release." msgstr "" "est affectée aux versions qui ne sont pas installées et qui appartiennent à " "la distribution par défaut." @@ -8402,7 +8395,8 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> #: apt_preferences.5.xml:344 msgid "Determination of Package Version and Distribution Properties" -msgstr "Détermination de la version des paquets et des propriétés des distributions" +msgstr "" +"Détermination de la version des paquets et des propriétés des distributions" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt_preferences.5.xml:346 @@ -8892,7 +8886,7 @@ msgstr "" "\n" "Explanation: Debian unstable porte toujours le nom sid\n" "Package: *\n" -"Pin: release a=sid\n" +"Pin: release n=sid\n" "Pin-Priority: 800\n" "\n" "Package: *\n" @@ -9023,14 +9017,6 @@ msgstr "sources.list.d" #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml:54 -#, fuzzy -#| msgid "" -#| "The <filename>/etc/apt/sources.list.d</filename> directory provides a way " -#| "to add sources.list entries in separate files. The format is the same as " -#| "for the regular <filename>sources.list</filename> file. File names need " -#| "to end with <filename>.list</filename> and may only contain letters (a-z " -#| "and A-Z), digits (0-9), underscore (_), hyphen (-) and period (.) " -#| "characters. Otherwise they will be silently ignored." msgid "" "The <filename>/etc/apt/sources.list.d</filename> directory provides a way to " "add sources.list entries in separate files. The format is the same as for " @@ -9047,7 +9033,11 @@ msgstr "" "fichier <filename>sources.list</filename>. Les noms de fichiers doivent se " "terminer par <filename>.list</filename> et ne peuvent contenir que des " "lettres (a-z et A-Z), des chiffres (0-9), des caractères de soulignement " -"(_), des tirets et des points. Dans le cas contraire, ils seront ignorés." +"(_), des tirets et des points. Dans le cas contraire, APT affichera un " +"avertissement indiquant qu'il a ignoré un fichier si celui-ci ne correspond " +"par à un motif défini dans <literal>Dir::Ignore-Files-Silently</literal> " +"(les fichiers correspondant à cette variable de configuration étant, eux, " +"ignorés silencieusemennt)." #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml:65 @@ -9056,17 +9046,6 @@ msgstr "Les types deb et deb-src." #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml:66 -#, fuzzy -#| msgid "" -#| "The <literal>deb</literal> type describes a typical two-level Debian " -#| "archive, <filename>distribution/component</filename>. Typically, " -#| "<literal>distribution</literal> is generally one of <literal>stable</" -#| "literal> <literal>unstable</literal> or <literal>testing</literal> while " -#| "component is one of <literal>main</literal> <literal>contrib</literal> " -#| "<literal>non-free</literal> or <literal>non-us</literal>. The " -#| "<literal>deb-src</literal> type describes a debian distribution's source " -#| "code in the same form as the <literal>deb</literal> type. A <literal>deb-" -#| "src</literal> line is required to fetch source indexes." msgid "" "The <literal>deb</literal> type describes a typical two-level Debian " "archive, <filename>distribution/component</filename>. Typically, " @@ -9081,14 +9060,15 @@ msgid "" msgstr "" "Le type <literal>deb</literal> décrit une archive Debian classique à deux " "niveaux, <filename>distribution/composant</filename>. <literal>distribution</" -"literal> peut prendre l'une des valeurs suivantes : <literal>stable</" -"literal>, <literal>unstable</literal>, ou <literal>testing</literal>, et " -"composant : <literal>main</literal>, <literal>contrib</literal>, " -"<literal>non-free</literal>, ou <literal>non-us</literal>. Le type " -"<literal>deb-src</literal> décrit une archive de distribution de code source " -"pour une distribution Debian dans le même format que le type <literal>deb</" -"literal>. Une ligne <literal>deb-src</literal> est nécessaire pour récupérer " -"les index des sources." +"literal> peut prendre l'une des valeurs suivantes : un nom d'archive tel que " +"<literal>stable</literal> ou <literal>testing</literal> ou bien un nom de " +"code comme <literal>&stable-codename;</literal> ou <literal>&testing-" +"codename;</literal>, alors que composant prend les valeurs : <literal>main</" +"literal>, <literal>contrib</literal> ou <literal>non-free</literal>. Le " +"type <literal>deb-src</literal> décrit une archive de distribution de code " +"source pour une distribution Debian dans le même format que le type " +"<literal>deb</literal>. Une ligne <literal>deb-src</literal> est nécessaire " +"pour récupérer les index des sources." #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml:78 @@ -9436,22 +9416,12 @@ msgstr "deb ftp://ftp.debian.org/debian unstable contrib" #. type: Content of: <refentry><refsect1><para><literallayout> #: sources.list.5.xml:230 -#, fuzzy, no-wrap -#| msgid "deb http://ftp.de.debian.org/debian-non-US unstable/binary-$(ARCH)/" +#, no-wrap msgid "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/" -msgstr "deb http://ftp.de.debian.org/debian-non-US unstable/binary-$(ARCH)/" +msgstr "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/" #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml:223 -#, fuzzy -#| msgid "" -#| "Uses HTTP to access the archive at nonus.debian.org, under the debian-non-" -#| "US directory, and uses only files found under <filename>unstable/binary-" -#| "i386</filename> on i386 machines, <filename>unstable/binary-m68k</" -#| "filename> on m68k, and so forth for other supported architectures. [Note " -#| "this example only illustrates how to use the substitution variable; non-" -#| "us is no longer structured like this] <placeholder type=\"literallayout\" " -#| "id=\"0\"/>" msgid "" "Uses HTTP to access the archive at ftp.tlh.debian.org, under the universe " "directory, and uses only files found under <filename>unstable/binary-i386</" @@ -9461,14 +9431,14 @@ msgid "" "archives are not structured like this] <placeholder type=\"literallayout\" " "id=\"0\"/>" msgstr "" -"Utiliser HTTP pour accéder à l'archive située à nonus.debian.org, dans le " -"répertoire debian-non-US, et n'utiliser que les fichiers trouvés dans " +"Utiliser HTTP pour accéder à l'archive située à ftp.tlh.debian.org, dans le " +"répertoire universe, et n'utiliser que les fichiers trouvés dans " "<filename>unstable/binary-i386</filename> pour les machines i386, dans " -"<filename>unstable/binary-m68k</filename> pour les machines m68k et ainsi de " -"suite pour les autres architectures reconnues. [Notez que cet exemple montre " -"seulement la manière d'utiliser la variable à substituer, non-us n'étant " -"plus structuré de cette manière.] <placeholder type=\"literallayout\" id=" -"\"0\"/>" +"<filename>unstable/binary-amd64</filename> pour les machines amd64 et ainsi " +"de suite pour les autres architectures reconnues. [Notez que cet exemple " +"montre seulement la manière d'utiliser la variable à substituer, les " +"archives Debian n'étant plas structurées de cette manière.] <placeholder " +"type=\"literallayout\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml:235 @@ -9492,7 +9462,8 @@ msgstr "$Id: guide.sgml,v 1.7 2003/04/26 23:26:13 doogie Exp $" #. type: <abstract></abstract> #: guide.sgml:11 -msgid "This document provides an overview of how to use the the APT package manager." +msgid "" +"This document provides an overview of how to use the the APT package manager." msgstr "" "Ce document fournit un aperçu des méthode d'utilisation du gestionnaire de " "paquets APT." @@ -10398,8 +10369,10 @@ msgstr "Résumé final" #. type: <p></p> #: guide.sgml:447 -msgid "Finally, APT will print out a summary of all the changes that will occur." -msgstr "Enfin, APT affichera un résumé de toutes les opérations qui prendront place." +msgid "" +"Finally, APT will print out a summary of all the changes that will occur." +msgstr "" +"Enfin, APT affichera un résumé de toutes les opérations qui prendront place." #. type: <example></example> #: guide.sgml:452 @@ -11034,6 +11007,19 @@ msgstr " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade" msgid "Which will use the already fetched archives on the disc." msgstr "Cette commande utilisera les fichiers récupérés sur le disque." +#~ msgid "<option>--md5</option>" +#~ msgstr "<option>--md5</option>" + +#~ msgid "" +#~ "Generate MD5 sums. This defaults to on, when turned off the generated " +#~ "index files will not have MD5Sum fields where possible. Configuration " +#~ "Item: <literal>APT::FTPArchive::MD5</literal>" +#~ msgstr "" +#~ "Créer la somme de contrôle MD5. Cette option est activée par défaut. " +#~ "Quand elle est désactivée, les fichiers d'index n'ont pas les champs " +#~ "MD5Sum là où c'est possible. Élément de configuration : <literal>APT::" +#~ "FTPArchive::MD5</literal>." + #~ msgid "APT package handling utility -- cache manipulator" #~ msgstr "Gestionnaire de paquets APT - manipulation du cache" @@ -11092,8 +11078,12 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque." #~ "Utiliser HTTP pour accéder à l'archive située à nonus.debian.org, dans le " #~ "répertoire debian-non-US." -#~ msgid "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-free" -#~ msgstr "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-free" +#~ msgid "" +#~ "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-" +#~ "free" +#~ msgstr "" +#~ "deb http://nonus.debian.org/debian-non-US stable/non-US main contrib non-" +#~ "free" #~ msgid "OPTIONS" #~ msgstr "OPTIONS" diff --git a/ftparchive/apt-ftparchive.cc b/ftparchive/apt-ftparchive.cc index 0c29002e6..0762a2b28 100644 --- a/ftparchive/apt-ftparchive.cc +++ b/ftparchive/apt-ftparchive.cc @@ -949,6 +949,8 @@ int main(int argc, const char *argv[]) CommandLine::Args Args[] = { {'h',"help","help",0}, {0,"md5","APT::FTPArchive::MD5",0}, + {0,"sha1","APT::FTPArchive::SHA1",0}, + {0,"sha256","APT::FTPArchive::SHA256",0}, {'v',"version","version",0}, {'d',"db","APT::FTPArchive::DB",CommandLine::HasArg}, {'s',"source-override","APT::FTPArchive::SourceOverride",CommandLine::HasArg}, diff --git a/ftparchive/contents.cc b/ftparchive/contents.cc index b761d9204..eadced626 100644 --- a/ftparchive/contents.cc +++ b/ftparchive/contents.cc @@ -36,12 +36,13 @@ #include "contents.h" #include <apti18n.h> +#include <apt-pkg/debfile.h> #include <apt-pkg/extracttar.h> #include <apt-pkg/error.h> #include <stdio.h> #include <stdlib.h> #include <string.h> -#include <malloc.h> +#include <malloc.h> /*}}}*/ // GenContents::~GenContents - Free allocated memory /*{{{*/ @@ -305,29 +306,7 @@ void GenContents::DoPrint(FILE *Out,GenContents::Node *Top, char *Buf) bool ContentsExtract::Read(debDebFile &Deb) { Reset(); - - // Get the archive member and positition the file - const ARArchive::Member *Member = Deb.GotoMember("data.tar.gz"); - const char *Compressor = "gzip"; - if (Member == 0) { - Member = Deb.GotoMember("data.tar.bz2"); - Compressor = "bzip2"; - } - if (Member == 0) { - Member = Deb.GotoMember("data.tar.lzma"); - Compressor = "lzma"; - } - if (Member == 0) { - _error->Error(_("Internal error, could not locate member %s"), - "data.tar.{gz,bz2,lzma}"); - return false; - } - - // Extract it. - ExtractTar Tar(Deb.GetFile(),Member->Size,Compressor); - if (Tar.Go(*this) == false) - return false; - return true; + return Deb.ExtractArchive(*this); } /*}}}*/ // ContentsExtract::DoItem - Extract an item /*{{{*/ diff --git a/ftparchive/multicompress.cc b/ftparchive/multicompress.cc index bb4beedf9..f82879015 100644 --- a/ftparchive/multicompress.cc +++ b/ftparchive/multicompress.cc @@ -30,12 +30,6 @@ using namespace std; -const MultiCompress::CompType MultiCompress::Compressors[] = - {{".","",0,0,0,1}, - {"gzip",".gz","gzip","-9n","-d",2}, - {"bzip2",".bz2","bzip2","-9","-d",3}, - {"lzma",".lzma","lzma","-9","-d",4}, - {}}; // MultiCompress::MultiCompress - Constructor /*{{{*/ // --------------------------------------------------------------------- @@ -48,7 +42,7 @@ MultiCompress::MultiCompress(string const &Output,string const &Compress, Outputter = -1; Input = 0; UpdateMTime = 0; - + /* Parse the compression string, a space separated lists of compresison types */ string::const_iterator I = Compress.begin(); @@ -61,13 +55,14 @@ MultiCompress::MultiCompress(string const &Output,string const &Compress, for (; I != Compress.end() && !isspace(*I); I++); // Find the matching compressor - const CompType *Comp = Compressors; - for (; Comp->Name != 0; Comp++) - if (stringcmp(Start,I,Comp->Name) == 0) + std::vector<APT::Configuration::Compressor> Compressors = APT::Configuration::getCompressors(); + std::vector<APT::Configuration::Compressor>::const_iterator Comp = Compressors.begin(); + for (; Comp != Compressors.end(); ++Comp) + if (stringcmp(Start,I,Comp->Name.c_str()) == 0) break; // Hmm.. unknown. - if (Comp->Name == 0) + if (Comp == Compressors.end()) { _error->Warning(_("Unknown compression algorithm '%s'"),string(Start,I).c_str()); continue; @@ -77,7 +72,7 @@ MultiCompress::MultiCompress(string const &Output,string const &Compress, Files *NewOut = new Files; NewOut->Next = Outputs; Outputs = NewOut; - NewOut->CompressProg = Comp; + NewOut->CompressProg = *Comp; NewOut->Output = Output+Comp->Extension; struct stat St; @@ -141,13 +136,14 @@ bool MultiCompress::GetStat(string const &Output,string const &Compress,struct s for (; I != Compress.end() && !isspace(*I); I++); // Find the matching compressor - const CompType *Comp = Compressors; - for (; Comp->Name != 0; Comp++) - if (stringcmp(Start,I,Comp->Name) == 0) + std::vector<APT::Configuration::Compressor> Compressors = APT::Configuration::getCompressors(); + std::vector<APT::Configuration::Compressor>::const_iterator Comp = Compressors.begin(); + for (; Comp != Compressors.end(); ++Comp) + if (stringcmp(Start,I,Comp->Name.c_str()) == 0) break; // Hmm.. unknown. - if (Comp->Name == 0) + if (Comp == Compressors.end()) continue; string Name = Output+Comp->Extension; @@ -268,13 +264,13 @@ bool MultiCompress::Finalize(unsigned long &OutSize) /* This opens the compressor, either in compress mode or decompress mode. FileFd is always the compressor input/output file, OutFd is the created pipe, Input for Compress, Output for Decompress. */ -bool MultiCompress::OpenCompress(const CompType *Prog,pid_t &Pid,int const &FileFd, - int &OutFd,bool const &Comp) +bool MultiCompress::OpenCompress(APT::Configuration::Compressor const &Prog, + pid_t &Pid,int const &FileFd,int &OutFd,bool const &Comp) { Pid = -1; // No compression - if (Prog->Binary == 0) + if (Prog.Binary.empty() == true) { OutFd = dup(FileFd); return true; @@ -309,15 +305,17 @@ bool MultiCompress::OpenCompress(const CompType *Prog,pid_t &Pid,int const &File SetCloseExec(STDOUT_FILENO,false); SetCloseExec(STDIN_FILENO,false); - - const char *Args[3]; - Args[0] = Prog->Binary; - if (Comp == true) - Args[1] = Prog->CompArgs; - else - Args[1] = Prog->UnCompArgs; - Args[2] = 0; - execvp(Args[0],(char **)Args); + + std::vector<char const*> Args; + Args.push_back(Prog.Binary.c_str()); + std::vector<std::string> const * const addArgs = + (Comp == true) ? &(Prog.CompressArgs) : &(Prog.UncompressArgs); + for (std::vector<std::string>::const_iterator a = addArgs->begin(); + a != addArgs->end(); ++a) + Args.push_back(a->c_str()); + Args.push_back(NULL); + + execvp(Args[0],(char **)&Args[0]); cerr << _("Failed to exec compressor ") << Args[0] << endl; _exit(100); }; @@ -335,7 +333,7 @@ bool MultiCompress::OpenOld(int &Fd,pid_t &Proc) { Files *Best = Outputs; for (Files *I = Outputs; I != 0; I = I->Next) - if (Best->CompressProg->Cost > I->CompressProg->Cost) + if (Best->CompressProg.Cost > I->CompressProg.Cost) Best = I; // Open the file @@ -414,7 +412,7 @@ bool MultiCompress::Child(int const &FD) for (Files *I = Outputs; I != 0; I = I->Next) { if (I->CompressProc != -1) - ExecWait(I->CompressProc,I->CompressProg->Binary,false); + ExecWait(I->CompressProc, I->CompressProg.Binary.c_str(), false); } if (_error->PendingError() == true) diff --git a/ftparchive/multicompress.h b/ftparchive/multicompress.h index 3ac3b8fb2..19dede174 100644 --- a/ftparchive/multicompress.h +++ b/ftparchive/multicompress.h @@ -20,28 +20,18 @@ #include <string> #include <apt-pkg/fileutl.h> +#include <apt-pkg/aptconfiguration.h> #include <stdio.h> #include <sys/types.h> class MultiCompress { - // Enumeration of all supported compressors - struct CompType - { - const char *Name; - const char *Extension; - const char *Binary; - const char *CompArgs; - const char *UnCompArgs; - unsigned char Cost; - }; - // An output file struct Files { string Output; - const CompType *CompressProg; - Files *Next; + APT::Configuration::Compressor CompressProg; + Files *Next; FileFd TmpFile; pid_t CompressProc; time_t OldMTime; @@ -51,10 +41,9 @@ class MultiCompress Files *Outputs; pid_t Outputter; mode_t Permissions; - static const CompType Compressors[]; - bool OpenCompress(const CompType *Prog,pid_t &Pid,int const &FileFd, - int &OutFd,bool const &Comp); + bool OpenCompress(APT::Configuration::Compressor const &Prog, + pid_t &Pid,int const &FileFd, int &OutFd,bool const &Comp); bool Child(int const &Fd); bool Start(); bool Die(); diff --git a/ftparchive/writer.cc b/ftparchive/writer.cc index 9cdca8d3e..9f12cbf3d 100644 --- a/ftparchive/writer.cc +++ b/ftparchive/writer.cc @@ -17,6 +17,7 @@ #include <apt-pkg/strutl.h> #include <apt-pkg/error.h> #include <apt-pkg/configuration.h> +#include <apt-pkg/aptconfiguration.h> #include <apt-pkg/md5.h> #include <apt-pkg/sha1.h> #include <apt-pkg/sha256.h> @@ -59,6 +60,10 @@ FTWScanner::FTWScanner(string const &Arch): Arch(Arch) { ErrorPrinted = false; NoLinkAct = !_config->FindB("APT::FTPArchive::DeLinkAct",true); + + DoMD5 = _config->FindB("APT::FTPArchive::MD5",true); + DoSHA1 = _config->FindB("APT::FTPArchive::SHA1",true); + DoSHA256 = _config->FindB("APT::FTPArchive::SHA256",true); } /*}}}*/ // FTWScanner::Scanner - FTW Scanner /*{{{*/ @@ -308,9 +313,9 @@ PackagesWriter::PackagesWriter(string const &DB,string const &Overrides,string c DeLinkLimit = 0; // Process the command line options - DoMD5 = _config->FindB("APT::FTPArchive::MD5",true); - DoSHA1 = _config->FindB("APT::FTPArchive::SHA1",true); - DoSHA256 = _config->FindB("APT::FTPArchive::SHA256",true); + DoMD5 = _config->FindB("APT::FTPArchive::Packages::MD5",DoMD5); + DoSHA1 = _config->FindB("APT::FTPArchive::Packages::SHA1",DoSHA1); + DoSHA256 = _config->FindB("APT::FTPArchive::Packages::SHA256",DoSHA256); DoAlwaysStat = _config->FindB("APT::FTPArchive::AlwaysStat", false); DoContents = _config->FindB("APT::FTPArchive::Contents",true); NoOverride = _config->FindB("APT::FTPArchive::NoOverrideMsg",false); @@ -435,9 +440,12 @@ bool PackagesWriter::DoPackage(string FileName) unsigned int End = 0; SetTFRewriteData(Changes[End++], "Size", Size); - SetTFRewriteData(Changes[End++], "MD5sum", Db.MD5Res.c_str()); - SetTFRewriteData(Changes[End++], "SHA1", Db.SHA1Res.c_str()); - SetTFRewriteData(Changes[End++], "SHA256", Db.SHA256Res.c_str()); + if (DoMD5 == true) + SetTFRewriteData(Changes[End++], "MD5sum", Db.MD5Res.c_str()); + if (DoSHA1 == true) + SetTFRewriteData(Changes[End++], "SHA1", Db.SHA1Res.c_str()); + if (DoSHA256 == true) + SetTFRewriteData(Changes[End++], "SHA256", Db.SHA256Res.c_str()); SetTFRewriteData(Changes[End++], "Filename", NewFileName.c_str()); SetTFRewriteData(Changes[End++], "Priority", OverItem->Priority.c_str()); SetTFRewriteData(Changes[End++], "Status", 0); @@ -559,6 +567,9 @@ SourcesWriter::SourcesWriter(string const &BOverrides,string const &SOverrides, BufSize = 0; // Process the command line options + DoMD5 = _config->FindB("APT::FTPArchive::Sources::MD5",DoMD5); + DoSHA1 = _config->FindB("APT::FTPArchive::Sources::SHA1",DoSHA1); + DoSHA256 = _config->FindB("APT::FTPArchive::Sources::SHA256",DoSHA256); NoOverride = _config->FindB("APT::FTPArchive::NoOverrideMsg",false); // Read the override file @@ -608,13 +619,17 @@ bool SourcesWriter::DoPackage(string FileName) // Hash the file char *Start = Buffer; char *BlkEnd = Buffer + St.st_size; - MD5Summation MD5; - MD5.Add((unsigned char *)Start,BlkEnd - Start); + MD5Summation MD5; SHA1Summation SHA1; SHA256Summation SHA256; - SHA1.Add((unsigned char *)Start,BlkEnd - Start); - SHA256.Add((unsigned char *)Start,BlkEnd - Start); + + if (DoMD5 == true) + MD5.Add((unsigned char *)Start,BlkEnd - Start); + if (DoSHA1 == true) + SHA1.Add((unsigned char *)Start,BlkEnd - Start); + if (DoSHA256 == true) + SHA256.Add((unsigned char *)Start,BlkEnd - Start); // Add an extra \n to the end, just in case *BlkEnd++ = '\n'; @@ -708,19 +723,19 @@ bool SourcesWriter::DoPackage(string FileName) // Add the dsc to the files hash list string const strippedName = flNotDir(FileName); std::ostringstream ostreamFiles; - if (Tags.Exists("Files")) + if (DoMD5 == true && Tags.Exists("Files")) ostreamFiles << "\n " << string(MD5.Result()) << " " << St.st_size << " " << strippedName << "\n " << Tags.FindS("Files"); string const Files = ostreamFiles.str(); std::ostringstream ostreamSha1; - if (Tags.Exists("Checksums-Sha1")) + if (DoSHA1 == true && Tags.Exists("Checksums-Sha1")) ostreamSha1 << "\n " << string(SHA1.Result()) << " " << St.st_size << " " << strippedName << "\n " << Tags.FindS("Checksums-Sha1"); string const ChecksumsSha1 = ostreamSha1.str(); std::ostringstream ostreamSha256; - if (Tags.Exists("Checksums-Sha256")) + if (DoSHA256 == true && Tags.Exists("Checksums-Sha256")) ostreamSha256 << "\n " << string(SHA256.Result()) << " " << St.st_size << " " << strippedName << "\n " << Tags.FindS("Checksums-Sha256"); string const ChecksumsSha256 = ostreamSha256.str(); @@ -774,9 +789,12 @@ bool SourcesWriter::DoPackage(string FileName) unsigned int End = 0; SetTFRewriteData(Changes[End++],"Source",Package.c_str(),"Package"); - SetTFRewriteData(Changes[End++],"Files",Files.c_str()); - SetTFRewriteData(Changes[End++],"Checksums-Sha1",ChecksumsSha1.c_str()); - SetTFRewriteData(Changes[End++],"Checksums-Sha256",ChecksumsSha256.c_str()); + if (Files.empty() == false) + SetTFRewriteData(Changes[End++],"Files",Files.c_str()); + if (ChecksumsSha1.empty() == false) + SetTFRewriteData(Changes[End++],"Checksums-Sha1",ChecksumsSha1.c_str()); + if (ChecksumsSha256.empty() == false) + SetTFRewriteData(Changes[End++],"Checksums-Sha256",ChecksumsSha256.c_str()); if (Directory != "./") SetTFRewriteData(Changes[End++],"Directory",Directory.c_str()); SetTFRewriteData(Changes[End++],"Priority",BestPrio.c_str()); @@ -913,10 +931,12 @@ ReleaseWriter::ReleaseWriter(string const &DB) AddPattern("Packages.gz"); AddPattern("Packages.bz2"); AddPattern("Packages.lzma"); + AddPattern("Packages.xz"); AddPattern("Sources"); AddPattern("Sources.gz"); AddPattern("Sources.bz2"); AddPattern("Sources.lzma"); + AddPattern("Sources.xz"); AddPattern("Release"); AddPattern("Index"); AddPattern("md5sum.txt"); @@ -925,6 +945,9 @@ ReleaseWriter::ReleaseWriter(string const &DB) Output = stdout; time_t const now = time(NULL); + + setlocale(LC_TIME, "C"); + char datestr[128]; if (strftime(datestr, sizeof(datestr), "%a, %d %b %Y %H:%M:%S UTC", gmtime(&now)) == 0) @@ -941,6 +964,8 @@ ReleaseWriter::ReleaseWriter(string const &DB) validstr[0] = '\0'; } + setlocale(LC_TIME, ""); + map<string,string> Fields; Fields["Origin"] = ""; Fields["Label"] = ""; @@ -964,6 +989,10 @@ ReleaseWriter::ReleaseWriter(string const &DB) fprintf(Output, "%s: %s\n", (*I).first.c_str(), Value.c_str()); } + + DoMD5 = _config->FindB("APT::FTPArchive::Release::MD5",DoMD5); + DoSHA1 = _config->FindB("APT::FTPArchive::Release::SHA1",DoSHA1); + DoSHA256 = _config->FindB("APT::FTPArchive::Release::SHA256",DoSHA256); } /*}}}*/ // ReleaseWriter::DoPackage - Process a single package /*{{{*/ @@ -996,19 +1025,26 @@ bool ReleaseWriter::DoPackage(string FileName) CheckSums[NewFileName].size = fd.Size(); - MD5Summation MD5; - MD5.AddFD(fd.Fd(), fd.Size()); - CheckSums[NewFileName].MD5 = MD5.Result(); - - fd.Seek(0); - SHA1Summation SHA1; - SHA1.AddFD(fd.Fd(), fd.Size()); - CheckSums[NewFileName].SHA1 = SHA1.Result(); - - fd.Seek(0); - SHA256Summation SHA256; - SHA256.AddFD(fd.Fd(), fd.Size()); - CheckSums[NewFileName].SHA256 = SHA256.Result(); + if (DoMD5 == true) + { + MD5Summation MD5; + MD5.AddFD(fd.Fd(), fd.Size()); + CheckSums[NewFileName].MD5 = MD5.Result(); + fd.Seek(0); + } + if (DoSHA1 == true) + { + SHA1Summation SHA1; + SHA1.AddFD(fd.Fd(), fd.Size()); + CheckSums[NewFileName].SHA1 = SHA1.Result(); + fd.Seek(0); + } + if (DoSHA256 == true) + { + SHA256Summation SHA256; + SHA256.AddFD(fd.Fd(), fd.Size()); + CheckSums[NewFileName].SHA256 = SHA256.Result(); + } fd.Close(); @@ -1020,37 +1056,40 @@ bool ReleaseWriter::DoPackage(string FileName) // --------------------------------------------------------------------- void ReleaseWriter::Finish() { - fprintf(Output, "MD5Sum:\n"); - for(map<string,struct CheckSum>::const_iterator I = CheckSums.begin(); - I != CheckSums.end(); - ++I) + if (DoMD5 == true) { - fprintf(Output, " %s %16ld %s\n", - (*I).second.MD5.c_str(), - (*I).second.size, - (*I).first.c_str()); + fprintf(Output, "MD5Sum:\n"); + for(map<string,struct CheckSum>::const_iterator I = CheckSums.begin(); + I != CheckSums.end(); ++I) + { + fprintf(Output, " %s %16ld %s\n", + (*I).second.MD5.c_str(), + (*I).second.size, + (*I).first.c_str()); + } } - - fprintf(Output, "SHA1:\n"); - for(map<string,struct CheckSum>::const_iterator I = CheckSums.begin(); - I != CheckSums.end(); - ++I) + if (DoSHA1 == true) { - fprintf(Output, " %s %16ld %s\n", - (*I).second.SHA1.c_str(), - (*I).second.size, - (*I).first.c_str()); + fprintf(Output, "SHA1:\n"); + for(map<string,struct CheckSum>::const_iterator I = CheckSums.begin(); + I != CheckSums.end(); ++I) + { + fprintf(Output, " %s %16ld %s\n", + (*I).second.SHA1.c_str(), + (*I).second.size, + (*I).first.c_str()); + } } - - fprintf(Output, "SHA256:\n"); - for(map<string,struct CheckSum>::const_iterator I = CheckSums.begin(); - I != CheckSums.end(); - ++I) + if (DoSHA256 == true) { - fprintf(Output, " %s %16ld %s\n", - (*I).second.SHA256.c_str(), - (*I).second.size, - (*I).first.c_str()); + fprintf(Output, "SHA256:\n"); + for(map<string,struct CheckSum>::const_iterator I = CheckSums.begin(); + I != CheckSums.end(); ++I) + { + fprintf(Output, " %s %16ld %s\n", + (*I).second.SHA256.c_str(), + (*I).second.size, + (*I).first.c_str()); + } } } - diff --git a/ftparchive/writer.h b/ftparchive/writer.h index 3796f79f6..ce0eab7af 100644 --- a/ftparchive/writer.h +++ b/ftparchive/writer.h @@ -60,6 +60,9 @@ class FTWScanner } public: + bool DoMD5; + bool DoSHA1; + bool DoSHA256; unsigned long DeLinkLimit; string InternalPrefix; @@ -103,9 +106,6 @@ class PackagesWriter : public FTWScanner public: // Some flags - bool DoMD5; - bool DoSHA1; - bool DoSHA256; bool DoAlwaysStat; bool NoOverride; bool DoContents; diff --git a/methods/makefile b/methods/makefile index 4ee356cec..6ba51058e 100644 --- a/methods/makefile +++ b/methods/makefile @@ -94,8 +94,8 @@ SOURCE = bzip2.cc include $(PROGRAM_H) # SSH and lzma method symlink -binary: $(BIN)/ssh $(BIN)/lzma -veryclean: clean-$(BIN)/ssh clean-$(BIN)/lzma +binary: $(BIN)/ssh $(BIN)/lzma $(BIN)/xz +veryclean: clean-$(BIN)/ssh clean-$(BIN)/lzma clean-$(BIN)/xz $(BIN)/ssh: echo "Installing ssh method link" @@ -108,3 +108,9 @@ $(BIN)/lzma: ln -fs bzip2 $(BIN)/lzma clean-$(BIN)/lzma: -rm $(BIN)/lzma + +$(BIN)/xz: + echo "Installing xz method link" + ln -fs bzip2 $(BIN)/xz +clean-$(BIN)/xz: + -rm $(BIN)/xz @@ -1,21 +1,21 @@ # Italian translation of apt -# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The Free Software Foundation, Inc. +# Copyright (C) 2002-2010, 2011 The Free Software Foundation, Inc. # This file is distributed under the same license as the apt package. # Samuele Giovanni Tonon <samu@debian.org>, 2002. +# Milo Casagrande <milo@ubuntu.com>, 2009, 2010, 2011. # -# Milo Casagrande <milo@ubuntu.com>, 2009, 2010. msgid "" msgstr "" "Project-Id-Version: apt\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-15 06:09+0100\n" -"PO-Revision-Date: 2010-08-27 20:57+0200\n" +"POT-Creation-Date: 2011-01-12 17:42+0100\n" +"PO-Revision-Date: 2011-02-21 18:35+0100\n" "Last-Translator: Milo Casagrande <milo@ubuntu.com>\n" "Language-Team: Italian <tp@lists.linux.it>\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" +"Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: cmdline/apt-cache.cc:156 @@ -91,82 +91,119 @@ msgstr "Totale spazio inutilizzato: " msgid "Total space accounted for: " msgstr "Totale spazio occupato: " -#: cmdline/apt-cache.cc:513 cmdline/apt-cache.cc:1142 +#: cmdline/apt-cache.cc:513 cmdline/apt-cache.cc:1194 #, c-format msgid "Package file %s is out of sync." msgstr "Il file dei pacchetti %s non è sincronizzato." -#: cmdline/apt-cache.cc:591 cmdline/apt-cache.cc:1377 -#: cmdline/apt-cache.cc:1379 cmdline/apt-cache.cc:1456 -msgid "No packages found" -msgstr "Nessun pacchetto trovato" - -#: cmdline/apt-cache.cc:1221 +#: cmdline/apt-cache.cc:1273 msgid "You must give at least one search pattern" msgstr "È necessario specificare almeno un modello per la ricerca" -#: cmdline/apt-cache.cc:1451 apt-pkg/cacheset.cc:440 +#: cmdline/apt-cache.cc:1429 cmdline/apt-cache.cc:1431 +#: cmdline/apt-cache.cc:1508 +msgid "No packages found" +msgstr "Nessun pacchetto trovato" + +#: cmdline/apt-cache.cc:1503 apt-pkg/cacheset.cc:440 #, c-format msgid "Unable to locate package %s" msgstr "Impossibile trovare il pacchetto %s" -#: cmdline/apt-cache.cc:1481 +#: cmdline/apt-cache.cc:1533 msgid "Package files:" msgstr "File dei pacchetti:" -#: cmdline/apt-cache.cc:1488 cmdline/apt-cache.cc:1586 +#: cmdline/apt-cache.cc:1540 cmdline/apt-cache.cc:1638 msgid "Cache is out of sync, can't x-ref a package file" msgstr "" "La cache non è sincronizzata, impossibile referenziare un file di pacchetti" #. Show any packages have explicit pins -#: cmdline/apt-cache.cc:1502 +#: cmdline/apt-cache.cc:1554 msgid "Pinned packages:" msgstr "Pacchetti con gancio:" -#: cmdline/apt-cache.cc:1514 cmdline/apt-cache.cc:1566 +#: cmdline/apt-cache.cc:1566 cmdline/apt-cache.cc:1618 msgid "(not found)" msgstr "(non trovato)" -#: cmdline/apt-cache.cc:1523 +#: cmdline/apt-cache.cc:1575 msgid " Installed: " msgstr " Installato: " -#: cmdline/apt-cache.cc:1524 +#: cmdline/apt-cache.cc:1576 msgid " Candidate: " msgstr " Candidato: " -#: cmdline/apt-cache.cc:1548 cmdline/apt-cache.cc:1556 +#: cmdline/apt-cache.cc:1600 cmdline/apt-cache.cc:1608 msgid "(none)" msgstr "(nessuno)" -#: cmdline/apt-cache.cc:1563 +#: cmdline/apt-cache.cc:1615 msgid " Package pin: " msgstr " Gancio del pacchetto: " #. Show the priority tables -#: cmdline/apt-cache.cc:1572 +#: cmdline/apt-cache.cc:1624 msgid " Version table:" msgstr " Tabella versione:" -#: cmdline/apt-cache.cc:1686 cmdline/apt-cdrom.cc:197 cmdline/apt-config.cc:70 +#: cmdline/apt-cache.cc:1738 cmdline/apt-cdrom.cc:197 cmdline/apt-config.cc:70 #: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:589 -#: cmdline/apt-get.cc:3047 cmdline/apt-sortpkgs.cc:144 +#: cmdline/apt-get.cc:2793 cmdline/apt-sortpkgs.cc:144 #, c-format msgid "%s %s for %s compiled on %s %s\n" msgstr "%s %s per %s compilato il %s %s\n" -#: cmdline/apt-cache.cc:1693 +#: cmdline/apt-cache.cc:1745 #, fuzzy +#| msgid "" +#| "Usage: apt-cache [options] command\n" +#| " apt-cache [options] showpkg pkg1 [pkg2 ...]\n" +#| " apt-cache [options] showsrc pkg1 [pkg2 ...]\n" +#| "\n" +#| "apt-cache is a low-level tool used to query information\n" +#| "from APT's binary cache files\n" +#| "\n" +#| "Commands:\n" +#| " gencaches - Build both the package and source cache\n" +#| " showpkg - Show some general information for a single package\n" +#| " showsrc - Show source records\n" +#| " stats - Show some basic statistics\n" +#| " dump - Show the entire file in a terse form\n" +#| " dumpavail - Print an available file to stdout\n" +#| " unmet - Show unmet dependencies\n" +#| " search - Search the package list for a regex pattern\n" +#| " show - Show a readable record for the package\n" +#| " showauto - Display a list of automatically installed packages\n" +#| " depends - Show raw dependency information for a package\n" +#| " rdepends - Show reverse dependency information for a package\n" +#| " pkgnames - List the names of all packages in the system\n" +#| " dotty - Generate package graphs for GraphViz\n" +#| " xvcg - Generate package graphs for xvcg\n" +#| " policy - Show policy settings\n" +#| "\n" +#| "Options:\n" +#| " -h This help text.\n" +#| " -p=? The package cache.\n" +#| " -s=? The source cache.\n" +#| " -q Disable progress indicator.\n" +#| " -i Show only important deps for the unmet command.\n" +#| " -c=? Read this configuration file\n" +#| " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n" +#| "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n" msgid "" "Usage: apt-cache [options] command\n" +" apt-cache [options] add file1 [file2 ...]\n" " apt-cache [options] showpkg pkg1 [pkg2 ...]\n" " apt-cache [options] showsrc pkg1 [pkg2 ...]\n" "\n" -"apt-cache is a low-level tool used to query information\n" -"from APT's binary cache files\n" +"apt-cache is a low-level tool used to manipulate APT's binary\n" +"cache files, and query information from them\n" "\n" "Commands:\n" +" add - Add a package file to the source cache\n" " gencaches - Build both the package and source cache\n" " showpkg - Show some general information for a single package\n" " showsrc - Show source records\n" @@ -195,7 +232,6 @@ msgid "" "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n" msgstr "" "Uso: apt-cache [OPZIONI] COMANDO\n" -" apt-cache [OPZIONI] add FILE1 [FILE2 ...]\n" " apt-cache [OPZIONI] showpkg PKG1 [PKG2 ...]\n" " apt-cache [OPZIONI] showsrc PKG1 [PKG2 ...]\n" "\n" @@ -203,7 +239,6 @@ msgstr "" "i file di cache dei binari di APT e cercare informazioni in questi\n" "\n" "Comandi:\n" -" add - Aggiunge un file di pacchetti alla cache sorgente\n" " gencaches - Costruisce sia la cache dei pacchetti sia quella dei " "sorgenti\n" " showpkg - Mostra informazioni generali per un singolo pacchetto\n" @@ -312,7 +347,7 @@ msgstr "" " -c=? Legge come configurazione il file specificato\n" " -o=? Imposta un'opzione di configurazione, come -o dir::cache=/tmp\n" -#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:1175 +#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:1171 #, c-format msgid "Unable to write to %s" msgstr "Impossibile scrivere in %s" @@ -841,7 +876,7 @@ msgstr "La reinstallazione di %s non è possibile, non può essere scaricato.\n" msgid "%s is already the newest version.\n" msgstr "%s è già alla versione più recente.\n" -#: cmdline/apt-get.cc:827 cmdline/apt-get.cc:2024 +#: cmdline/apt-get.cc:827 cmdline/apt-get.cc:2027 #, c-format msgid "%s set to manually installed.\n" msgstr "È stato impostato %s per l'installazione manuale.\n" @@ -852,133 +887,133 @@ msgid "Selected version '%s' (%s) for '%s'\n" msgstr "Versione \"%s\" (%s) selezionata per \"%s\"\n" #: cmdline/apt-get.cc:858 -#, fuzzy, c-format +#, c-format msgid "Selected version '%s' (%s) for '%s' because of '%s'\n" -msgstr "Versione \"%s\" (%s) selezionata per \"%s\"\n" +msgstr "Versione \"%s\" (%s) selezionata per \"%s\" per via di \"%s\"\n" -#: cmdline/apt-get.cc:899 +#: cmdline/apt-get.cc:898 #, c-format msgid "Package %s is not installed, so not removed\n" msgstr "Il pacchetto %s non è installato e quindi non è stato rimosso\n" -#: cmdline/apt-get.cc:977 +#: cmdline/apt-get.cc:973 msgid "Correcting dependencies..." msgstr "Correzione delle dipendenze..." -#: cmdline/apt-get.cc:980 +#: cmdline/apt-get.cc:976 msgid " failed." msgstr " non riuscita." -#: cmdline/apt-get.cc:983 +#: cmdline/apt-get.cc:979 msgid "Unable to correct dependencies" msgstr "Impossibile correggere le dipendenze" -#: cmdline/apt-get.cc:986 +#: cmdline/apt-get.cc:982 msgid "Unable to minimize the upgrade set" msgstr "Impossibile minimizzare l'insieme da aggiornare" -#: cmdline/apt-get.cc:988 +#: cmdline/apt-get.cc:984 msgid " Done" msgstr " Fatto" -#: cmdline/apt-get.cc:992 +#: cmdline/apt-get.cc:988 msgid "You might want to run 'apt-get -f install' to correct these." msgstr "È utile eseguire \"apt-get -f install\" per correggere ciò." -#: cmdline/apt-get.cc:995 +#: cmdline/apt-get.cc:991 msgid "Unmet dependencies. Try using -f." msgstr "Dipendenze non trovate. Riprovare usando -f." -#: cmdline/apt-get.cc:1020 +#: cmdline/apt-get.cc:1016 msgid "WARNING: The following packages cannot be authenticated!" msgstr "ATTENZIONE: i seguenti pacchetti non possono essere autenticati." -#: cmdline/apt-get.cc:1024 +#: cmdline/apt-get.cc:1020 msgid "Authentication warning overridden.\n" msgstr "Avviso di autenticazione disabilitato.\n" -#: cmdline/apt-get.cc:1031 +#: cmdline/apt-get.cc:1027 msgid "Install these packages without verification [y/N]? " msgstr "Installare questi pacchetti senza verificarli [s/N]? " -#: cmdline/apt-get.cc:1033 +#: cmdline/apt-get.cc:1029 msgid "Some packages could not be authenticated" msgstr "Alcuni pacchetti non possono essere autenticati" -#: cmdline/apt-get.cc:1042 cmdline/apt-get.cc:1203 +#: cmdline/apt-get.cc:1038 cmdline/apt-get.cc:1199 msgid "There are problems and -y was used without --force-yes" msgstr "Si sono verificati dei problemi ed è stata usata -y senza --force-yes" -#: cmdline/apt-get.cc:1083 +#: cmdline/apt-get.cc:1079 msgid "Internal error, InstallPackages was called with broken packages!" msgstr "" "Errore interno, InstallPackages è stato chiamato con un pacchetto " "danneggiato." -#: cmdline/apt-get.cc:1092 +#: cmdline/apt-get.cc:1088 msgid "Packages need to be removed but remove is disabled." msgstr "" "I pacchetti devono essere rimossi, ma l'azione di rimozione è disabilitata." -#: cmdline/apt-get.cc:1103 +#: cmdline/apt-get.cc:1099 msgid "Internal error, Ordering didn't finish" msgstr "Errore interno, l'ordinamento non è stato terminato" -#: cmdline/apt-get.cc:1141 +#: cmdline/apt-get.cc:1137 msgid "How odd.. The sizes didn't match, email apt@packages.debian.org" msgstr "" "Le dimensioni non corrispondono. Inviare un'email a: apt@packages.debian.org" #. TRANSLATOR: The required space between number and unit is already included #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB -#: cmdline/apt-get.cc:1148 +#: cmdline/apt-get.cc:1144 #, c-format msgid "Need to get %sB/%sB of archives.\n" msgstr "È necessario scaricare %sB/%sB di archivi.\n" #. TRANSLATOR: The required space between number and unit is already included #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -#: cmdline/apt-get.cc:1153 +#: cmdline/apt-get.cc:1149 #, c-format msgid "Need to get %sB of archives.\n" msgstr "È necessario scaricare %sB di archivi.\n" #. TRANSLATOR: The required space between number and unit is already included #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -#: cmdline/apt-get.cc:1160 +#: cmdline/apt-get.cc:1156 #, c-format msgid "After this operation, %sB of additional disk space will be used.\n" msgstr "Dopo quest'operazione, verranno occupati %sB di spazio su disco.\n" #. TRANSLATOR: The required space between number and unit is already included #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -#: cmdline/apt-get.cc:1165 +#: cmdline/apt-get.cc:1161 #, c-format msgid "After this operation, %sB disk space will be freed.\n" msgstr "Dopo quest'operazione, verranno liberati %sB di spazio su disco.\n" -#: cmdline/apt-get.cc:1180 cmdline/apt-get.cc:1183 cmdline/apt-get.cc:2428 -#: cmdline/apt-get.cc:2431 +#: cmdline/apt-get.cc:1176 cmdline/apt-get.cc:1179 cmdline/apt-get.cc:2367 +#: cmdline/apt-get.cc:2370 #, c-format msgid "Couldn't determine free space in %s" msgstr "Impossibile determinare lo spazio libero in %s" -#: cmdline/apt-get.cc:1193 +#: cmdline/apt-get.cc:1189 #, c-format msgid "You don't have enough free space in %s." msgstr "Spazio libero in %s insufficiente." -#: cmdline/apt-get.cc:1209 cmdline/apt-get.cc:1229 +#: cmdline/apt-get.cc:1205 cmdline/apt-get.cc:1225 msgid "Trivial Only specified but this is not a trivial operation." msgstr "" "È stata specificata la modalità \"Trivial Only\", ma questa non è " "un'operazione banale." -#: cmdline/apt-get.cc:1211 +#: cmdline/apt-get.cc:1207 msgid "Yes, do as I say!" msgstr "Sì, esegui come da richiesta." -#: cmdline/apt-get.cc:1213 +#: cmdline/apt-get.cc:1209 #, c-format msgid "" "You are about to do something potentially harmful.\n" @@ -989,28 +1024,28 @@ msgstr "" "Per continuare scrivere la frase \"%s\"\n" " ?] " -#: cmdline/apt-get.cc:1219 cmdline/apt-get.cc:1238 +#: cmdline/apt-get.cc:1215 cmdline/apt-get.cc:1234 msgid "Abort." msgstr "Interrotto." -#: cmdline/apt-get.cc:1234 +#: cmdline/apt-get.cc:1230 msgid "Do you want to continue [Y/n]? " msgstr "Continuare [S/n]? " -#: cmdline/apt-get.cc:1306 cmdline/apt-get.cc:2488 apt-pkg/algorithms.cc:1491 +#: cmdline/apt-get.cc:1302 cmdline/apt-get.cc:2427 apt-pkg/algorithms.cc:1470 #, c-format msgid "Failed to fetch %s %s\n" msgstr "Impossibile recuperare %s %s\n" -#: cmdline/apt-get.cc:1324 +#: cmdline/apt-get.cc:1320 msgid "Some files failed to download" msgstr "Scaricamento di alcuni file non riuscito" -#: cmdline/apt-get.cc:1325 cmdline/apt-get.cc:2497 +#: cmdline/apt-get.cc:1321 cmdline/apt-get.cc:2436 msgid "Download complete and in download only mode" msgstr "Scaricamento completato e in modalità solo scaricamento" -#: cmdline/apt-get.cc:1331 +#: cmdline/apt-get.cc:1327 msgid "" "Unable to fetch some archives, maybe run apt-get update or try with --fix-" "missing?" @@ -1018,19 +1053,19 @@ msgstr "" "Impossibile scaricare alcuni pacchetti. Potrebbe essere utile eseguire \"apt-" "get update\" o provare l'opzione \"--fix-missing\"." -#: cmdline/apt-get.cc:1335 +#: cmdline/apt-get.cc:1331 msgid "--fix-missing and media swapping is not currently supported" msgstr "--fix-missing su supporti estraibili non è ancora supportato" -#: cmdline/apt-get.cc:1340 +#: cmdline/apt-get.cc:1336 msgid "Unable to correct missing packages." msgstr "Impossibile correggere i pacchetti mancanti." -#: cmdline/apt-get.cc:1341 +#: cmdline/apt-get.cc:1337 msgid "Aborting install." msgstr "Interruzione dell'installazione." -#: cmdline/apt-get.cc:1369 +#: cmdline/apt-get.cc:1365 msgid "" "The following package disappeared from your system as\n" "all files have been overwritten by other packages:" @@ -1044,36 +1079,36 @@ msgstr[1] "" "I seguenti pacchetti sono spariti dal sistema poiché\n" "tutti i file sono stati sovrascritti da altri pacchetti:" -#: cmdline/apt-get.cc:1373 +#: cmdline/apt-get.cc:1369 msgid "Note: This is done automatic and on purpose by dpkg." msgstr "Nota: questo viene svolto automaticamente da dpkg." -#: cmdline/apt-get.cc:1503 +#: cmdline/apt-get.cc:1499 #, c-format msgid "Ignore unavailable target release '%s' of package '%s'" msgstr "Ignorato il rilascio non disponibile \"%s\" del pacchetto \"%s\"" -#: cmdline/apt-get.cc:1535 +#: cmdline/apt-get.cc:1531 #, c-format msgid "Picking '%s' as source package instead of '%s'\n" msgstr "Scelto \"%s\" come pacchetto sorgente al posto di \"%s\"\n" #. if (VerTag.empty() == false && Last == 0) -#: cmdline/apt-get.cc:1573 +#: cmdline/apt-get.cc:1569 #, c-format msgid "Ignore unavailable version '%s' of package '%s'" msgstr "Ignorata la versione \"%s\" non disponibile del pacchetto \"%s\"" -#: cmdline/apt-get.cc:1589 +#: cmdline/apt-get.cc:1585 msgid "The update command takes no arguments" msgstr "Il comando update non accetta argomenti" -#: cmdline/apt-get.cc:1651 +#: cmdline/apt-get.cc:1647 msgid "We are not supposed to delete stuff, can't start AutoRemover" msgstr "" "Non si è autorizzati a rimuovere nulla, impossibile avviare AutoRemover" -#: cmdline/apt-get.cc:1703 +#: cmdline/apt-get.cc:1699 msgid "" "Hmm, seems like the AutoRemover destroyed something which really\n" "shouldn't happen. Please file a bug report against apt." @@ -1091,15 +1126,15 @@ msgstr "" #. "that package should be filed.") << endl; #. } #. -#: cmdline/apt-get.cc:1706 cmdline/apt-get.cc:1855 +#: cmdline/apt-get.cc:1702 cmdline/apt-get.cc:1858 msgid "The following information may help to resolve the situation:" msgstr "Le seguenti informazioni possono aiutare a risolvere la situazione:" -#: cmdline/apt-get.cc:1710 +#: cmdline/apt-get.cc:1706 msgid "Internal Error, AutoRemover broke stuff" msgstr "Errore interno, AutoRemover ha rovinato qualche cosa" -#: cmdline/apt-get.cc:1717 +#: cmdline/apt-get.cc:1713 msgid "" "The following package was automatically installed and is no longer required:" msgid_plural "" @@ -1112,7 +1147,7 @@ msgstr[1] "" "I seguenti pacchetti sono stati installati automaticamente e non sono più " "richiesti:" -#: cmdline/apt-get.cc:1721 +#: cmdline/apt-get.cc:1717 #, c-format msgid "%lu package was automatically installed and is no longer required.\n" msgid_plural "" @@ -1123,20 +1158,20 @@ msgstr[1] "" "%lu pacchetti sono stati installati automaticamente e non sono più " "richiesti.\n" -#: cmdline/apt-get.cc:1723 +#: cmdline/apt-get.cc:1719 msgid "Use 'apt-get autoremove' to remove them." msgstr "Usare \"apt-get autoremove\" per rimuoverli." -#: cmdline/apt-get.cc:1742 +#: cmdline/apt-get.cc:1738 msgid "Internal error, AllUpgrade broke stuff" msgstr "Errore interno, AllUpgrade ha rovinato qualche cosa" -#: cmdline/apt-get.cc:1825 +#: cmdline/apt-get.cc:1828 msgid "You might want to run 'apt-get -f install' to correct these:" msgstr "" "È utile eseguire \"apt-get -f install\" per correggere questi problemi:" -#: cmdline/apt-get.cc:1828 +#: cmdline/apt-get.cc:1831 msgid "" "Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a " "solution)." @@ -1144,7 +1179,7 @@ msgstr "" "Dipendenze non soddisfatte. Provare \"apt-get -f install\" senza pacchetti " "(o specificare una soluzione)." -#: cmdline/apt-get.cc:1840 +#: cmdline/apt-get.cc:1843 msgid "" "Some packages could not be installed. This may mean that you have\n" "requested an impossible situation or if you are using the unstable\n" @@ -1156,68 +1191,63 @@ msgstr "" "usando una distribuzione in sviluppo, che alcuni pacchetti richiesti\n" "non sono ancora stati creati o sono stati rimossi da Incoming." -#: cmdline/apt-get.cc:1858 +#: cmdline/apt-get.cc:1861 msgid "Broken packages" msgstr "Pacchetti danneggiati" -#: cmdline/apt-get.cc:1886 +#: cmdline/apt-get.cc:1889 msgid "The following extra packages will be installed:" msgstr "I seguenti pacchetti saranno inoltre installati:" -#: cmdline/apt-get.cc:1976 +#: cmdline/apt-get.cc:1979 msgid "Suggested packages:" msgstr "Pacchetti suggeriti:" -#: cmdline/apt-get.cc:1977 +#: cmdline/apt-get.cc:1980 msgid "Recommended packages:" msgstr "Pacchetti raccomandati:" -#: cmdline/apt-get.cc:2019 +#: cmdline/apt-get.cc:2022 #, c-format msgid "Couldn't find package %s" msgstr "Impossibile trovare il pacchetto %s" -#: cmdline/apt-get.cc:2026 +#: cmdline/apt-get.cc:2029 #, c-format msgid "%s set to automatically installed.\n" msgstr "%s impostato automaticamente come installato.\n" -#: cmdline/apt-get.cc:2047 +#: cmdline/apt-get.cc:2050 msgid "Calculating upgrade... " msgstr "Calcolo dell'aggiornamento... " -#: cmdline/apt-get.cc:2050 methods/ftp.cc:707 methods/connect.cc:111 +#: cmdline/apt-get.cc:2053 methods/ftp.cc:707 methods/connect.cc:111 msgid "Failed" msgstr "Non riuscito" -#: cmdline/apt-get.cc:2055 +#: cmdline/apt-get.cc:2058 msgid "Done" msgstr "Eseguito" -#: cmdline/apt-get.cc:2122 cmdline/apt-get.cc:2130 +#: cmdline/apt-get.cc:2125 cmdline/apt-get.cc:2133 msgid "Internal error, problem resolver broke stuff" msgstr "Errore interno, \"problem resolver\" ha rovinato qualcosa" -#: cmdline/apt-get.cc:2154 cmdline/apt-get.cc:2187 +#: cmdline/apt-get.cc:2157 cmdline/apt-get.cc:2190 msgid "Unable to lock the download directory" msgstr "Impossibile bloccare la directory di scaricamento" -#: cmdline/apt-get.cc:2238 -#, c-format -msgid "Downloading %s %s" -msgstr "" - -#: cmdline/apt-get.cc:2294 +#: cmdline/apt-get.cc:2233 msgid "Must specify at least one package to fetch source for" msgstr "" "È necessario specificare almeno un pacchetto di cui recuperare il sorgente" -#: cmdline/apt-get.cc:2334 cmdline/apt-get.cc:2615 +#: cmdline/apt-get.cc:2273 cmdline/apt-get.cc:2554 #, c-format msgid "Unable to find a source package for %s" msgstr "Impossibile trovare un pacchetto sorgente per %s" -#: cmdline/apt-get.cc:2350 +#: cmdline/apt-get.cc:2289 #, c-format msgid "" "NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n" @@ -1227,7 +1257,7 @@ msgstr "" "all'interno del sistema di controllo della versione \"%s\" presso:\n" "%s\n" -#: cmdline/apt-get.cc:2355 +#: cmdline/apt-get.cc:2294 #, c-format msgid "" "Please use:\n" @@ -1239,80 +1269,80 @@ msgstr "" "per recuperare gli ultimi (e probabilmente non rilasciati) aggiornamenti del " "pacchetto.\n" -#: cmdline/apt-get.cc:2406 +#: cmdline/apt-get.cc:2345 #, c-format msgid "Skipping already downloaded file '%s'\n" msgstr "Il pacchetto \"%s\" già scaricato viene saltato\n" -#: cmdline/apt-get.cc:2441 +#: cmdline/apt-get.cc:2380 #, c-format msgid "You don't have enough free space in %s" msgstr "Lo spazio libero in %s è insufficiente" #. TRANSLATOR: The required space between number and unit is already included #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB -#: cmdline/apt-get.cc:2449 +#: cmdline/apt-get.cc:2388 #, c-format msgid "Need to get %sB/%sB of source archives.\n" msgstr "È necessario recuperare %sB/%sB di sorgenti.\n" #. TRANSLATOR: The required space between number and unit is already included #. in the replacement string, so %sB will be correctly translate in e.g. 1,5 MB -#: cmdline/apt-get.cc:2454 +#: cmdline/apt-get.cc:2393 #, c-format msgid "Need to get %sB of source archives.\n" msgstr "È necessario scaricare %sB di sorgenti.\n" -#: cmdline/apt-get.cc:2460 +#: cmdline/apt-get.cc:2399 #, c-format msgid "Fetch source %s\n" msgstr "Recupero sorgente %s\n" -#: cmdline/apt-get.cc:2493 +#: cmdline/apt-get.cc:2432 msgid "Failed to fetch some archives." msgstr "Recupero di alcuni archivi non riuscito." -#: cmdline/apt-get.cc:2523 +#: cmdline/apt-get.cc:2462 #, c-format msgid "Skipping unpack of already unpacked source in %s\n" msgstr "Estrazione del pacchetto sorgente già estratto in %s saltata\n" -#: cmdline/apt-get.cc:2535 +#: cmdline/apt-get.cc:2474 #, c-format msgid "Unpack command '%s' failed.\n" msgstr "Comando di estrazione \"%s\" non riuscito.\n" -#: cmdline/apt-get.cc:2536 +#: cmdline/apt-get.cc:2475 #, c-format msgid "Check if the 'dpkg-dev' package is installed.\n" msgstr "Verificare che il pacchetto \"dpkg-dev\" sia installato.\n" -#: cmdline/apt-get.cc:2553 +#: cmdline/apt-get.cc:2492 #, c-format msgid "Build command '%s' failed.\n" msgstr "Comando \"%s\" di generazione non riuscito.\n" -#: cmdline/apt-get.cc:2573 +#: cmdline/apt-get.cc:2512 msgid "Child process failed" msgstr "Creazione processo figlio non riuscita" -#: cmdline/apt-get.cc:2589 +#: cmdline/apt-get.cc:2528 msgid "Must specify at least one package to check builddeps for" msgstr "" "È necessario specificare almeno un pacchetto di cui controllare le " "dipendenze di generazione" -#: cmdline/apt-get.cc:2620 +#: cmdline/apt-get.cc:2559 #, c-format msgid "Unable to get build-dependency information for %s" msgstr "Impossibile ottenere informazioni di dipendenza di generazione per %s" -#: cmdline/apt-get.cc:2640 +#: cmdline/apt-get.cc:2579 #, c-format msgid "%s has no build depends.\n" msgstr "%s non ha dipendenze di generazione.\n" -#: cmdline/apt-get.cc:2691 +#: cmdline/apt-get.cc:2630 #, c-format msgid "" "%s dependency for %s cannot be satisfied because the package %s cannot be " @@ -1321,7 +1351,7 @@ msgstr "" "%s dipendenze per %s non possono essere soddisfatte perché il pacchetto %s " "non può essere trovato" -#: cmdline/apt-get.cc:2744 +#: cmdline/apt-get.cc:2683 #, c-format msgid "" "%s dependency for %s cannot be satisfied because no available versions of " @@ -1330,38 +1360,78 @@ msgstr "" "%s dipendenze per %s non possono essere soddisfatte perché nessuna versione " "del pacchetto %s può soddisfare le richieste di versione" -#: cmdline/apt-get.cc:2780 +#: cmdline/apt-get.cc:2719 #, c-format msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new" msgstr "" "La dipendenza %s per %s non è stata soddisfatta: il pacchetto installato %s " "è troppo recente" -#: cmdline/apt-get.cc:2807 +#: cmdline/apt-get.cc:2746 #, c-format msgid "Failed to satisfy %s dependency for %s: %s" msgstr "La dipendenza %s per %s non è stata soddisfatta: %s" -#: cmdline/apt-get.cc:2823 +#: cmdline/apt-get.cc:2762 #, c-format msgid "Build-dependencies for %s could not be satisfied." msgstr "Le dipendenze di generazione per %s non sono state soddisfatte." -#: cmdline/apt-get.cc:2828 +#: cmdline/apt-get.cc:2767 msgid "Failed to process build dependencies" msgstr "Elaborazione delle dipendenze di generazione non riuscita" -#: cmdline/apt-get.cc:2921 cmdline/apt-get.cc:2933 -#, fuzzy, c-format -msgid "Changelog for %s (%s)" -msgstr "Connessione a %s (%s)" - -#: cmdline/apt-get.cc:3052 +#: cmdline/apt-get.cc:2798 msgid "Supported modules:" msgstr "Moduli supportati:" -#: cmdline/apt-get.cc:3093 +#: cmdline/apt-get.cc:2839 #, fuzzy +#| msgid "" +#| "Usage: apt-get [options] command\n" +#| " apt-get [options] install|remove pkg1 [pkg2 ...]\n" +#| " apt-get [options] source pkg1 [pkg2 ...]\n" +#| "\n" +#| "apt-get is a simple command line interface for downloading and\n" +#| "installing packages. The most frequently used commands are update\n" +#| "and install.\n" +#| "\n" +#| "Commands:\n" +#| " update - Retrieve new lists of packages\n" +#| " upgrade - Perform an upgrade\n" +#| " install - Install new packages (pkg is libc6 not libc6.deb)\n" +#| " remove - Remove packages\n" +#| " autoremove - Remove automatically all unused packages\n" +#| " purge - Remove packages and config files\n" +#| " source - Download source archives\n" +#| " build-dep - Configure build-dependencies for source packages\n" +#| " dist-upgrade - Distribution upgrade, see apt-get(8)\n" +#| " dselect-upgrade - Follow dselect selections\n" +#| " clean - Erase downloaded archive files\n" +#| " autoclean - Erase old downloaded archive files\n" +#| " check - Verify that there are no broken dependencies\n" +#| " markauto - Mark the given packages as automatically installed\n" +#| " unmarkauto - Mark the given packages as manually installed\n" +#| " changelog - Download and display the changelog for the given package\n" +#| " download - Download the binary package into the current directory\n" +#| "\n" +#| "Options:\n" +#| " -h This help text.\n" +#| " -q Loggable output - no progress indicator\n" +#| " -qq No output except for errors\n" +#| " -d Download only - do NOT install or unpack archives\n" +#| " -s No-act. Perform ordering simulation\n" +#| " -y Assume Yes to all queries and do not prompt\n" +#| " -f Attempt to correct a system with broken dependencies in place\n" +#| " -m Attempt to continue if archives are unlocatable\n" +#| " -u Show a list of upgraded packages as well\n" +#| " -b Build the source package after fetching it\n" +#| " -V Show verbose version numbers\n" +#| " -c=? Read this configuration file\n" +#| " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n" +#| "See the apt-get(8), sources.list(5) and apt.conf(5) manual\n" +#| "pages for more information and options.\n" +#| " This APT has Super Cow Powers.\n" msgid "" "Usage: apt-get [options] command\n" " apt-get [options] install|remove pkg1 [pkg2 ...]\n" @@ -1387,8 +1457,6 @@ msgid "" " check - Verify that there are no broken dependencies\n" " markauto - Mark the given packages as automatically installed\n" " unmarkauto - Mark the given packages as manually installed\n" -" changelog - Download and display the changelog for the given package\n" -" download - Download the binary package into the current directory\n" "\n" "Options:\n" " -h This help text.\n" @@ -1433,6 +1501,8 @@ msgstr "" " check - Verifica che non ci siano dipendenze insoddisfatte\n" " markauto - Imposta i pacchetti forniti come installati automaticamente\n" " unmarkauto - Imposta i pacchetti forniti come installati manualmente\n" +" changelog - Scarica e visualizza il changelog per il pacchetto indicato\n" +" download - Scarica il pacchetto binario nella directory attuale\n" "\n" "Opzioni:\n" " -h Mostra questo aiuto\n" @@ -1453,7 +1523,7 @@ msgstr "" "apt-get(8), sources.list(5) e apt.conf(5).\n" " Questo APT ha i poteri della Super Mucca.\n" -#: cmdline/apt-get.cc:3254 +#: cmdline/apt-get.cc:2995 msgid "" "NOTE: This is only a simulation!\n" " apt-get needs root privileges for real execution.\n" @@ -1580,7 +1650,7 @@ msgstr "Creazione delle pipe non riuscita" msgid "Failed to exec gzip " msgstr "Esecuzione di gzip non riuscita" -#: apt-inst/contrib/extracttar.cc:178 apt-inst/contrib/extracttar.cc:208 +#: apt-inst/contrib/extracttar.cc:178 apt-inst/contrib/extracttar.cc:204 msgid "Corrupted archive" msgstr "Archivio danneggiato" @@ -1588,7 +1658,7 @@ msgstr "Archivio danneggiato" msgid "Tar checksum failed, archive corrupted" msgstr "Checksum di tar non riuscito, archivio danneggiato" -#: apt-inst/contrib/extracttar.cc:300 +#: apt-inst/contrib/extracttar.cc:296 #, c-format msgid "Unknown TAR header type %u, member %s" msgstr "Intestazione TAR di tipo %u sconosciuta, member %s" @@ -1697,28 +1767,28 @@ msgstr "Localizzazione del nodo nel suo hash bucket non riuscita" msgid "The path is too long" msgstr "Il percorso è troppo lungo" -#: apt-inst/extract.cc:412 +#: apt-inst/extract.cc:414 #, c-format msgid "Overwrite package match with no version for %s" msgstr "Il pacchetto sovrascritto corrisponde senza versione per %s" -#: apt-inst/extract.cc:429 +#: apt-inst/extract.cc:431 #, c-format msgid "File %s/%s overwrites the one in the package %s" msgstr "Il file %s/%s sovrascrive quello nel pacchetto %s" #. Only warn if there are no sources.list.d. #. Only warn if there is no sources.list file. -#: apt-inst/extract.cc:462 apt-pkg/contrib/cdromutl.cc:179 -#: apt-pkg/contrib/fileutl.cc:334 apt-pkg/sourcelist.cc:204 -#: apt-pkg/sourcelist.cc:210 apt-pkg/acquire.cc:450 apt-pkg/init.cc:103 -#: apt-pkg/init.cc:111 apt-pkg/clean.cc:33 apt-pkg/policy.cc:309 +#: apt-inst/extract.cc:464 apt-pkg/contrib/cdromutl.cc:179 +#: apt-pkg/contrib/fileutl.cc:329 apt-pkg/sourcelist.cc:204 +#: apt-pkg/sourcelist.cc:210 apt-pkg/acquire.cc:450 apt-pkg/init.cc:100 +#: apt-pkg/init.cc:108 apt-pkg/clean.cc:33 apt-pkg/policy.cc:307 #: methods/mirror.cc:87 #, c-format msgid "Unable to read %s" msgstr "Impossibile leggere %s" -#: apt-inst/extract.cc:489 +#: apt-inst/extract.cc:491 #, c-format msgid "Unable to stat %s" msgstr "Impossibile eseguire stat su %s" @@ -1742,9 +1812,9 @@ msgstr "Esecuzione di stat su %sinfo non riuscita" msgid "The info and temp directories need to be on the same filesystem" msgstr "Le directory temp e info devono essere sullo stesso file system" -#: apt-inst/deb/dpkgdb.cc:135 apt-pkg/pkgcachegen.cc:1074 -#: apt-pkg/pkgcachegen.cc:1178 apt-pkg/pkgcachegen.cc:1184 -#: apt-pkg/pkgcachegen.cc:1330 +#: apt-inst/deb/dpkgdb.cc:135 apt-pkg/pkgcachegen.cc:1070 +#: apt-pkg/pkgcachegen.cc:1174 apt-pkg/pkgcachegen.cc:1180 +#: apt-pkg/pkgcachegen.cc:1326 msgid "Reading package lists" msgstr "Lettura elenco dei pacchetti" @@ -1848,28 +1918,24 @@ msgstr "Impossibile localizzare un file \"control\" valido" msgid "Unparsable control file" msgstr "File \"control\" non analizzabile" -#: methods/bzip2.cc:60 methods/gzip.cc:52 -msgid "Empty files can't be valid archives" -msgstr "" - -#: methods/bzip2.cc:64 +#: methods/bzip2.cc:65 #, c-format msgid "Couldn't open pipe for %s" msgstr "Impossibile aprire una pipe per %s" -#: methods/bzip2.cc:108 +#: methods/bzip2.cc:109 #, c-format msgid "Read error from %s process" msgstr "Errore di lettura dal processo %s" -#: methods/bzip2.cc:140 methods/bzip2.cc:149 methods/copy.cc:43 -#: methods/gzip.cc:92 methods/gzip.cc:101 methods/rred.cc:524 -#: methods/rred.cc:533 +#: methods/bzip2.cc:141 methods/bzip2.cc:150 methods/copy.cc:43 +#: methods/gzip.cc:93 methods/gzip.cc:102 methods/rred.cc:486 +#: methods/rred.cc:495 msgid "Failed to stat" msgstr "Esecuzione di stat non riuscita" -#: methods/bzip2.cc:146 methods/copy.cc:80 methods/gzip.cc:98 -#: methods/rred.cc:530 +#: methods/bzip2.cc:147 methods/copy.cc:80 methods/gzip.cc:99 +#: methods/rred.cc:492 msgid "Failed to set modification time" msgstr "Impostazione della data di modifica non riuscita" @@ -1962,7 +2028,7 @@ msgstr "Connessione scaduta" msgid "Server closed the connection" msgstr "Il server ha chiuso la connessione" -#: methods/ftp.cc:344 apt-pkg/contrib/fileutl.cc:811 methods/rsh.cc:190 +#: methods/ftp.cc:344 apt-pkg/contrib/fileutl.cc:802 methods/rsh.cc:190 msgid "Read error" msgstr "Errore di lettura" @@ -1974,7 +2040,7 @@ msgstr "Una risposta ha superato le dimensioni del buffer." msgid "Protocol corruption" msgstr "Protocollo danneggiato" -#: methods/ftp.cc:452 apt-pkg/contrib/fileutl.cc:853 methods/rsh.cc:232 +#: methods/ftp.cc:452 apt-pkg/contrib/fileutl.cc:844 methods/rsh.cc:232 msgid "Write error" msgstr "Errore di scrittura" @@ -2214,7 +2280,7 @@ msgstr "Errore nel leggere dal server. Il lato remoto ha chiuso la connessione" msgid "Error reading from server" msgstr "Errore nel leggere dal server" -#: methods/http.cc:991 apt-pkg/contrib/mmap.cc:283 +#: methods/http.cc:991 apt-pkg/contrib/mmap.cc:281 msgid "Failed to truncate file" msgstr "Troncamento del file non riuscito" @@ -2252,7 +2318,7 @@ msgstr "Impossibile chiudere mmap" msgid "Unable to synchronize mmap" msgstr "Impossibile sincronizzare mmap" -#: apt-pkg/contrib/mmap.cc:302 +#: apt-pkg/contrib/mmap.cc:300 #, c-format msgid "" "Dynamic MMap ran out of room. Please increase the size of APT::Cache-Limit. " @@ -2261,7 +2327,7 @@ msgstr "" "MMap dinamica esaurita. Aumentare la dimensione di APT::Cache-Limit. Il " "valore attuale è: %lu (man 5 apt.conf)." -#: apt-pkg/contrib/mmap.cc:401 +#: apt-pkg/contrib/mmap.cc:399 #, c-format msgid "" "Unable to increase the size of the MMap as the limit of %lu bytes is already " @@ -2271,7 +2337,7 @@ msgstr "" "byte è stato raggiunto." # (ndt) lunghetta... -#: apt-pkg/contrib/mmap.cc:404 +#: apt-pkg/contrib/mmap.cc:402 msgid "" "Unable to increase size of the MMap as automatic growing is disabled by user." msgstr "" @@ -2302,7 +2368,7 @@ msgstr "%limin %lis" msgid "%lis" msgstr "%lis" -#: apt-pkg/contrib/strutl.cc:1136 +#: apt-pkg/contrib/strutl.cc:1119 #, c-format msgid "Selection %s not found" msgstr "Selezione %s non trovata" @@ -2441,113 +2507,98 @@ msgstr "Impossibile passare a %s" msgid "Failed to stat the cdrom" msgstr "Esecuzione di stat sul CD-ROM non riuscita" -#: apt-pkg/contrib/fileutl.cc:159 +#: apt-pkg/contrib/fileutl.cc:154 #, c-format msgid "Not using locking for read only lock file %s" msgstr "Blocco disabilitato per il file di blocco in sola lettura %s" -#: apt-pkg/contrib/fileutl.cc:164 +#: apt-pkg/contrib/fileutl.cc:159 #, c-format msgid "Could not open lock file %s" msgstr "Impossibile aprire il file di blocco %s" -#: apt-pkg/contrib/fileutl.cc:182 +#: apt-pkg/contrib/fileutl.cc:177 #, c-format msgid "Not using locking for nfs mounted lock file %s" msgstr "Blocco disabilitato per il file di blocco %s montato via nfs" -#: apt-pkg/contrib/fileutl.cc:186 +#: apt-pkg/contrib/fileutl.cc:181 #, c-format msgid "Could not get lock %s" msgstr "Impossibile impostare il blocco %s" -#: apt-pkg/contrib/fileutl.cc:326 +#: apt-pkg/contrib/fileutl.cc:321 #, c-format msgid "List of files can't be created as '%s' is not a directory" msgstr "" +"L'elenco dei file non può essere creato poiché \"%s\" non è una directory" -#: apt-pkg/contrib/fileutl.cc:353 -#, c-format -msgid "Ignoring '%s' in directory '%s' as it is not a regular file" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:371 -#, c-format -msgid "Ignoring file '%s' in directory '%s' as it has no filename extension" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:380 -#, c-format -msgid "" -"Ignoring file '%s' in directory '%s' as it has an invalid filename extension" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:670 +#: apt-pkg/contrib/fileutl.cc:661 #, c-format msgid "Waited for %s but it wasn't there" msgstr "In attesa di %s ma non era presente" -#: apt-pkg/contrib/fileutl.cc:682 +#: apt-pkg/contrib/fileutl.cc:673 #, c-format msgid "Sub-process %s received a segmentation fault." msgstr "Il sottoprocesso %s ha ricevuto un segmentation fault." -#: apt-pkg/contrib/fileutl.cc:684 +#: apt-pkg/contrib/fileutl.cc:675 #, c-format msgid "Sub-process %s received signal %u." msgstr "Il sottoprocesso %s ha ricevuto il segnale %u." -#: apt-pkg/contrib/fileutl.cc:688 +#: apt-pkg/contrib/fileutl.cc:679 #, c-format msgid "Sub-process %s returned an error code (%u)" msgstr "Il sottoprocesso %s ha restituito un codice d'errore (%u)" -#: apt-pkg/contrib/fileutl.cc:690 +#: apt-pkg/contrib/fileutl.cc:681 #, c-format msgid "Sub-process %s exited unexpectedly" msgstr "Il sottoprocesso %s è uscito inaspettatamente" -#: apt-pkg/contrib/fileutl.cc:755 +#: apt-pkg/contrib/fileutl.cc:746 #, c-format msgid "Could not open file %s" msgstr "Impossibile aprire il file %s" -#: apt-pkg/contrib/fileutl.cc:772 +#: apt-pkg/contrib/fileutl.cc:763 #, c-format msgid "Could not open file descriptor %d" msgstr "Impossibile aprire il descrittore del file %d" -#: apt-pkg/contrib/fileutl.cc:832 +#: apt-pkg/contrib/fileutl.cc:823 #, c-format msgid "read, still have %lu to read but none left" msgstr "lettura, c'erano ancora %lu da leggere ma non ne è rimasto alcuno" -#: apt-pkg/contrib/fileutl.cc:865 +#: apt-pkg/contrib/fileutl.cc:856 #, c-format msgid "write, still have %lu to write but couldn't" msgstr "scrittura, c'erano ancora %lu da scrivere ma non è stato possibile" -#: apt-pkg/contrib/fileutl.cc:1001 +#: apt-pkg/contrib/fileutl.cc:985 #, c-format msgid "Problem closing the gzip file %s" msgstr "Si è verificato un problema nel chiudere il file gzip %s" -#: apt-pkg/contrib/fileutl.cc:1004 +#: apt-pkg/contrib/fileutl.cc:988 #, c-format msgid "Problem closing the file %s" msgstr "Si è verificato un problema nel chiudere il file %s" -#: apt-pkg/contrib/fileutl.cc:1009 +#: apt-pkg/contrib/fileutl.cc:993 #, c-format msgid "Problem renaming the file %s to %s" msgstr "Si è verificato un problema nel rinominare il file %s in %s" -#: apt-pkg/contrib/fileutl.cc:1020 +#: apt-pkg/contrib/fileutl.cc:1004 #, c-format msgid "Problem unlinking the file %s" msgstr "Si è verificato un problema nell'eseguire l'unlink del file %s" -#: apt-pkg/contrib/fileutl.cc:1033 +#: apt-pkg/contrib/fileutl.cc:1017 msgid "Problem syncing the file" msgstr "Si è verificato un problema nel sincronizzare il file" @@ -2788,7 +2839,7 @@ msgstr "" msgid "Index file type '%s' is not supported" msgstr "Il file indice di tipo \"%s\" non è supportato" -#: apt-pkg/algorithms.cc:313 +#: apt-pkg/algorithms.cc:292 #, c-format msgid "" "The package %s needs to be reinstalled, but I can't find an archive for it." @@ -2796,7 +2847,7 @@ msgstr "" "Il pacchetto %s deve essere reinstallato, ma non è possibile trovarne un " "archivio." -#: apt-pkg/algorithms.cc:1239 +#: apt-pkg/algorithms.cc:1218 msgid "" "Error, pkgProblemResolver::Resolve generated breaks, this may be caused by " "held packages." @@ -2804,15 +2855,18 @@ msgstr "" "Errore, pkgProblemResolver::Resolve ha generato delle interruzioni. Questo " "potrebbe essere causato da pacchetti bloccati." -#: apt-pkg/algorithms.cc:1241 +#: apt-pkg/algorithms.cc:1220 msgid "Unable to correct problems, you have held broken packages." msgstr "" "Impossibile correggere i problemi, ci sono pacchetti danneggiati bloccati." -#: apt-pkg/algorithms.cc:1517 apt-pkg/algorithms.cc:1519 +#: apt-pkg/algorithms.cc:1496 apt-pkg/algorithms.cc:1498 #, fuzzy +#| msgid "" +#| "Some index files failed to download. They have been ignored, or old ones " +#| "used instead." msgid "" -"Some index files failed to download. They have been ignored, or old ones " +"Some index files failed to download, they have been ignored, or old ones " "used instead." msgstr "" "Impossibile scaricare alcuni file di indice: saranno ignorati o verranno " @@ -2860,12 +2914,12 @@ msgstr "Il metodo %s non si è avviato correttamente" msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter." msgstr "Inserire il disco chiamato \"%s\" nell'unità \"%s\" e premere Invio." -#: apt-pkg/init.cc:146 +#: apt-pkg/init.cc:143 #, c-format msgid "Packaging system '%s' is not supported" msgstr "Il sistema di pacchetti \"%s\" non è supportato" -#: apt-pkg/init.cc:162 +#: apt-pkg/init.cc:159 msgid "Unable to determine a suitable packaging system type" msgstr "Impossibile determinare un tipo di sistema appropriato di pacchetti" @@ -2893,19 +2947,19 @@ msgstr "" msgid "The list of sources could not be read." msgstr "Impossibile leggere l'elenco dei sorgenti." -#: apt-pkg/policy.cc:346 +#: apt-pkg/policy.cc:344 #, c-format msgid "Invalid record in the preferences file %s, no Package header" msgstr "" "Campo non valido nel file delle preferenze %s, manca l'intestazione \"Package" "\"" -#: apt-pkg/policy.cc:368 +#: apt-pkg/policy.cc:366 #, c-format msgid "Did not understand pin type %s" msgstr "Impossibile comprendere il tipo di gancio %s" -#: apt-pkg/policy.cc:376 +#: apt-pkg/policy.cc:374 msgid "No priority (or zero) specified for pin" msgstr "Priorità per il gancio non specificata (o zero)" @@ -2989,17 +3043,17 @@ msgstr "" "Il pacchetto %s v.%s non è stato trovato durante l'elaborazione delle " "dipendenze" -#: apt-pkg/pkgcachegen.cc:986 +#: apt-pkg/pkgcachegen.cc:982 #, c-format msgid "Couldn't stat source package list %s" msgstr "Impossibile eseguire stat sull'elenco dei pacchetti sorgente %s" # (ndt) non mi convince per niente, ma vediamo cosa salta fuori -#: apt-pkg/pkgcachegen.cc:1091 +#: apt-pkg/pkgcachegen.cc:1087 msgid "Collecting File Provides" msgstr "Il file fornisce" -#: apt-pkg/pkgcachegen.cc:1269 apt-pkg/pkgcachegen.cc:1276 +#: apt-pkg/pkgcachegen.cc:1265 apt-pkg/pkgcachegen.cc:1272 msgid "IO Error saving source cache" msgstr "Errore di I/O nel salvare la cache sorgente" @@ -3008,28 +3062,16 @@ msgstr "Errore di I/O nel salvare la cache sorgente" msgid "rename failed, %s (%s -> %s)." msgstr "rename() non riuscita: %s (%s -> %s)." -#: apt-pkg/acquire-item.cc:629 +#: apt-pkg/acquire-item.cc:484 msgid "MD5Sum mismatch" msgstr "MD5sum non corrispondente" -#: apt-pkg/acquire-item.cc:887 apt-pkg/acquire-item.cc:1781 -#: apt-pkg/acquire-item.cc:1924 +#: apt-pkg/acquire-item.cc:746 apt-pkg/acquire-item.cc:1574 +#: apt-pkg/acquire-item.cc:1717 msgid "Hash Sum mismatch" msgstr "Somma hash non corrispondente" -#: apt-pkg/acquire-item.cc:1341 -#, c-format -msgid "" -"Unable to find expected entry '%s' in Release file (Wrong sources.list entry " -"or malformed file)" -msgstr "" - -#: apt-pkg/acquire-item.cc:1356 -#, fuzzy, c-format -msgid "Unable to find hash sum for '%s' in Release file" -msgstr "Impossibile analizzare il file Release %s" - -#: apt-pkg/acquire-item.cc:1415 +#: apt-pkg/acquire-item.cc:1244 msgid "There is no public key available for the following key IDs:\n" msgstr "" "Non è disponibile alcuna chiave pubblica per i seguenti ID di chiavi:\n" @@ -3037,17 +3079,17 @@ msgstr "" #. TRANSLATOR: The first %s is the URL of the bad Release file, the second is #. the time since then the file is invalid - formated in the same way as in #. the download progress display (e.g. 7d 3h 42min 1s) -#: apt-pkg/acquire-item.cc:1452 +#: apt-pkg/acquire-item.cc:1281 #, c-format msgid "Release file expired, ignoring %s (invalid since %s)" msgstr "File Release scaduto, %s viene ignorato (non valido da %s)" -#: apt-pkg/acquire-item.cc:1473 +#: apt-pkg/acquire-item.cc:1302 #, c-format msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "Distribuzione in conflitto: %s (atteso %s ma ottenuto %s)" -#: apt-pkg/acquire-item.cc:1506 +#: apt-pkg/acquire-item.cc:1328 #, c-format msgid "" "A error occurred during the signature verification. The repository is not " @@ -3056,12 +3098,12 @@ msgstr "" "Si è verificato un errore nel verificare la firma. Il repository non è " "aggiornato e verranno usati i file indice precedenti. Errore GPG: %s: %s\n" -#: apt-pkg/acquire-item.cc:1515 +#: apt-pkg/acquire-item.cc:1337 #, c-format msgid "GPG error: %s: %s" msgstr "Errore GPG: %s: %s" -#: apt-pkg/acquire-item.cc:1572 +#: apt-pkg/acquire-item.cc:1365 #, c-format msgid "" "I wasn't able to locate a file for the %s package. This might mean you need " @@ -3070,7 +3112,7 @@ msgstr "" "Impossibile trovare un file per il pacchetto %s. Potrebbe essere necessario " "sistemare manualmente questo pacchetto (a causa dell'architettura mancante)." -#: apt-pkg/acquire-item.cc:1631 +#: apt-pkg/acquire-item.cc:1424 #, c-format msgid "" "I wasn't able to locate file for the %s package. This might mean you need to " @@ -3080,7 +3122,7 @@ msgstr "" "sistemare manualmente questo pacchetto." # (ndt) sarebbe da controllare se veramente possono esistere più file indice -#: apt-pkg/acquire-item.cc:1686 +#: apt-pkg/acquire-item.cc:1479 #, c-format msgid "" "The package index files are corrupted. No Filename: field for package %s." @@ -3088,7 +3130,7 @@ msgstr "" "I file indice del pacchetto sono danneggiati. Manca il campo \"Filename:\" " "per il pacchetto %s." -#: apt-pkg/acquire-item.cc:1773 +#: apt-pkg/acquire-item.cc:1566 msgid "Size mismatch" msgstr "Le dimensioni non corrispondono" @@ -3097,22 +3139,22 @@ msgstr "Le dimensioni non corrispondono" msgid "Unable to parse Release file %s" msgstr "Impossibile analizzare il file Release %s" -#: apt-pkg/indexrecords.cc:63 +#: apt-pkg/indexrecords.cc:60 #, c-format msgid "No sections in Release file %s" msgstr "Nessuna sezione nel file Release %s" -#: apt-pkg/indexrecords.cc:97 +#: apt-pkg/indexrecords.cc:94 #, c-format msgid "No Hash entry in Release file %s" msgstr "Nessuna voce Hash nel file Release %s" -#: apt-pkg/indexrecords.cc:110 +#: apt-pkg/indexrecords.cc:107 #, c-format msgid "Invalid 'Valid-Until' entry in Release file %s" msgstr "Voce \"Valid-Until\" nel file Release %s non valida" -#: apt-pkg/indexrecords.cc:125 +#: apt-pkg/indexrecords.cc:122 #, c-format msgid "Invalid 'Date' entry in Release file %s" msgstr "Voce \"Date\" nel file Release %s non valida" @@ -3213,22 +3255,22 @@ msgstr "Scrittura nuovo elenco sorgenti\n" msgid "Source list entries for this disc are:\n" msgstr "Le voci dell'elenco sorgenti per questo disco sono:\n" -#: apt-pkg/indexcopy.cc:270 apt-pkg/indexcopy.cc:909 +#: apt-pkg/indexcopy.cc:270 apt-pkg/indexcopy.cc:908 #, c-format msgid "Wrote %i records.\n" msgstr "Scritti %i record.\n" -#: apt-pkg/indexcopy.cc:272 apt-pkg/indexcopy.cc:911 +#: apt-pkg/indexcopy.cc:272 apt-pkg/indexcopy.cc:910 #, c-format msgid "Wrote %i records with %i missing files.\n" msgstr "Scritti %i record con %i file mancanti.\n" -#: apt-pkg/indexcopy.cc:275 apt-pkg/indexcopy.cc:914 +#: apt-pkg/indexcopy.cc:275 apt-pkg/indexcopy.cc:913 #, c-format msgid "Wrote %i records with %i mismatched files\n" msgstr "Scritti %i record con %i file senza corrispondenze\n" -#: apt-pkg/indexcopy.cc:278 apt-pkg/indexcopy.cc:917 +#: apt-pkg/indexcopy.cc:278 apt-pkg/indexcopy.cc:916 #, c-format msgid "Wrote %i records with %i missing files and %i mismatched files\n" msgstr "" @@ -3313,12 +3355,12 @@ msgstr "" msgid "Installing %s" msgstr "Installazione di %s" -#: apt-pkg/deb/dpkgpm.cc:53 apt-pkg/deb/dpkgpm.cc:819 +#: apt-pkg/deb/dpkgpm.cc:53 apt-pkg/deb/dpkgpm.cc:823 #, c-format msgid "Configuring %s" msgstr "Configurazione di %s" -#: apt-pkg/deb/dpkgpm.cc:54 apt-pkg/deb/dpkgpm.cc:826 +#: apt-pkg/deb/dpkgpm.cc:54 apt-pkg/deb/dpkgpm.cc:830 #, c-format msgid "Removing %s" msgstr "Rimozione di %s" @@ -3339,78 +3381,78 @@ msgid "Running post-installation trigger %s" msgstr "Esecuzione comando di post installazione %s" #. FIXME: use a better string after freeze -#: apt-pkg/deb/dpkgpm.cc:642 +#: apt-pkg/deb/dpkgpm.cc:646 #, c-format msgid "Directory '%s' missing" msgstr "Directory \"%s\" mancante" -#: apt-pkg/deb/dpkgpm.cc:657 apt-pkg/deb/dpkgpm.cc:671 +#: apt-pkg/deb/dpkgpm.cc:661 apt-pkg/deb/dpkgpm.cc:675 #, c-format msgid "Could not open file '%s'" msgstr "Impossibile aprire il file \"%s\"" -#: apt-pkg/deb/dpkgpm.cc:812 +#: apt-pkg/deb/dpkgpm.cc:816 #, c-format msgid "Preparing %s" msgstr "Preparazione di %s" -#: apt-pkg/deb/dpkgpm.cc:813 +#: apt-pkg/deb/dpkgpm.cc:817 #, c-format msgid "Unpacking %s" msgstr "Estrazione di %s" -#: apt-pkg/deb/dpkgpm.cc:818 +#: apt-pkg/deb/dpkgpm.cc:822 #, c-format msgid "Preparing to configure %s" msgstr "Preparazione alla configurazione di %s" -#: apt-pkg/deb/dpkgpm.cc:820 +#: apt-pkg/deb/dpkgpm.cc:824 #, c-format msgid "Installed %s" msgstr "Pacchetto %s installato" -#: apt-pkg/deb/dpkgpm.cc:825 +#: apt-pkg/deb/dpkgpm.cc:829 #, c-format msgid "Preparing for removal of %s" msgstr "Preparazione alla rimozione di %s" -#: apt-pkg/deb/dpkgpm.cc:827 +#: apt-pkg/deb/dpkgpm.cc:831 #, c-format msgid "Removed %s" msgstr "Pacchetto %s rimosso" -#: apt-pkg/deb/dpkgpm.cc:832 +#: apt-pkg/deb/dpkgpm.cc:836 #, c-format msgid "Preparing to completely remove %s" msgstr "Preparazione alla rimozione completa di %s" -#: apt-pkg/deb/dpkgpm.cc:833 +#: apt-pkg/deb/dpkgpm.cc:837 #, c-format msgid "Completely removed %s" msgstr "Pacchetto %s rimosso completamente" -#: apt-pkg/deb/dpkgpm.cc:1039 +#: apt-pkg/deb/dpkgpm.cc:1043 msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n" msgstr "" "Impossibile scrivere il registro, openpty() non riuscita (forse /dev/pts non " "è montato)\n" -#: apt-pkg/deb/dpkgpm.cc:1070 +#: apt-pkg/deb/dpkgpm.cc:1074 msgid "Running dpkg" msgstr "Esecuzione di dpkg" -#: apt-pkg/deb/dpkgpm.cc:1273 +#: apt-pkg/deb/dpkgpm.cc:1277 msgid "No apport report written because MaxReports is reached already" msgstr "" "Segnalazione apport non scritta poiché è stato raggiunto il valore massimo " "di MaxReports" #. check if its not a follow up error -#: apt-pkg/deb/dpkgpm.cc:1278 +#: apt-pkg/deb/dpkgpm.cc:1282 msgid "dependency problems - leaving unconfigured" msgstr "Problemi con le dipendenze - Viene lasciato non configurato" -#: apt-pkg/deb/dpkgpm.cc:1280 +#: apt-pkg/deb/dpkgpm.cc:1284 msgid "" "No apport report written because the error message indicates its a followup " "error from a previous failure." @@ -3418,7 +3460,7 @@ msgstr "" "Segnalazione apport non scritta poiché il messaggio di errore indica la " "presenza di un fallimento precedente." -#: apt-pkg/deb/dpkgpm.cc:1286 +#: apt-pkg/deb/dpkgpm.cc:1290 msgid "" "No apport report written because the error message indicates a disk full " "error" @@ -3426,7 +3468,7 @@ msgstr "" "Segnalazione apport non scritta poiché il messaggio di errore indica un " "errore per disco pieno." -#: apt-pkg/deb/dpkgpm.cc:1292 +#: apt-pkg/deb/dpkgpm.cc:1296 msgid "" "No apport report written because the error message indicates a out of memory " "error" @@ -3434,7 +3476,7 @@ msgstr "" "Segnalazione apport non scritta poiché il messaggio di errore indica un " "errore di memoria esaurita" -#: apt-pkg/deb/dpkgpm.cc:1299 +#: apt-pkg/deb/dpkgpm.cc:1303 msgid "" "No apport report written because the error message indicates a dpkg I/O error" msgstr "" @@ -3483,7 +3525,7 @@ msgstr "Nessun file mirror \"%s\" trovato" msgid "[Mirror: %s]" msgstr "[Mirror: %s]" -#: methods/rred.cc:503 +#: methods/rred.cc:465 #, c-format msgid "" "Could not patch %s with mmap and with file operation usage - the patch seems " @@ -3492,7 +3534,7 @@ msgstr "" "Impossibile applicare la patch a %s con mmap e con l'utilizzo di operazioni " "file. La patch sembra essere danneggiata." -#: methods/rred.cc:508 +#: methods/rred.cc:470 #, c-format msgid "" "Could not patch %s with mmap (but no mmap specific fail) - the patch seems " @@ -3504,3 +3546,38 @@ msgstr "" #: methods/rsh.cc:329 msgid "Connection closed prematurely" msgstr "Connessione chiusa prematuramente" + +#~ msgid "Downloading %s %s" +#~ msgstr "Scaricamento di %s %s" + +#~ msgid "Changelog for %s (%s)" +#~ msgstr "Changelog per %s (%s)" + +#~ msgid "Empty files can't be valid archives" +#~ msgstr "File vuoti non possono essere archivi validi" + +#~ msgid "Ignoring '%s' in directory '%s' as it is not a regular file" +#~ msgstr "" +#~ "Viene ignorato \"%s\" nella directory \"%s\" poiché non è un file regolare" + +#~ msgid "Ignoring file '%s' in directory '%s' as it has no filename extension" +#~ msgstr "" +#~ "Viene ignorato il file \"%s\" nella directory \"%s\" poiché non ha " +#~ "un'estensione" + +#~ msgid "" +#~ "Ignoring file '%s' in directory '%s' as it has an invalid filename " +#~ "extension" +#~ msgstr "" +#~ "Viene ignorato il file \"%s\" nella directory \"%s\" poiché ha " +#~ "un'estensione non valida" + +#~ msgid "" +#~ "Unable to find expected entry '%s' in Release file (Wrong sources.list " +#~ "entry or malformed file)" +#~ msgstr "" +#~ "Impossibile trovare la voce \"%s\" nel file Release (voce in sources.list " +#~ "errata o file danneggiato)" + +#~ msgid "Unable to find hash sum for '%s' in Release file" +#~ msgstr "Impossibile trovare la somma hash per \"%s\" nel file Release" diff --git a/test/integration/framework b/test/integration/framework index 7e1d25e61..71e7e476c 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -328,10 +328,10 @@ createaptftparchiveconfig() { echo -n '"; }; Default { - Packages::Compress ". gzip bzip2 lzma"; - Sources::Compress ". gzip bzip2 lzma"; - Contents::Compress ". gzip bzip2 lzma"; - Translation::Compress ". gzip bzip2 lzma"; + Packages::Compress ". gzip bzip2 lzma xz"; + Sources::Compress ". gzip bzip2 lzma xz"; + Contents::Compress ". gzip bzip2 lzma xz"; + Translation::Compress ". gzip bzip2 lzma xz"; LongDescription "false"; }; TreeDefault { @@ -438,6 +438,7 @@ buildaptarchivefromfiles() { cat ${line} | gzip > ${line}.gz cat ${line} | bzip2 > ${line}.bz2 cat ${line} | lzma > ${line}.lzma + cat ${line} | xz > ${line}.xz msgdone "info" done generatereleasefiles diff --git a/test/integration/test-bug-549968-install-depends-of-not-installed b/test/integration/test-bug-549968-install-depends-of-not-installed index 864dd340a..871d236b9 100755 --- a/test/integration/test-bug-549968-install-depends-of-not-installed +++ b/test/integration/test-bug-549968-install-depends-of-not-installed @@ -22,5 +22,5 @@ Package extracoolstuff is not installed, so not removed The following NEW packages will be installed: coolstuff 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. -Inst coolstuff (1.0 unstable [all]) -Conf coolstuff (1.0 unstable [all])' aptget install coolstuff extracoolstuff- -o Debug::pkgDepCache::Marker=1 -s +Inst coolstuff (1.0 unstable [i386]) +Conf coolstuff (1.0 unstable [i386])' aptget install coolstuff extracoolstuff- -o Debug::pkgDepCache::Marker=1 -s diff --git a/test/integration/test-bug-590438-broken-provides-thanks-to-remove-order b/test/integration/test-bug-590438-broken-provides-thanks-to-remove-order index 0f6493948..72de6eacb 100755 --- a/test/integration/test-bug-590438-broken-provides-thanks-to-remove-order +++ b/test/integration/test-bug-590438-broken-provides-thanks-to-remove-order @@ -62,13 +62,13 @@ predependsgawk2() { echo "$pkgbasefile Pre-Depends: $1 " >> rootdir/var/lib/dpkg/status - testequalor2 "Inst coolstuff (1-1 localhost [all]) -Conf coolstuff (1-1 localhost [all]) + testequalor2 "Inst coolstuff (1-1 localhost [i386]) +Conf coolstuff (1-1 localhost [i386]) Inst gawk2 (1:3.1.7.dfsg-5 localhost [i386]) Conf gawk2 (1:3.1.7.dfsg-5 localhost [i386]) -Remv mawk [1.3.3-15]" "Inst coolstuff (1-1 localhost [all]) +Remv mawk [1.3.3-15]" "Inst coolstuff (1-1 localhost [i386]) Inst gawk2 (1:3.1.7.dfsg-5 localhost [i386]) -Conf coolstuff (1-1 localhost [all]) +Conf coolstuff (1-1 localhost [i386]) Conf gawk2 (1:3.1.7.dfsg-5 localhost [i386]) Remv mawk [1.3.3-15]" aptget install gawk2 mawk- -sqq -o PreDepends=$(echo "$1" | sed 's/ //g') } diff --git a/test/integration/test-bug-593360-modifiers-in-names b/test/integration/test-bug-593360-modifiers-in-names index 83a3cfabf..c34b499b0 100755 --- a/test/integration/test-bug-593360-modifiers-in-names +++ b/test/integration/test-bug-593360-modifiers-in-names @@ -36,29 +36,29 @@ Building dependency tree... The following NEW packages will be installed: apt 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. -Inst apt (0.8.8 localhost [all]) -Conf apt (0.8.8 localhost [all])' aptget install apt -s +Inst apt (0.8.8 localhost [i386]) +Conf apt (0.8.8 localhost [i386])' aptget install apt -s testequal 'Reading package lists... Building dependency tree... The following NEW packages will be installed: apt+ 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. -Inst apt+ (0.8.8 localhost [all]) -Conf apt+ (0.8.8 localhost [all])' aptget install apt+ -s +Inst apt+ (0.8.8 localhost [i386]) +Conf apt+ (0.8.8 localhost [i386])' aptget install apt+ -s testequal 'Reading package lists... Building dependency tree... The following NEW packages will be installed: apt+ 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. -Inst apt+ (0.8.8 localhost [all]) -Conf apt+ (0.8.8 localhost [all])' aptget install apt++ -s +Inst apt+ (0.8.8 localhost [i386]) +Conf apt+ (0.8.8 localhost [i386])' aptget install apt++ -s testequal 'Reading package lists... Building dependency tree... The following NEW packages will be installed: apt+ 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. -Inst apt+ (0.8.8 localhost [all]) -Conf apt+ (0.8.8 localhost [all])' aptget purge apt++ -s +Inst apt+ (0.8.8 localhost [i386]) +Conf apt+ (0.8.8 localhost [i386])' aptget purge apt++ -s diff --git a/test/integration/test-bug-595691-empty-and-broken-archive-files b/test/integration/test-bug-595691-empty-and-broken-archive-files index 2179ba03b..11dee0628 100755 --- a/test/integration/test-bug-595691-empty-and-broken-archive-files +++ b/test/integration/test-bug-595691-empty-and-broken-archive-files @@ -54,12 +54,14 @@ setupcompressor() { gzip) COMPRESS="gz";; bzip2) COMPRESS="bz2";; lzma) COMPRESS="lzma";; + xz) COMPRESS="xz";; esac echo "Acquire::CompressionTypes::Order { \"${COMPRESS}\"; }; Dir::Bin::uncompressed \"/does/not/exist\"; Dir::Bin::gzip \"/does/not/exist\"; Dir::Bin::bzip2 \"/does/not/exist\"; -Dir::Bin::lzma \"/does/not/exist\";" > rootdir/etc/apt/apt.conf.d/00compressor +Dir::Bin::lzma \"/does/not/exist\"; +Dir::Bin::xz \"/does/not/exist\";" > rootdir/etc/apt/apt.conf.d/00compressor if [ -e "/bin/${COMPRESSOR}" ]; then echo "Dir::Bin::${COMPRESSOR} \"/bin/${COMPRESSOR}\";" >> rootdir/etc/apt/apt.conf.d/00compressor elif [ -e "/usr/bin/${COMPRESSOR}" ]; then @@ -134,9 +136,9 @@ W: Failed to fetch ${COMPRESSOR}:$(readlink -f rootdir/var/lib/apt/lists/partial E: Some index files failed to download. They have been ignored, or old ones used instead." "empty file Packages.$COMPRESS over http" } -for COMPRESSOR in 'gzip' 'bzip2' 'lzma'; do testoverfile $COMPRESSOR; done +for COMPRESSOR in 'gzip' 'bzip2' 'lzma' 'xz'; do testoverfile $COMPRESSOR; done # do the same again with http instead of file changetowebserver -for COMPRESSOR in 'gzip' 'bzip2' 'lzma'; do testoverhttp $COMPRESSOR; done +for COMPRESSOR in 'gzip' 'bzip2' 'lzma' 'xz'; do testoverhttp $COMPRESSOR; done diff --git a/test/integration/test-bug-612099-multiarch-conflicts b/test/integration/test-bug-612099-multiarch-conflicts index caac75db4..6d09a4fa1 100755 --- a/test/integration/test-bug-612099-multiarch-conflicts +++ b/test/integration/test-bug-612099-multiarch-conflicts @@ -59,29 +59,27 @@ Inst foobar:amd64 (1.0 stable [amd64]) Conf libc6:amd64 (1.0 stable [amd64]) Conf foobar:amd64 (1.0 stable [amd64])' aptget install foobar:amd64 -st stable -# FIXME: libc6:i386 is installed, we are switching to libc6:all testequal 'Reading package lists... Building dependency tree... Reading state information... -The following extra packages will be installed: - libc6 The following NEW packages will be installed: - foobar libc6 -0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. -Inst libc6 (2.0 testing, testing [all]) + foobar +The following packages will be upgraded: + libc6 +1 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst libc6 [1.0] (2.0 testing [i386]) Inst foobar (1.0 stable [i386]) -Conf libc6 (2.0 testing, testing [all]) +Conf libc6 (2.0 testing [i386]) Conf foobar (1.0 stable [i386])' aptget install foobar/stable libc6 -st testing -# FIXME: libc6:i386 is installed, we are switching to libc6:all testequal 'Reading package lists... Building dependency tree... Reading state information... -The following NEW packages will be installed: +The following packages will be upgraded: libc6 -0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. -Inst libc6 (2.0 testing, testing [all]) -Conf libc6 (2.0 testing, testing [all])' aptget upgrade -t testing -s +1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. +Inst libc6 [1.0] (2.0 testing [i386]) +Conf libc6 (2.0 testing [i386])' aptget upgrade -t testing -s aptget upgrade -y -qq 2>&1 > /dev/null testdpkginstalled libc6 @@ -91,31 +89,34 @@ Reading state information... The following NEW packages will be installed: foobar 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. -Inst foobar (1.0 stable [i386]) [] +Inst foobar (1.0 stable [i386]) Conf foobar (1.0 stable [i386])' aptget install foobar/stable -st testing testequal 'Reading package lists... Building dependency tree... Reading state information... +The following extra packages will be installed: + libc6:amd64 +The following packages will be REMOVED: + libc6 The following NEW packages will be installed: - foobar:amd64 -0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. + foobar:amd64 libc6:amd64 +0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded. +Remv libc6 [2.0] +Inst libc6:amd64 (1.0 stable [amd64]) Inst foobar:amd64 (1.0 stable [amd64]) +Conf libc6:amd64 (1.0 stable [amd64]) Conf foobar:amd64 (1.0 stable [amd64])' aptget install foobar:amd64/stable -st testing -# FIXME: the display is a strange (its a downgrade), but the handling itself correct testequal "Reading package lists... Building dependency tree... Reading state information... Selected version '1.0' (stable [i386]) for 'libc6' -The following packages will be REMOVED: +The following packages will be DOWNGRADED: libc6 -The following NEW packages will be installed: - libc6 -0 upgraded, 1 newly installed, 2 to remove and 0 not upgraded. -Remv libc6 [2.0] -Inst libc6 (1.0 stable [i386]) +0 upgraded, 0 newly installed, 1 downgraded, 0 to remove and 0 not upgraded. +Inst libc6 [2.0] (1.0 stable [i386]) Conf libc6 (1.0 stable [i386])" aptget install libc6/stable -s -q=0 @@ -164,30 +165,25 @@ Conf libc6-same:amd64 (1.0 stable [amd64])' aptget install libc6-same:amd64 -s - # FIXME: We should test installing libc6-same:amd64 here, but dpkg doesn't allow it currently -# FIXME: upgrade any to all as above testequal 'Reading package lists... Building dependency tree... Reading state information... -The following NEW packages will be installed: +The following packages will be upgraded: libc6-same -0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. -Inst libc6-same (2.0 testing, testing [all]) -Conf libc6-same (2.0 testing, testing [all])' aptget upgrade -t testing -s +1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. +Inst libc6-same [1.0] (2.0 testing [i386]) +Conf libc6-same (2.0 testing [i386])' aptget upgrade -t testing -s aptget upgrade -y -qq 2>&1 > /dev/null testdpkginstalled libc6-same -# FIXME: the display is a strange (its a downgrade), but the handling itself correct testequal "Reading package lists... Building dependency tree... Reading state information... Selected version '1.0' (stable [i386]) for 'libc6-same' -The following packages will be REMOVED: +The following packages will be DOWNGRADED: libc6-same -The following NEW packages will be installed: - libc6-same -0 upgraded, 1 newly installed, 2 to remove and 0 not upgraded. -Remv libc6-same [2.0] -Inst libc6-same (1.0 stable [i386]) +0 upgraded, 0 newly installed, 1 downgraded, 0 to remove and 0 not upgraded. +Inst libc6-same [2.0] (1.0 stable [i386]) Conf libc6-same (1.0 stable [i386])" aptget install libc6-same/stable -s -q=0 testequal 'Reading package lists... @@ -196,14 +192,21 @@ Reading state information... The following NEW packages will be installed: foobar-same 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. -Inst foobar-same (1.0 stable [i386]) [] +Inst foobar-same (1.0 stable [i386]) Conf foobar-same (1.0 stable [i386])' aptget install foobar-same/stable -st testing testequal 'Reading package lists... Building dependency tree... Reading state information... +The following extra packages will be installed: + libc6-same:amd64 +The following packages will be REMOVED: + libc6-same The following NEW packages will be installed: - foobar-same:amd64 -0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. + foobar-same:amd64 libc6-same:amd64 +0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded. +Remv libc6-same [2.0] +Inst libc6-same:amd64 (1.0 stable [amd64]) Inst foobar-same:amd64 (1.0 stable [amd64]) +Conf libc6-same:amd64 (1.0 stable [amd64]) Conf foobar-same:amd64 (1.0 stable [amd64])' aptget install foobar-same:amd64/stable -st testing diff --git a/test/integration/test-release-candidate-switching b/test/integration/test-release-candidate-switching index b6dbe99db..b79828a9e 100755 --- a/test/integration/test-release-candidate-switching +++ b/test/integration/test-release-candidate-switching @@ -95,7 +95,7 @@ E: Trivial Only specified but this is not a trivial operation." aptget install a testequal "Reading package lists... Building dependency tree... Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok' -Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok' +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-common' because of 'amarok' Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok' The following extra packages will be installed: amarok-common (2.3.2-2+exp) @@ -117,7 +117,7 @@ E: Trivial Only specified but this is not a trivial operation." aptget install a testequal "Reading package lists... Building dependency tree... Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-null' -Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-null' +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-common' because of 'amarok-null' Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-null' The following extra packages will be installed: amarok-common (2.3.2-2+exp) @@ -140,7 +140,7 @@ E: Trivial Only specified but this is not a trivial operation." aptget install a testequal "Reading package lists... Building dependency tree... Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok' -Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok' +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-common' because of 'amarok' Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok' Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-null' The following extra packages will be installed: @@ -170,7 +170,7 @@ Building dependency tree... Selected version '2.3.2-2+exp' (experimental2 [i386]) for 'amarok-less' Selected version '5:4.6.0+exp' (experimental [i386]) for 'phonon-backend-xine' because of 'amarok-less' Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-higher' -Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-higher' +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-common' because of 'amarok-higher' Selected version '5:4.6.0+exp' (experimental [i386]) for 'phonon-backend-xine' because of 'amarok-higher' Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-higher' The following extra packages will be installed: @@ -195,7 +195,7 @@ E: Trivial Only specified but this is not a trivial operation." aptget install a testequal "Reading package lists... Building dependency tree... Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-null2' -Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-null2' +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-common' because of 'amarok-null2' Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-null2' The following extra packages will be installed: amarok-common (2.3.2-2+exp) @@ -218,7 +218,7 @@ E: Trivial Only specified but this is not a trivial operation." aptget install a testequal "Reading package lists... Building dependency tree... Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-xine' -Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-xine' +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-common' because of 'amarok-xine' Selected version '5:4.6.0+exp' (experimental [i386]) for 'phonon-backend-xine' because of 'amarok-xine' Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-xine' The following extra packages will be installed: @@ -242,7 +242,7 @@ E: Trivial Only specified but this is not a trivial operation." aptget install a testequal "Reading package lists... Building dependency tree... Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-xine2' -Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-xine2' +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-common' because of 'amarok-xine2' Selected version '5:4.20.0+exp' (experimental [i386]) for 'phonon-backend-null' because of 'amarok-xine2' Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-xine2' The following extra packages will be installed: @@ -266,9 +266,9 @@ E: Trivial Only specified but this is not a trivial operation." aptget install a testequal "Reading package lists... Building dependency tree... Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-xine3' -Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-xine3' +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-common' because of 'amarok-xine3' Selected version '5:4.6.0+exp' (experimental [i386]) for 'phonon-backend-xine3' because of 'amarok-xine3' -Selected version '2.0' (experimental [all]) for 'intermediatepkg' because of 'phonon-backend-xine3' +Selected version '2.0' (experimental [i386]) for 'intermediatepkg' because of 'phonon-backend-xine3' Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-xine3' The following extra packages will be installed: amarok-common (2.3.2-2+exp) @@ -293,7 +293,7 @@ E: Trivial Only specified but this is not a trivial operation." aptget install a testequal "Reading package lists... Building dependency tree... Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-xine4' -Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-xine4' +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-common' because of 'amarok-xine4' Selected version '5:4.20.0+exp' (experimental [i386]) for 'phonon-backend-null' because of 'amarok-xine4' Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-xine4' The following extra packages will be installed: @@ -317,7 +317,7 @@ E: Trivial Only specified but this is not a trivial operation." aptget install a testequal "Reading package lists... Building dependency tree... Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-broken' -Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-broken' +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-common' because of 'amarok-broken' Selected version '5:4.20.0+exp' (experimental [i386]) for 'phonon-backend-null' because of 'amarok-broken' Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-broken' The following extra packages will be installed: @@ -341,7 +341,7 @@ E: Trivial Only specified but this is not a trivial operation." aptget install a testequal "Reading package lists... Building dependency tree... Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-recommends' -Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-recommends' +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-common' because of 'amarok-recommends' Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-recommends' The following extra packages will be installed: amarok-common (2.3.2-2+exp) @@ -364,7 +364,7 @@ E: Trivial Only specified but this is not a trivial operation." aptget install a testequal "Reading package lists... Building dependency tree... Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-recommends' -Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-recommends' +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-common' because of 'amarok-recommends' The following extra packages will be installed: amarok-common (2.3.2-2+exp) Recommended packages: @@ -385,7 +385,7 @@ E: Trivial Only specified but this is not a trivial operation." aptget install a testequal "Reading package lists... Building dependency tree... Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-recommends2' -Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-recommends2' +Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-common' because of 'amarok-recommends2' The following extra packages will be installed: amarok-common (2.3.2-2+exp) libc6 (2.11.2-7+sid) @@ -406,7 +406,7 @@ E: Trivial Only specified but this is not a trivial operation." aptget install a # if one depends doesn't work, we don't need to look deeper… testequal "Reading package lists... Building dependency tree... -Selected version '1.0' (experimental [all]) for 'uninstallablepkg' +Selected version '1.0' (experimental [i386]) for 'uninstallablepkg' Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created |