diff options
-rw-r--r-- | apt-pkg/algorithms.cc | 183 | ||||
-rw-r--r-- | apt-pkg/algorithms.h | 14 | ||||
-rw-r--r-- | apt-pkg/deb/deblistparser.cc | 8 | ||||
-rw-r--r-- | apt-pkg/depcache.cc | 56 | ||||
-rw-r--r-- | apt-pkg/depcache.h | 6 | ||||
-rw-r--r-- | apt-private/private-install.cc | 12 | ||||
-rw-r--r-- | debian/NEWS | 7 | ||||
-rw-r--r-- | debian/apt.auto-removal.sh | 69 | ||||
-rw-r--r-- | doc/examples/configure-index | 7 | ||||
-rw-r--r-- | methods/basehttp.h | 2 | ||||
-rw-r--r-- | methods/connect.cc | 30 | ||||
-rw-r--r-- | po/el.po | 691 | ||||
-rw-r--r-- | test/integration/framework | 2 | ||||
-rwxr-xr-x | test/integration/test-kernel-helper-autoremove | 15 |
14 files changed, 625 insertions, 477 deletions
diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc index cd09a6944..a8e198054 100644 --- a/apt-pkg/algorithms.cc +++ b/apt-pkg/algorithms.cc @@ -16,20 +16,32 @@ #include <config.h> #include <apt-pkg/algorithms.h> +#include <apt-pkg/cachefilter.h> #include <apt-pkg/configuration.h> #include <apt-pkg/depcache.h> #include <apt-pkg/dpkgpm.h> #include <apt-pkg/edsp.h> #include <apt-pkg/error.h> +#include <apt-pkg/macros.h> #include <apt-pkg/packagemanager.h> #include <apt-pkg/pkgcache.h> +#include <apt-pkg/string_view.h> +#include <apt-pkg/strutl.h> +#include <apt-pkg/version.h> + #include <apt-pkg/prettyprinters.h> #include <cstdlib> #include <iostream> +#include <map> +#include <regex> +#include <set> +#include <sstream> #include <string> #include <utility> +#include <vector> #include <string.h> +#include <sys/utsname.h> #include <apti18n.h> /*}}}*/ @@ -1442,3 +1454,174 @@ void pkgPrioSortList(pkgCache &Cache,pkgCache::Version **List) std::sort(List,List+Count,PrioComp(Cache)); } /*}}}*/ + +namespace APT +{ + +namespace KernelAutoRemoveHelper +{ + +// \brief Returns the uname from a kernel package name, or "" for non-kernel packages. +std::string getUname(std::string const &packageName) +{ + + static const constexpr char *const prefixes[] = { + "linux-image-", + "kfreebsd-image-", + "gnumach-image-", + }; + + for (auto prefix : prefixes) + { + if (likely(not APT::String::Startswith(packageName, prefix))) + continue; + if (unlikely(APT::String::Endswith(packageName, "-dbgsym"))) + continue; + if (unlikely(APT::String::Endswith(packageName, "-dbg"))) + continue; + + auto aUname = packageName.substr(strlen(prefix)); + + // aUname must start with [0-9]+\. + if (aUname.length() < 2) + continue; + if (strchr("0123456789", aUname[0]) == nullptr) + continue; + auto dot = aUname.find_first_not_of("0123456789"); + if (dot == aUname.npos || aUname[dot] != '.') + continue; + + return aUname; + } + + return ""; +} +std::string GetProtectedKernelsRegex(pkgCache *cache, bool ReturnRemove) +{ + if (_config->FindB("APT::Protect-Kernels", true) == false) + return ""; + + struct CompareKernel + { + pkgCache *cache; + bool operator()(const std::string &a, const std::string &b) const + { + return cache->VS->CmpVersion(a, b) < 0; + } + }; + bool Debug = _config->FindB("Debug::pkgAutoRemove", false); + // kernel version -> list of unames + std::map<std::string, std::vector<std::string>, CompareKernel> version2unames(CompareKernel{cache}); + // needs to be initialized to 0s, might not be set up. + utsname uts{}; + std::string bootedVersion; + std::string lastInstalledVersion; + + std::string lastInstalledUname = _config->Find("APT::LastInstalledKernel"); + + // Get currently booted version, but only when not on reproducible build. + if (getenv("SOURCE_DATE_EPOCH") == 0) + { + if (uname(&uts) != 0) + abort(); + } + + auto VirtualKernelPkg = cache->FindPkg("$kernel", "any"); + if (VirtualKernelPkg.end()) + return ""; + + for (pkgCache::PrvIterator Prv = VirtualKernelPkg.ProvidesList(); Prv.end() == false; ++Prv) + { + auto Pkg = Prv.OwnerPkg(); + if (likely(Pkg->CurrentVer == 0)) + continue; + + auto pkgUname = APT::KernelAutoRemoveHelper::getUname(Pkg.Name()); + auto pkgVersion = Pkg.CurrentVer().VerStr(); + + if (pkgUname.empty()) + continue; + + if (Debug) + std::clog << "Found kernel " << pkgUname << "(" << pkgVersion << ")" << std::endl; + + version2unames[pkgVersion].push_back(pkgUname); + + if (pkgUname == uts.release) + bootedVersion = pkgVersion; + if (pkgUname == lastInstalledUname) + lastInstalledVersion = pkgVersion; + } + + if (version2unames.size() == 0) + return ""; + + auto latest = version2unames.rbegin(); + auto previous = latest; + ++previous; + + std::set<std::string> keep; + + if (not bootedVersion.empty()) + { + if (Debug || false) + std::clog << "Keeping booted kernel " << bootedVersion << std::endl; + keep.insert(bootedVersion); + } + if (not lastInstalledVersion.empty()) + { + if (Debug || false) + std::clog << "Keeping installed kernel " << lastInstalledVersion << std::endl; + keep.insert(lastInstalledVersion); + } + if (latest != version2unames.rend()) + { + if (Debug || false) + std::clog << "Keeping latest kernel " << latest->first << std::endl; + keep.insert(latest->first); + } + if (keep.size() < 3 && previous != version2unames.rend()) + { + if (Debug) + std::clog << "Keeping previous kernel " << previous->first << std::endl; + keep.insert(previous->first); + } + + std::regex special("([\\.\\+])"); + std::ostringstream ss; + for (auto &pattern : _config->FindVector("APT::VersionedKernelPackages")) + { + // Legacy compatibility: Always protected the booted uname and last installed uname + if (not lastInstalledUname.empty()) + ss << "|^" << pattern << "-" << std::regex_replace(lastInstalledUname, special, "\\$1") << "$"; + if (*uts.release) + ss << "|^" << pattern << "-" << std::regex_replace(uts.release, special, "\\$1") << "$"; + for (auto const &kernel : version2unames) + { + if (ReturnRemove ? keep.find(kernel.first) == keep.end() : keep.find(kernel.first) != keep.end()) + { + for (auto const &uname : kernel.second) + ss << "|^" << pattern << "-" << std::regex_replace(uname, special, "\\$1") << "$"; + } + } + } + + auto re = ss.str().substr(1); + if (Debug) + std::clog << "Kernel protection regex: " << re << "\n"; + + return re; +} + +std::unique_ptr<APT::CacheFilter::Matcher> GetProtectedKernelsFilter(pkgCache *cache, bool returnRemove) +{ + auto regex = GetProtectedKernelsRegex(cache, returnRemove); + + if (regex.empty()) + return std::make_unique<APT::CacheFilter::FalseMatcher>(); + + return std::make_unique<APT::CacheFilter::PackageNameMatchesRegEx>(regex); +} + +} // namespace KernelAutoRemoveHelper +} // namespace APT diff --git a/apt-pkg/algorithms.h b/apt-pkg/algorithms.h index fc578a4ca..12a77d4b8 100644 --- a/apt-pkg/algorithms.h +++ b/apt-pkg/algorithms.h @@ -29,11 +29,13 @@ #ifndef PKGLIB_ALGORITHMS_H #define PKGLIB_ALGORITHMS_H +#include <apt-pkg/cachefilter.h> #include <apt-pkg/depcache.h> #include <apt-pkg/packagemanager.h> #include <apt-pkg/pkgcache.h> #include <iostream> +#include <memory> #include <string> #include <apt-pkg/macros.h> @@ -146,5 +148,17 @@ APT_PUBLIC bool pkgFixBroken(pkgDepCache &Cache); APT_PUBLIC void pkgPrioSortList(pkgCache &Cache,pkgCache::Version **List); +namespace APT +{ +namespace KernelAutoRemoveHelper +{ +// Public for linking to apt-private, but no A{P,B}I guarantee. +APT_PUBLIC std::unique_ptr<APT::CacheFilter::Matcher> GetProtectedKernelsFilter(pkgCache *cache, bool returnRemove = false); +std::string GetProtectedKernelsRegex(pkgCache *cache, bool ReturnRemove = false); +std::string getUname(std::string const &packageName); + +} // namespace KernelAutoRemoveHelper + +} // namespace APT #endif diff --git a/apt-pkg/deb/deblistparser.cc b/apt-pkg/deb/deblistparser.cc index 240946529..95f6f6fc8 100644 --- a/apt-pkg/deb/deblistparser.cc +++ b/apt-pkg/deb/deblistparser.cc @@ -11,6 +11,7 @@ // Include Files /*{{{*/ #include <config.h> +#include <apt-pkg/algorithms.h> #include <apt-pkg/aptconfiguration.h> #include <apt-pkg/cachefilter.h> #include <apt-pkg/configuration.h> @@ -246,7 +247,12 @@ bool debListParser::NewVersion(pkgCache::VerIterator &Ver) if (ParseProvides(Ver) == false) return false; - + if (not APT::KernelAutoRemoveHelper::getUname(Ver.ParentPkg().Name()).empty()) + { + if (not NewProvides(Ver, "$kernel", "any", Ver.VerStr(), pkgCache::Flag::MultiArchImplicit)) + return false; + } + return true; } /*}}}*/ diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc index c7ef7a400..f2b3dbcdc 100644 --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@ -9,6 +9,7 @@ // Include Files /*{{{*/ #include <config.h> +#include <apt-pkg/algorithms.h> #include <apt-pkg/aptconfiguration.h> #include <apt-pkg/cachefile.h> #include <apt-pkg/cacheset.h> @@ -43,6 +44,23 @@ using std::string; +// helper for kernel autoremoval /*{{{*/ + +/** \brief Returns \b true for packages matching a regular + * expression in APT::NeverAutoRemove. + */ +class APT_PUBLIC DefaultRootSetFunc2 : public pkgDepCache::DefaultRootSetFunc +{ + std::unique_ptr<APT::CacheFilter::Matcher> Kernels; + + public: + DefaultRootSetFunc2(pkgCache *cache) : Kernels(APT::KernelAutoRemoveHelper::GetProtectedKernelsFilter(cache)){}; + virtual ~DefaultRootSetFunc2(){}; + + bool InRootSet(const pkgCache::PkgIterator &pkg) APT_OVERRIDE { return pkg.end() == false && ((*Kernels)(pkg) || DefaultRootSetFunc::InRootSet(pkg)); }; +}; + + /*}}}*/ // helper for Install-Recommends-Sections and Never-MarkAuto-Sections /*{{{*/ static bool ConfigValueInSubTree(const char* SubTree, const char *needle) @@ -95,10 +113,14 @@ pkgDepCache::ActionGroup::~ActionGroup() // DepCache::pkgDepCache - Constructors /*{{{*/ // --------------------------------------------------------------------- /* */ -pkgDepCache::pkgDepCache(pkgCache * const pCache,Policy * const Plcy) : - group_level(0), Cache(pCache), PkgState(0), DepState(0), - iUsrSize(0), iDownloadSize(0), iInstCount(0), iDelCount(0), iKeepCount(0), - iBrokenCount(0), iPolicyBrokenCount(0), iBadCount(0), d(NULL) + +struct pkgDepCache::Private +{ + std::unique_ptr<InRootSetFunc> inRootSetFunc; +}; +pkgDepCache::pkgDepCache(pkgCache *const pCache, Policy *const Plcy) : group_level(0), Cache(pCache), PkgState(0), DepState(0), + iUsrSize(0), iDownloadSize(0), iInstCount(0), iDelCount(0), iKeepCount(0), + iBrokenCount(0), iPolicyBrokenCount(0), iBadCount(0), d(new Private) { DebugMarker = _config->FindB("Debug::pkgDepCache::Marker", false); DebugAutoInstall = _config->FindB("Debug::pkgDepCache::AutoInstall", false); @@ -116,6 +138,7 @@ pkgDepCache::~pkgDepCache() delete [] PkgState; delete [] DepState; delete delLocalPolicy; + delete d; } /*}}}*/ bool pkgDepCache::CheckConsistency(char const *const msgtag) /*{{{*/ @@ -2148,14 +2171,21 @@ APT_PURE signed short pkgDepCache::Policy::GetPriority(pkgCache::PkgFileIterator /*}}}*/ pkgDepCache::InRootSetFunc *pkgDepCache::GetRootSetFunc() /*{{{*/ { - DefaultRootSetFunc *f = new DefaultRootSetFunc; - if(f->wasConstructedSuccessfully()) - return f; - else - { + DefaultRootSetFunc *f = new DefaultRootSetFunc2(&GetCache()); + if (f->wasConstructedSuccessfully()) + return f; + else + { delete f; return NULL; - } + } +} + +pkgDepCache::InRootSetFunc *pkgDepCache::GetCachedRootSetFunc() +{ + if (d->inRootSetFunc == nullptr) + d->inRootSetFunc.reset(GetRootSetFunc()); + return d->inRootSetFunc.get(); } /*}}}*/ bool pkgDepCache::MarkFollowsRecommends() @@ -2369,9 +2399,9 @@ bool pkgDepCache::MarkAndSweep(InRootSetFunc &rootFunc) } bool pkgDepCache::MarkAndSweep() { - std::unique_ptr<InRootSetFunc> f(GetRootSetFunc()); - if(f.get() != NULL) - return MarkAndSweep(*f.get()); + InRootSetFunc *f(GetCachedRootSetFunc()); + if (f != NULL) + return MarkAndSweep(*f); else return false; } diff --git a/apt-pkg/depcache.h b/apt-pkg/depcache.h index 78f88ba2f..9a6019092 100644 --- a/apt-pkg/depcache.h +++ b/apt-pkg/depcache.h @@ -380,6 +380,9 @@ class APT_PUBLIC pkgDepCache : protected pkgCache::Namespace */ virtual InRootSetFunc *GetRootSetFunc(); + /** This should return const really - do not delete. */ + InRootSetFunc *GetCachedRootSetFunc() APT_HIDDEN; + /** \return \b true if the garbage collector should follow recommendations. */ virtual bool MarkFollowsRecommends(); @@ -516,7 +519,8 @@ class APT_PUBLIC pkgDepCache : protected pkgCache::Namespace bool const rPurge, unsigned long const Depth, bool const FromUser); private: - void * const d; + struct Private; + Private *const d; APT_HIDDEN bool MarkInstall_StateChange(PkgIterator const &Pkg, bool AutoInst, bool FromUser); APT_HIDDEN bool MarkInstall_DiscardInstall(PkgIterator const &Pkg); diff --git a/apt-private/private-install.cc b/apt-private/private-install.cc index af6697d7f..b110cbdc3 100644 --- a/apt-private/private-install.cc +++ b/apt-private/private-install.cc @@ -406,8 +406,15 @@ bool DoAutomaticRemove(CacheFile &Cache) { bool Debug = _config->FindB("Debug::pkgAutoRemove",false); bool doAutoRemove = _config->FindB("APT::Get::AutomaticRemove", false); + bool doAutoRemoveKernels = _config->FindB("APT::Get::AutomaticRemove::Kernels", false); bool hideAutoRemove = _config->FindB("APT::Get::HideAutoRemove"); + std::unique_ptr<APT::CacheFilter::Matcher> kernelAutoremovalMatcher; + if (doAutoRemoveKernels && !doAutoRemove) + { + kernelAutoremovalMatcher = APT::KernelAutoRemoveHelper::GetProtectedKernelsFilter(Cache, true); + } + pkgDepCache::ActionGroup group(*Cache); if(Debug) std::cout << "DoAutomaticRemove()" << std::endl; @@ -436,7 +443,7 @@ bool DoAutomaticRemove(CacheFile &Cache) if(Debug) std::cout << "We could delete " << APT::PrettyPkg(Cache, Pkg) << std::endl; - if (doAutoRemove) + if (doAutoRemove || (kernelAutoremovalMatcher != nullptr && (*kernelAutoremovalMatcher)(Pkg))) { if(Pkg.CurrentVer() != 0 && Pkg->CurrentState != pkgCache::State::ConfigFiles) @@ -692,6 +699,9 @@ bool DoCacheManipulationFromCommandLine(CommandLine &CmdL, std::vector<PseudoPkg OpTextProgress Progress(*_config); bool const distUpgradeMode = strcmp(CmdL.FileList[0], "dist-upgrade") == 0 || strcmp(CmdL.FileList[0], "full-upgrade") == 0; + if (distUpgradeMode) + _config->CndSet("APT::Get::AutomaticRemove::Kernels", "true"); + bool resolver_fail = false; if (distUpgradeMode == true || UpgradeMode != APT::Upgrade::ALLOW_EVERYTHING) resolver_fail = APT::Upgrade::Upgrade(Cache, UpgradeMode, &Progress); diff --git a/debian/NEWS b/debian/NEWS index 13fc64182..9d9c963c2 100644 --- a/debian/NEWS +++ b/debian/NEWS @@ -1,3 +1,10 @@ +apt (2.1.16) UNRELEASED; urgency=medium + + Automatically remove unused kernels on dist-upgrade. To revert to previous + behavior, set APT::Get::AutomaticRemove::Kernels to false. + + -- Julian Andres Klode <jak@debian.org> Mon, 04 Jan 2021 10:47:14 +0100 + apt (1.9.11) experimental; urgency=medium apt(8) now waits for the lock indefinitely if connected to a tty, or diff --git a/debian/apt.auto-removal.sh b/debian/apt.auto-removal.sh index 2c32b0c9d..eef550a53 100644 --- a/debian/apt.auto-removal.sh +++ b/debian/apt.auto-removal.sh @@ -1,82 +1,15 @@ #!/bin/sh set -e -# Mark as not-for-autoremoval those kernel packages that are: -# - the currently booted version -# - the kernel version we've been called for -# - the latest kernel version (as determined by debian version number) -# - the second-latest kernel version -# -# In the common case this results in two kernels saved (booted into the -# second-latest kernel, we install the latest kernel in an upgrade), but -# can save up to four. Kernel refers here to a distinct release, which can -# potentially be installed in multiple flavours counting as one kernel. eval $(apt-config shell APT_CONF_D Dir::Etc::parts/d) test -n "${APT_CONF_D}" || APT_CONF_D="/etc/apt/apt.conf.d" config_file="${APT_CONF_D}/01autoremove-kernels" -eval $(apt-config shell DPKG Dir::bin::dpkg/f) -test -n "$DPKG" || DPKG="/usr/bin/dpkg" - -list="$("${DPKG}" -l | awk '/^[ih][^nc][ ]+(linux|kfreebsd|gnumach)-image-[0-9]+\./ && $2 !~ /-dbg(:.*)?$/ && $2 !~ /-dbgsym(:.*)?$/ { print $2,$3; }' \ - | sed -e 's#^\(linux\|kfreebsd\|gnumach\)-image-##' -e 's#:[^:]\+ # #')" -debverlist="$(echo "$list" | cut -d' ' -f 2 | sort --unique --reverse --version-sort)" - -if [ -n "$1" ]; then - installed_version="$(echo "$list" | awk "\$1 == \"$1\" { print \$2;exit; }")" -fi -unamer="$(uname -r | tr '[A-Z]' '[a-z]')" -if [ -n "$unamer" ]; then - running_version="$(echo "$list" | awk "\$1 == \"$unamer\" { print \$2;exit; }")" -fi -# ignore the currently running version if attempting a reproducible build -if [ -n "${SOURCE_DATE_EPOCH}" ]; then - unamer="" - running_version="" -fi -latest_version="$(echo "$debverlist" | sed -n 1p)" -previous_version="$(echo "$debverlist" | sed -n 2p)" - -debkernels="$(echo "$latest_version -$installed_version -$running_version -$previous_version" | sort -u | sed -e '/^$/ d')" -kernels="$( (echo "$1 -$unamer"; for deb in $debkernels; do echo "$list" | awk "\$2 == \"$deb\" { print \$1; }"; done; ) \ - | sed -e 's#\([\.\+]\)#\\\1#g' -e '/^$/ d' | sort -u)" - generateconfig() { cat <<EOF // DO NOT EDIT! File autogenerated by $0 -APT::NeverAutoRemove -{ -EOF - for package in $(apt-config dump --no-empty --format '%v%n' 'APT::VersionedKernelPackages'); do - for kernel in $kernels; do - echo " \"^${package}-${kernel}$\";" - done - done - echo '};' - if [ "${APT_AUTO_REMOVAL_KERNELS_DEBUG:-true}" = 'true' ]; then - cat <<EOF -/* Debug information: -# dpkg list: -$(dpkg -l | grep '\(linux\|kfreebsd\|gnumach\)-image-') -# list of installed kernel packages: -$list -# list of different kernel versions: -$debverlist -# Installing kernel: $installed_version ($1) -# Running kernel: ${running_version:-ignored} (${unamer:-ignored}) -# Last kernel: $latest_version -# Previous kernel: $previous_version -# Kernel versions list to keep: -$debkernels -# Kernel packages (version part) to protect: -$kernels -*/ +APT::LastInstalledKernel "$1"; EOF - fi } generateconfig "$@" > "${config_file}.dpkg-new" mv -f "${config_file}.dpkg-new" "$config_file" diff --git a/doc/examples/configure-index b/doc/examples/configure-index index b73166082..15b020198 100644 --- a/doc/examples/configure-index +++ b/doc/examples/configure-index @@ -54,6 +54,9 @@ APT Build-Profiles "<STRING_OR_LIST>"; NeverAutoRemove "<LIST>"; // list of package name regexes + LastInstalledKernel "<STRING>"; // last installed kernel version + VersionedKernelPackages "<LIST>"; // regular expressions to be protected from autoremoval (kernel uname will be appended) + Protect-Kernels "<BOOL>"; // whether to protect installed kernels against autoremoval (default: true) // Options for apt-get Get @@ -77,7 +80,9 @@ APT Remove "<BOOL>"; AllowUnauthenticated "<BOOL>"; // skip security - AutomaticRemove "<BOOL>"; + AutomaticRemove "<BOOL>" { + "Kernels" "<BOOL>"; // Allow removing kernels even if not removing other packages (true for dist-upgrade) + }; HideAutoRemove "<STRING_OR_BOOL>"; // yes, no, small Simulate "<BOOL>"; diff --git a/methods/basehttp.h b/methods/basehttp.h index 4a83f319c..62c9963ea 100644 --- a/methods/basehttp.h +++ b/methods/basehttp.h @@ -94,7 +94,7 @@ struct ServerState /** \brief Get the headers before the data */ RunHeadersResult RunHeaders(RequestState &Req, const std::string &Uri); - bool Comp(URI Other) const {return Other.Host == ServerName.Host && Other.Port == ServerName.Port;}; + bool Comp(URI Other) const {return Other.Access == ServerName.Access && Other.Host == ServerName.Host && Other.Port == ServerName.Port;}; virtual void Reset(); virtual bool WriteResponse(std::string const &Data) = 0; diff --git a/methods/connect.cc b/methods/connect.cc index 57dfb6299..d513a4540 100644 --- a/methods/connect.cc +++ b/methods/connect.cc @@ -45,7 +45,7 @@ /*}}}*/ static std::string LastHost; -static int LastPort = 0; +static std::string LastService; static struct addrinfo *LastHostAddr = 0; static struct addrinfo *LastUsed = 0; @@ -349,17 +349,14 @@ static ResultState ConnectToHostname(std::string const &Host, int const Port, { if (ConnectionAllowed(Service, Host) == false) return ResultState::FATAL_ERROR; - // Convert the port name/number - char ServStr[300]; - if (Port != 0) - snprintf(ServStr,sizeof(ServStr),"%i", Port); - else - snprintf(ServStr,sizeof(ServStr),"%s", Service); + + // Used by getaddrinfo(); prefer port if given, else fallback to service + std::string ServiceNameOrPort = Port != 0 ? std::to_string(Port) : Service; /* We used a cached address record.. Yes this is against the spec but the way we have setup our rotating dns suggests that this is more sensible */ - if (LastHost != Host || LastPort != Port) + if (LastHost != Host || LastService != ServiceNameOrPort) { Owner->Status(_("Connecting to %s"),Host.c_str()); @@ -405,14 +402,14 @@ static ResultState ConnectToHostname(std::string const &Host, int const Port, while (1) { int Res; - if ((Res = getaddrinfo(Host.c_str(),ServStr,&Hints,&LastHostAddr)) != 0 || + if ((Res = getaddrinfo(Host.c_str(), ServiceNameOrPort.c_str(), &Hints, &LastHostAddr)) != 0 || LastHostAddr == 0) { if (Res == EAI_NONAME || Res == EAI_SERVICE) { if (DefPort != 0) { - snprintf(ServStr, sizeof(ServStr), "%i", DefPort); + ServiceNameOrPort = std::to_string(DefPort); DefPort = 0; continue; } @@ -431,17 +428,17 @@ static ResultState ConnectToHostname(std::string const &Host, int const Port, } if (Res == EAI_SYSTEM) _error->Errno("getaddrinfo", _("System error resolving '%s:%s'"), - Host.c_str(), ServStr); + Host.c_str(), ServiceNameOrPort.c_str()); else _error->Error(_("Something wicked happened resolving '%s:%s' (%i - %s)"), - Host.c_str(), ServStr, Res, gai_strerror(Res)); + Host.c_str(), ServiceNameOrPort.c_str(), Res, gai_strerror(Res)); return ResultState::TRANSIENT_ERROR; } break; } LastHost = Host; - LastPort = Port; + LastService = ServiceNameOrPort; } // When we have an IP rotation stay with the last IP. @@ -469,7 +466,7 @@ static ResultState ConnectToHostname(std::string const &Host, int const Port, return Result; if (_error->PendingError() == true) return ResultState::FATAL_ERROR; - _error->Error(_("Unable to connect to %s:%s:"), Host.c_str(), ServStr); + _error->Error(_("Unable to connect to %s:%s:"), Host.c_str(), ServiceNameOrPort.c_str()); return ResultState::TRANSIENT_ERROR; } /*}}}*/ @@ -486,7 +483,10 @@ ResultState Connect(std::string Host, int Port, const char *Service, if (ConnectionAllowed(Service, Host) == false) return ResultState::FATAL_ERROR; - if(LastHost != Host || LastPort != Port) + // Used by getaddrinfo(); prefer port if given, else fallback to service + std::string ServiceNameOrPort = Port != 0 ? std::to_string(Port) : Service; + + if(LastHost != Host || LastService != ServiceNameOrPort) { SrvRecords.clear(); if (_config->FindB("Acquire::EnableSrvRecords", true) == true) @@ -12,32 +12,37 @@ # Serafeim Zanikolas <serzan@hellug.gr>, 2008. # quad-nrg.net <yodesy@quad-nrg.net>, 2008. # Θανάσης Νάτσης <natsisthanasis@gmail.com>, 2012. +# Vangelis Skarmoutsos <skarmoutsosv@gmail.com>, 2020 msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" "POT-Creation-Date: 2020-08-11 14:34+0200\n" -"PO-Revision-Date: 2008-08-26 18:25+0300\n" -"Last-Translator: Θανάσης Νάτσης <natsisthanasis@gmail.com>\n" +"PO-Revision-Date: 2020-12-30 12:20+0200\n" +"Last-Translator: Vangelis Skarmoutsos <skarmoutsosv@gmail.com>\n" "Language-Team: Greek <debian-l10n-greek@lists.debian.org>\n" "Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.4\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.4.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apt-pkg/acquire-item.cc msgid "" "Updating from such a repository can't be done securely, and is therefore " "disabled by default." msgstr "" +"Η ενημέρωση από ένα τέτοιο αποθετήριο δεν μπορεί να γίνει με ασφάλεια και " +"έτσι είναι απενεργοποιημένη από πριν." #: apt-pkg/acquire-item.cc msgid "" "Data from such a repository can't be authenticated and is therefore " "potentially dangerous to use." msgstr "" +"Τα δεδομένα από ένα τέτοιο αποθετήριο δεν μπορούν να πιστοποιηθούν και άρα " +"είναι δυνητικά επικίνδυνη η χρήση τους." #: apt-pkg/acquire-item.cc msgid "" @@ -46,14 +51,14 @@ msgid "" msgstr "" #: apt-pkg/acquire-item.cc -#, fuzzy, c-format +#, c-format msgid "The repository '%s' is no longer signed." -msgstr "Ο φάκελος %s έχει εκτραπεί" +msgstr "Το αποθετήριο '%s' δεν είναι πλέον υπογραμμένος." #: apt-pkg/acquire-item.cc -#, fuzzy, c-format +#, c-format msgid "The repository '%s' no longer has a Release file." -msgstr "Ο φάκελος %s έχει εκτραπεί" +msgstr "Το αποθετήριο '%s' δεν έχει πια ένα αρχείο Release." #: apt-pkg/acquire-item.cc msgid "" @@ -62,19 +67,19 @@ msgid "" msgstr "" #: apt-pkg/acquire-item.cc -#, fuzzy, c-format +#, c-format msgid "The repository '%s' is not signed." -msgstr "Ο φάκελος %s έχει εκτραπεί" +msgstr "Το αποθετήριο %s δεν είναι υπογραμμένο." #: apt-pkg/acquire-item.cc -#, fuzzy, c-format +#, c-format msgid "The repository '%s' does not have a Release file." -msgstr "Ο φάκελος %s έχει εκτραπεί" +msgstr "Το αποθετήριο '%s' δεν έχει αρχείο Release." #: apt-pkg/acquire-item.cc -#, fuzzy, c-format +#, c-format msgid "The repository '%s' provides only weak security information." -msgstr "Ο φάκελος %s έχει εκτραπεί" +msgstr "Το αποθετήριο '%s' παρέχει μόνο ισχνές πληροφορίες ασφαλείας." #: apt-pkg/acquire-item.cc ftparchive/writer.cc #, c-format @@ -84,7 +89,7 @@ msgstr "Αποτυχία ανάγνωσης του %s" #: apt-pkg/acquire-item.cc ftparchive/cachedb.cc methods/rred.cc #, c-format msgid "Failed to stat %s" -msgstr "Αποτυχία εύρεσης της κατάστασης του %s." +msgstr "Αποτυχία εύρεσης της κατάστασης του %s" #: apt-pkg/acquire-item.cc msgid "Hash Sum mismatch" @@ -104,14 +109,12 @@ msgid "Size mismatch" msgstr "Ανόμοιο μέγεθος" #: apt-pkg/acquire-item.cc -#, fuzzy msgid "Invalid file format" -msgstr "Μη έγκυρη λειτουργία %s" +msgstr "Άκυρη μορφή αρχείου" #: apt-pkg/acquire-item.cc -#, fuzzy msgid "Signature error" -msgstr "Σφάλμα εγγραφής" +msgstr "Σφάλμα υπογραφής" #. TRANSLATORS: %s is a single techy word like 'NODATA' #: apt-pkg/acquire-item.cc methods/gpgv.cc @@ -233,9 +236,9 @@ msgstr "" #. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1 #: apt-pkg/acquire-item.cc -#, fuzzy, c-format +#, c-format msgid "Changelog unavailable for %s=%s" -msgstr "Changelog για %s (%s)" +msgstr "Το changelog δεν είναι διαθέσιμο για %s=%s" #: apt-pkg/acquire-worker.cc #, c-format @@ -260,9 +263,9 @@ msgid "The method driver %s could not be found." msgstr "Ο οδηγός μεθόδου %s δεν μπορεί να εντοπιστεί." #: apt-pkg/acquire-worker.cc -#, fuzzy, c-format +#, c-format msgid "Is the package %s installed?" -msgstr "Ελέγξτε αν είναι εγκαταστημένο το πακέτο 'dpkg-dev'.\n" +msgstr "Είναι εγκατεστημένο το πακέτο %s;" #: apt-pkg/acquire-worker.cc #, c-format @@ -270,27 +273,27 @@ msgid "Method %s did not start correctly" msgstr "Η μέθοδος %s δεν εκκινήθηκε σωστά" #: apt-pkg/acquire-worker.cc -#, fuzzy, c-format +#, c-format msgid "" "Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]." msgstr "" "Παρακαλώ εισάγετε το δίσκο με ετικέτα '%s' στη συσκευή '%s' και πατήστε " -"enter." +"[Enter]." #: apt-pkg/acquire.cc apt-pkg/cdrom.cc -#, fuzzy, c-format +#, c-format msgid "List directory %s is missing." -msgstr "Ο φάκελος λιστών %s αγνοείται." +msgstr "" #: apt-pkg/acquire.cc -#, fuzzy, c-format +#, c-format msgid "Archives directory %s is missing." -msgstr "Ο φάκελος αρχειοθηκών %s αγνοείται." +msgstr "Ο φάκελος αρχειοθηκών %s λείπει." #: apt-pkg/acquire.cc -#, fuzzy, c-format +#, c-format msgid "Unable to lock directory %s" -msgstr "Αδύνατο το κλείδωμα του καταλόγου" +msgstr "Αδύνατο το κλείδωμα του καταλόγου %s" #: apt-pkg/acquire.cc #, c-format @@ -305,9 +308,9 @@ msgid "" msgstr "" #: apt-pkg/acquire.cc apt-pkg/clean.cc -#, fuzzy, c-format +#, c-format msgid "Clean of %s is not supported" -msgstr "Ο τύπος αρχείου ευρετηρίου '%s' δεν υποστηρίζεται" +msgstr "Το καθάρισμα του %s δεν υποστηρίζεται" #. Only warn if there are no sources.list.d. #. Only warn if there is no sources.list file. @@ -366,7 +369,7 @@ msgstr "Αδύνατη η ανάγνωση της λίστας πηγών." #: apt-private/private-output.cc #, c-format msgid "Regex compilation error - %s" -msgstr "σφάλμα μεταγλωτισμου - %s" +msgstr "Σφάλμα μεταγλωτισμού regex - %s" #: apt-pkg/cacheset.cc #, c-format @@ -379,19 +382,19 @@ msgid "Version '%s' for '%s' was not found" msgstr "Η έκδοση %s για το %s δεν βρέθηκε" #: apt-pkg/cacheset.cc -#, fuzzy, c-format +#, c-format msgid "Couldn't find task '%s'" -msgstr "Αδύνατη η εύρεση του συνόλου πακέτων %s" +msgstr "Δεν μπόρεσε να βρεθεί η εργασία '%s'" #: apt-pkg/cacheset.cc -#, fuzzy, c-format +#, c-format msgid "Couldn't find any package by regex '%s'" -msgstr "Αδύνατη η εύρεση του πακέτου %s" +msgstr "Δεν βρέθηκε κάποιο πακέτο με το regex '%s'" #: apt-pkg/cacheset.cc -#, fuzzy, c-format +#, c-format msgid "Couldn't find any package by glob '%s'" -msgstr "Αδύνατη η εύρεση του πακέτου %s" +msgstr "Δεν βρέθηκε κάποιο πακέτο με το glob '%s'" #: apt-pkg/cacheset.cc apt-private/private-show.cc #, c-format @@ -449,7 +452,7 @@ msgstr "Προσάρτηση του CD-ROM...\n" #: apt-pkg/cdrom.cc msgid "Identifying... " -msgstr "Αναγνώριση..." +msgstr "Αναγνώριση... " #: apt-pkg/cdrom.cc #, c-format @@ -533,25 +536,29 @@ msgstr "Αποτυχία ανάγνωσης των επικεφαλίδων τη #: apt-pkg/contrib/cdromutl.cc #, c-format msgid "Unable to stat the mount point %s" -msgstr "Αδύνατη η εύρεση της κατάστασης του σημείου επαφής %s" +msgstr "Αδύνατη η εύρεση της κατάστασης του σημείου προσάρτησης %s" #: apt-pkg/contrib/cdromutl.cc msgid "Failed to stat the cdrom" msgstr "Αδύνατη η εύρεση της κατάστασης του cdrom" #: apt-pkg/contrib/cmndline.cc -#, fuzzy, c-format +#, c-format msgid "" "Command line option '%c' [from %s] is not understood in combination with the " "other options." -msgstr "Η επιλογή γραμμής εντολών '%c' [από %s] δεν είναι γνωστή." +msgstr "" +"Η επιλογή γραμμής εντολών '%c' [από %s] δεν είναι κατανοητή σε συνδυασμό με " +"άλλες επιλογές." #: apt-pkg/contrib/cmndline.cc -#, fuzzy, c-format +#, c-format msgid "" "Command line option %s is not understood in combination with the other " "options" -msgstr "Η επιλογή γραμμής εντολών %s δεν είναι κατανοητή" +msgstr "" +"Η επιλογή γραμμής εντολών %s δεν είναι κατανοητή σε συνδυασμό με άλλες " +"επιλογές" #: apt-pkg/contrib/cmndline.cc #, c-format @@ -631,10 +638,11 @@ msgid "Syntax error %s:%u: Unsupported directive '%s'" msgstr "Συντακτικό σφάλμα %s:%u: Μη υποστηριζόμενη εντολή '%s'" #: apt-pkg/contrib/configuration.cc -#, fuzzy, c-format +#, c-format msgid "Syntax error %s:%u: clear directive requires an option tree as argument" msgstr "" -"Συντακτικό σφάλμα %s:%u: Οι οδηγίες βρίσκονται μόνο στο ανώτατο επίπεδο" +"Συντακτικό σφάλμα %s:%u: η καθαρή οδηγία απαιτεί ένα δέντρο επιλογών ως " +"όρισμα" #: apt-pkg/contrib/configuration.cc #, c-format @@ -642,9 +650,9 @@ msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "Συντακτικό σφάλμα %s:%u: Άχρηστοι χαρακτήρες στο τέλος του αρχείου" #: apt-pkg/contrib/extracttar.cc -#, fuzzy, c-format +#, c-format msgid "Cannot find a configured compressor for '%s'" -msgstr "Αδύνατη η εύρεση του πακέτου %s" +msgstr "Αδύνατη η εύρεση ρυθμισμένου συμπιεστή '%s'" #: apt-pkg/contrib/extracttar.cc msgid "Corrupted archive" @@ -655,15 +663,14 @@ msgid "Tar checksum failed, archive corrupted" msgstr "Το Checksum του tar απέτυχε, η αρχείοθήκη είναι κατεστραμμένη" #: apt-pkg/contrib/extracttar.cc -#, fuzzy, c-format -#| msgid "Unknown TAR header type %u, member %s" +#, c-format msgid "Unknown TAR header type %u" -msgstr "Άγνωστη επικεφαλίδα TAR τύπος %u, μέλος %s" +msgstr "Άγνωστη επικεφαλίδα TAR τύπος %u" #: apt-pkg/contrib/fileutl.cc -#, fuzzy, c-format +#, c-format msgid "Problem unlinking the file %s" -msgstr "Πρόβλημα κατά την διαγραφή του αρχείου" +msgstr "Πρόβλημα κατά την αποσύνδεση του αρχείου %s" #: apt-pkg/contrib/fileutl.cc #, c-format @@ -684,10 +691,9 @@ msgstr "" "%s" #: apt-pkg/contrib/fileutl.cc -#, fuzzy, c-format -#| msgid "Could not get lock %s" +#, c-format msgid "Could not get lock %s. It is held by process %d" -msgstr "Αδύνατο το κλείδωμα %s" +msgstr "Αδύνατο το κλείδωμα %s. Κρατείται από την διεργασία %d" #: apt-pkg/contrib/fileutl.cc #, c-format @@ -738,9 +744,9 @@ msgid "Sub-process %s received a segmentation fault." msgstr "Η υποδιεργασία %s έλαβε ένα σφάλμα καταμερισμού (segfault)" #: apt-pkg/contrib/fileutl.cc -#, fuzzy, c-format +#, c-format msgid "Sub-process %s received signal %u." -msgstr "Η υποδιεργασία %s έλαβε ένα σφάλμα καταμερισμού (segfault)" +msgstr "Η υποδιεργασία %s έλαβε σήμα %u." #. we forward the statuscode, so don't generate a message on the fd in this case #: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc @@ -762,13 +768,13 @@ msgid "Write error" msgstr "Σφάλμα εγγραφής" #: apt-pkg/contrib/fileutl.cc -#, fuzzy, c-format +#, c-format msgid "Problem closing the gzip file %s" -msgstr "Πρόβλημα κατά το κλείσιμο του αρχείου" +msgstr "Πρόβλημα κατά το κλείσιμο του αρχείου gzip %s" #: apt-pkg/contrib/fileutl.cc msgid "Unexpected end of file" -msgstr "" +msgstr "Μη αναμενόμενο τέλος αρχείου" #: apt-pkg/contrib/fileutl.cc msgid "Failed to create subprocess IPC" @@ -784,38 +790,38 @@ msgid "Could not open file %s" msgstr "Αδύνατο το άνοιγμα του αρχείου %s" #: apt-pkg/contrib/fileutl.cc -#, fuzzy, c-format +#, c-format msgid "Could not open file descriptor %d" -msgstr "Αδύνατο το άνοιγμα διασωλήνωσης για το %s" +msgstr "Αδύνατο το άνοιγμα περιγραφέα αρχείου για το %d" #: apt-pkg/contrib/fileutl.cc -#, fuzzy, c-format +#, c-format msgid "read, still have %llu to read but none left" -msgstr "αναγνώστηκαν, απομένουν ακόμη %lu για ανάγνωση αλλά δεν απομένουν άλλα" +msgstr "αναγνώστηκαν, απομένουν ακόμη %llu για ανάγνωση αλλά δεν υπάρχουν άλλα" #: apt-pkg/contrib/fileutl.cc -#, fuzzy, c-format +#, c-format msgid "write, still have %llu to write but couldn't" -msgstr "γράφτηκαν, απομένουν %lu για εγγραφή αλλά χωρίς επιτυχία" +msgstr "γράφτηκαν, απομένουν %llu για εγγραφή αλλά δεν μπορούσε" #: apt-pkg/contrib/fileutl.cc -#, fuzzy, c-format +#, c-format msgid "Problem closing the file %s" -msgstr "Πρόβλημα κατά το κλείσιμο του αρχείου" +msgstr "Πρόβλημα κατά το κλείσιμο του αρχείου %s" #: apt-pkg/contrib/fileutl.cc -#, fuzzy, c-format +#, c-format msgid "Problem renaming the file %s to %s" -msgstr "Πρόβλημα κατά τον συγχρονισμό του αρχείου" +msgstr "Πρόβλημα κατά την μετονομασία του αρχείου %s σε %s" #: apt-pkg/contrib/fileutl.cc msgid "Problem syncing the file" msgstr "Πρόβλημα κατά τον συγχρονισμό του αρχείου" #: apt-pkg/contrib/fileutl.cc -#, fuzzy, c-format +#, c-format msgid "Unable to mkstemp %s" -msgstr "Αδύνατη η εύρεση της κατάστασης του %s" +msgstr "Αδύνατο το mktemp %s" #: apt-pkg/contrib/fileutl.cc #, c-format @@ -827,24 +833,22 @@ msgid "Can't mmap an empty file" msgstr "Αδύνατη η απεικόνιση mmap ενός άδειου αρχείου" #: apt-pkg/contrib/mmap.cc -#, fuzzy, c-format +#, c-format msgid "Couldn't make mmap of %llu bytes" -msgstr "Αδύνατη η απεικόνιση μέσω mmap %lu bytes" +msgstr "Δεν μπόρεσε να γίνει mmap από %llu byte" #: apt-pkg/contrib/mmap.cc -#, fuzzy, c-format +#, c-format msgid "Couldn't duplicate file descriptor %i" -msgstr "Αδύνατο το άνοιγμα διασωλήνωσης για το %s" +msgstr "Αδύνατη η δημιουργία διπλότυπου του περιγραφέα αρχείου για το %i" #: apt-pkg/contrib/mmap.cc -#, fuzzy msgid "Unable to close mmap" -msgstr "Αδύνατο το άνοιγμα του %s" +msgstr "Αδύνατο το κλείσιμο του mmap" #: apt-pkg/contrib/mmap.cc -#, fuzzy msgid "Unable to synchronize mmap" -msgstr "Αδύνατη η εκτέλεση" +msgstr "Αδύνατος ο συγχρονισμός του mmap" #: apt-pkg/contrib/mmap.cc #, c-format @@ -852,9 +856,8 @@ msgid "Couldn't make mmap of %lu bytes" msgstr "Αδύνατη η απεικόνιση μέσω mmap %lu bytes" #: apt-pkg/contrib/mmap.cc -#, fuzzy msgid "Failed to truncate file" -msgstr "Αποτυχία εγγραφής του αρχείου %s" +msgstr "Αποτυχία περικοπής αρχείου" #: apt-pkg/contrib/mmap.cc #, c-format @@ -894,46 +897,46 @@ msgstr "%c%s... Ολοκληρώθηκε" #: apt-pkg/contrib/progress.cc msgid "..." -msgstr "" +msgstr "..." #: apt-pkg/contrib/progress.cc -#, fuzzy, c-format +#, c-format msgid "%c%s... %llu/%llus" -msgstr "%c%s... Ολοκληρώθηκε" +msgstr "%c%s... %llu/%llus" #: apt-pkg/contrib/progress.cc -#, fuzzy, c-format +#, c-format msgid "%c%s... %llus" -msgstr "%c%s... Ολοκληρώθηκε" +msgstr "%c%s... %llus" #: apt-pkg/contrib/progress.cc -#, fuzzy, c-format +#, c-format msgid "%c%s... %u%%" -msgstr "%c%s... Ολοκληρώθηκε" +msgstr "%c%s... %u%%" #. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds #: apt-pkg/contrib/strutl.cc #, c-format msgid "%lid %lih %limin %lis" -msgstr "" +msgstr "%liη %liω %liλ %liδ" #. TRANSLATOR: h means hours, min means minutes, s means seconds #: apt-pkg/contrib/strutl.cc #, c-format msgid "%lih %limin %lis" -msgstr "" +msgstr "%liω %liλ %liδ" #. TRANSLATOR: min means minutes, s means seconds #: apt-pkg/contrib/strutl.cc #, c-format msgid "%limin %lis" -msgstr "" +msgstr "%liλ %liδ" #. TRANSLATOR: s means seconds #: apt-pkg/contrib/strutl.cc #, c-format msgid "%lis" -msgstr "" +msgstr "%liδ" #: apt-pkg/contrib/strutl.cc #, c-format @@ -955,10 +958,9 @@ msgid "Unparsable control file" msgstr "Μη αναλύσιμο αρχείο control" #: apt-pkg/deb/debindexfile.cc -#, fuzzy, c-format -#| msgid "Could not get lock %s" +#, c-format msgid "Could not read meta data from %s" -msgstr "Αδύνατο το κλείδωμα %s" +msgstr "Αδύνατη η ανάγνωση μετα-δεδομένων από %s" #. TRANSLATOR: an identifier like Packages; Releasefile key indicating #. a file like main/binary-amd64/Packages; another identifier like Contents; @@ -977,14 +979,14 @@ msgid "Target %s (%s) is configured multiple times in %s and %s" msgstr "" #: apt-pkg/deb/debmetaindex.cc -#, fuzzy, c-format +#, c-format msgid "Unable to parse Release file %s" -msgstr "Αδύνατη η ανάλυση του αρχείου πακέτου %s (1)" +msgstr "Αδύνατη η ανάλυση του αρχείου Release %s" #: apt-pkg/deb/debmetaindex.cc -#, fuzzy, c-format +#, c-format msgid "No sections in Release file %s" -msgstr "Σημείωση, επιλέχθηκε το %s αντί του%s\n" +msgstr "" #: apt-pkg/deb/debmetaindex.cc #, c-format @@ -999,9 +1001,9 @@ msgid "" msgstr "" #: apt-pkg/deb/debmetaindex.cc -#, fuzzy, c-format +#, c-format msgid "Invalid '%s' entry in Release file %s" -msgstr "Μη έγκυρη γραμμή στο αρχείο παρακάμψεων: %s" +msgstr "Άκυρη εισαγωγή '%s' στο αρχείο Release %s" #. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite #: apt-pkg/deb/debmetaindex.cc @@ -1020,15 +1022,14 @@ msgid "Conflicting values set for option %s regarding source %s %s: %s != %s" msgstr "" #: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc -#, fuzzy, c-format +#, c-format msgid "Unable to parse package file %s (%d)" -msgstr "Αδύνατη η ανάλυση του αρχείου πακέτου %s (%s)" +msgstr "Αδύνατη η ανάλυση του αρχείου πακέτου %s (%d)" #: apt-pkg/deb/debsystem.cc -#, fuzzy, c-format -#| msgid "Waiting for headers" +#, c-format msgid "Waiting for cache lock: %s" -msgstr "Αναμονή επικεφαλίδων" +msgstr "Αναμονή κλειδώματος cache: %s" #: apt-pkg/deb/debsystem.cc #, c-format @@ -1037,9 +1038,9 @@ msgid "" msgstr "" #: apt-pkg/deb/debsystem.cc -#, fuzzy, c-format +#, c-format msgid "Unable to acquire the dpkg frontend lock (%s), are you root?" -msgstr "Αδύνατο το κλείδωμα του καταλόγου" +msgstr "Αδύνατη η απόκτηση κλειδώματος του dpkg frontend (%s), είστε ο root;" #. TRANSLATORS: the %s contains the recovery command, usually #. dpkg --configure -a @@ -1057,13 +1058,13 @@ msgid "" msgstr "" #: apt-pkg/deb/debsystem.cc -#, fuzzy, c-format +#, c-format msgid "Unable to lock the administration directory (%s), are you root?" -msgstr "Αδύνατο το κλείδωμα του καταλόγου" +msgstr "Αδύνατο το κλείδωμα του διαχειριστικού καταλόγου (%s), είσαι ο root;" #: apt-pkg/deb/debsystem.cc msgid "Not locked" -msgstr "" +msgstr "Μη κλειδωμένο" #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc @@ -1110,12 +1111,12 @@ msgstr "Ρύθμιση του %s" #: apt-pkg/deb/dpkgpm.cc #, c-format msgid "Directory '%s' missing" -msgstr "Ο φάκελος %s αγνοείται." +msgstr "Ο φάκελος %s λείπει" #: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc -#, fuzzy, c-format +#, c-format msgid "Could not open file '%s'" -msgstr "Αδύνατο το άνοιγμα του αρχείου %s" +msgstr "Αδύνατο το άνοιγμα του αρχείου '%s'" #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1133,9 +1134,9 @@ msgid "Removing %s" msgstr "Αφαιρώ το %s" #: apt-pkg/deb/dpkgpm.cc -#, fuzzy, c-format +#, c-format msgid "Completely removing %s" -msgstr "Το %s διαγράφηκε πλήρως" +msgstr "Ολοκληρωτική αφαίρεση του %s" #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1143,13 +1144,13 @@ msgid "Completely removed %s" msgstr "Το %s διαγράφηκε πλήρως" #: apt-pkg/deb/dpkgpm.cc -#, fuzzy, c-format +#, c-format msgid "Can not write log (%s)" -msgstr "Αδύνατη η εγγραφή στο %s" +msgstr "Δεν μπορεί να γραφτεί η καταγραφή (%s)" #: apt-pkg/deb/dpkgpm.cc msgid "Is /dev/pts mounted?" -msgstr "" +msgstr "Είναι προσαρτημένο το /dev/pts ;" #: apt-pkg/deb/dpkgpm.cc msgid "Operation was interrupted before it could finish" @@ -1162,7 +1163,7 @@ msgstr "" #. check if its not a follow up error #: apt-pkg/deb/dpkgpm.cc msgid "dependency problems - leaving unconfigured" -msgstr "" +msgstr "προβλήματα εξαρτήσεων - αφήνεται χωρίς ρύθμιση" #: apt-pkg/deb/dpkgpm.cc msgid "" @@ -1207,7 +1208,7 @@ msgstr "Παραγωγή Εξαρτήσεων" #: apt-pkg/depcache.cc msgid "Reading state information" -msgstr "Ανάγνωση περιγραφής της τρέχουσας κατάσταση" +msgstr "Ανάγνωση πληροφοριών κατάστασης" #: apt-pkg/depcache.cc #, c-format @@ -1231,23 +1232,23 @@ msgstr "Αποτυχία στο κλείσιμο του αρχείου %s" #: apt-pkg/edsp.cc msgid "Send scenario to solver" -msgstr "" +msgstr "Αποστολή σεναρίου στον solver" #: apt-pkg/edsp.cc msgid "Send request to solver" -msgstr "" +msgstr "Αποστολή αιτήματος στον solver" #: apt-pkg/edsp.cc msgid "Prepare for receiving solution" -msgstr "" +msgstr "Προετοιμασία για λήψη λύσης" #: apt-pkg/edsp.cc msgid "External solver failed without a proper error message" -msgstr "" +msgstr "Ο εξωτερικός solver απέτυχε χωρίς κανονικό μήνυμα σφάλματος" #: apt-pkg/edsp.cc msgid "Execute external solver" -msgstr "" +msgstr "Εκτέλεση εξωτερικού solver" #: apt-pkg/edsp.cc msgid "Execute external planner" @@ -1288,12 +1289,12 @@ msgstr "Εγιναν %i εγγραφές με %i απώντα αρχεία κα #: apt-pkg/indexcopy.cc #, c-format msgid "Can't find authentication record for: %s" -msgstr "" +msgstr "Δεν μπορεί να βρεθεί εγγραφή πιστοποίησης για: %s" #: apt-pkg/indexcopy.cc -#, fuzzy, c-format +#, c-format msgid "Hash mismatch for: %s" -msgstr "Ανόμοιο MD5Sum" +msgstr "Ανόμοιο hash για το: %s" #: apt-pkg/init.cc #, c-format @@ -1307,12 +1308,12 @@ msgstr "Αδύνατος ο καθορισμός ενός κατάλληλου #: apt-pkg/install-progress.cc #, c-format msgid "Progress: [%3li%%]" -msgstr "" +msgstr "Πρόοδος: [%3li%%]" #. send status information that we are about to fork dpkg #: apt-pkg/install-progress.cc msgid "Running dpkg" -msgstr "" +msgstr "Γίνεται τρέξιμο του dpkg" #: apt-pkg/packagemanager.cc #, c-format @@ -1322,9 +1323,9 @@ msgid "" msgstr "" #: apt-pkg/packagemanager.cc -#, fuzzy, c-format +#, c-format msgid "Could not configure '%s'. " -msgstr "Αδύνατο το άνοιγμα του αρχείου %s" +msgstr "Δεν μπόρεσε να ρυθμιστεί το '%s'. " #: apt-pkg/packagemanager.cc #, c-format @@ -1356,14 +1357,14 @@ msgid "This APT does not support the versioning system '%s'" msgstr "Αυτό το APT δεν υποστηρίζει το Σύστημα Απόδοσης Έκδοσης '%s'" #: apt-pkg/pkgcache.cc -#, fuzzy, c-format +#, c-format msgid "The package cache was built for different architectures: %s vs %s" -msgstr "Η cache πακέτων κατασκευάστηκε για μια διαφορετική αρχιτεκτονική" +msgstr "" +"Η cache του πακέτου κατασκευάστηκε για διαφορετικές αρχιτεκτονικές: %s vs %s" #: apt-pkg/pkgcache.cc -#, fuzzy msgid "The package cache file is corrupted, it has the wrong hash" -msgstr "Το αρχείο cache των πακέτων είναι κατεστραμμένο" +msgstr "Το αρχείο cache του πακέτου είναι κατεστραμμένο, έχει λανθασμένο hash" #: apt-pkg/pkgcache.cc msgid "Depends" @@ -1395,7 +1396,7 @@ msgstr "Χαλάει" #: apt-pkg/pkgcache.cc msgid "Enhances" -msgstr "" +msgstr "Επεκτείνει" #: apt-pkg/pkgcache.cc msgid "Obsoletes" @@ -1428,9 +1429,9 @@ msgstr "Η cache έχει ασύμβατο σύστημα απόδοσης έκ #. TRANSLATOR: The first placeholder is a package name, #. the other two should be copied verbatim as they include debug info #: apt-pkg/pkgcachegen.cc -#, fuzzy, c-format +#, c-format msgid "Error occurred while processing %s (%s%d)" -msgstr "Προέκυψε σφάλμα κατά την επεξεργασία του %s (FindPkg)" +msgstr "Προέκυψε σφάλμα κατά την επεξεργασία του %s (%s%d)" #: apt-pkg/pkgcachegen.cc msgid "Wow, you exceeded the number of package names this APT is capable of." @@ -1454,7 +1455,7 @@ msgstr "" #: apt-pkg/pkgcachegen.cc msgid "Reading package lists" -msgstr "Ανάγνωση Λιστών Πακέτων" +msgstr "Ανάγνωση λιστών πακέτων" #: apt-pkg/pkgcachegen.cc msgid "IO Error saving source cache" @@ -1473,9 +1474,9 @@ msgid "" msgstr "" #: apt-pkg/policy.cc -#, fuzzy, c-format +#, c-format msgid "Invalid record in the preferences file %s, no Package header" -msgstr "Μη έγκυρη εγγραφή στο αρχείο προτιμήσεων, καμία επικεφαλίδα Package" +msgstr "Μη έγκυρη εγγραφή στο αρχείο προτιμήσεων %s, καμία επικεφαλίδα Package" #: apt-pkg/policy.cc #, c-format @@ -1500,9 +1501,9 @@ msgstr "" #. TRANSLATOR: %u is a line number, the first %s is a filename of a file with the extension "second %s" and the third %s is a unique identifier for bugreports #: apt-pkg/sourcelist.cc -#, fuzzy, c-format +#, c-format msgid "Malformed entry %u in %s file %s (%s)" -msgstr "Κακογραμμένη παρακαμπτήρια %s γραμμή %lu #1" +msgstr "Κακογραμμένη καταχώρηση %u στο %s αρχείο %s (%s)" #: apt-pkg/sourcelist.cc #, c-format @@ -1512,17 +1513,17 @@ msgstr "Λάθος μορφή της γραμμής %u στη λίστα πηγ #: apt-pkg/sourcelist.cc #, c-format msgid "Type '%s' is not known on line %u in source list %s" -msgstr "Ο τύπος '%s' στη γραμμή %u στη λίστα πηγών %s είναι άγνωστος " +msgstr "Ο τύπος '%s' στη γραμμή %u στη λίστα πηγών %s είναι άγνωστος" #: apt-pkg/sourcelist.cc -#, fuzzy, c-format +#, c-format msgid "Malformed stanza %u in source list %s (type)" msgstr "Λάθος μορφή της γραμμής %u στη λίστα πηγών %s (τύπος)" #: apt-pkg/sourcelist.cc -#, fuzzy, c-format +#, c-format msgid "Type '%s' is not known on stanza %u in source list %s" -msgstr "Ο τύπος '%s' στη γραμμή %u στη λίστα πηγών %s είναι άγνωστος " +msgstr "Ο τύπος '%s' στη γραμμή %u στη λίστα πηγών %s είναι άγνωστος" #: apt-pkg/sourcelist.cc apt-private/private-install.cc #, c-format @@ -1530,10 +1531,8 @@ msgid "Unsupported file %s given on commandline" msgstr "" #: apt-pkg/srcrecords.cc -#, fuzzy -#| msgid "You must put some 'source' URIs in your sources.list" msgid "You must put some 'deb-src' URIs in your sources.list" -msgstr "Πρέπει να τοποθετήσετε μερικά URI 'πηγών' στο sources.list" +msgstr "Πρέπει να βάλετε μερικά 'deb-src' URI στο sources.list" #: apt-pkg/tagfile.cc #, c-format @@ -1541,13 +1540,12 @@ msgid "Cannot convert %s to integer: out of range" msgstr "" #: apt-pkg/update.cc -#, fuzzy msgid "" "Some index files failed to download. They have been ignored, or old ones " "used instead." msgstr "" -"Μερικά αρχεία δεν μεταφορτώθηκαν, αγνοήθηκαν ή χρησιμοποιήθηκαν παλαιότερα " -"στη θέση τους." +"Μερικά αρχεία index απέτυχαν να ληφθούν. Είτε αγνοήθηκαν ή χρησιμοποιήθηκαν " +"παλαιότερα στη θέση τους." #: apt-pkg/upgrade.cc msgid "Calculating upgrade" @@ -1590,15 +1588,15 @@ msgid " [Working]" msgstr " [Επεξεργασία]" #: apt-private/acqprogress.cc -#, fuzzy, c-format +#, c-format msgid "" "Media change: please insert the disc labeled\n" " '%s'\n" "in the drive '%s' and press [Enter]\n" msgstr "" -"Αλλαγή Μέσου: Παρακαλώ εισάγετε το δίσκο με ετικέτα\n" +"Αλλαγή μέσου: παρακαλώ εισάγετε το δίσκο με ετικέτα\n" " '%s'\n" -"στη συσκευή '%s' και πιέστε enter\n" +"στον οδηγό '%s' και πιέστε [Enter]\n" #: apt-private/acqprogress.cc msgid "" @@ -1642,22 +1640,22 @@ msgstr "" #: apt-private/private-cacheset.cc apt-private/private-search.cc msgid "Sorting" -msgstr "" +msgstr "Γίνεται ταξινόμηση" #: apt-private/private-cacheset.cc -#, fuzzy, c-format +#, c-format msgid "Note, selecting '%s' for task '%s'\n" -msgstr "Σημείωση, επιλέχτηκε το %s στη θέση του '%s'\n" +msgstr "Σημείωση, επιλέχτηκε το '%s' για το task '%s'\n" #: apt-private/private-cacheset.cc -#, fuzzy, c-format +#, c-format msgid "Note, selecting '%s' for glob '%s'\n" -msgstr "Σημείωση, επιλέχτηκε το %s στη θέση του '%s'\n" +msgstr "Σημείωση, επιλέχτηκε το '%s' για το glob '%s'\n" #: apt-private/private-cacheset.cc -#, fuzzy, c-format +#, c-format msgid "Note, selecting '%s' for regex '%s'\n" -msgstr "Σημείωση, επιλέχτηκε το %s στη θέση του '%s'\n" +msgstr "Σημείωση, επιλέχτηκε το '%s' για το regex '%s'\n" #: apt-private/private-cacheset.cc #, c-format @@ -1665,13 +1663,12 @@ msgid "Package %s is a virtual package provided by:\n" msgstr "Το πακέτο %s είναι εικονικό και παρέχεται από τα:\n" #: apt-private/private-cacheset.cc -#, fuzzy msgid " [Installed]" msgstr " [Εγκατεστημένα]" #: apt-private/private-cacheset.cc msgid " [Not candidate version]" -msgstr "[Μγ Υποψήφια Εκδόση]" +msgstr " [Μη υποψήφια έκδοση]" #: apt-private/private-cacheset.cc msgid "You should explicitly select one to install." @@ -1722,12 +1719,13 @@ msgstr "Σημείωση, επιλέχθηκε το %s αντί του %s\n" #: apt-private/private-cmndline.cc msgid "Most used commands:" -msgstr "" +msgstr "Οι πιο συχνές εντολές:" #: apt-private/private-cmndline.cc #, c-format msgid "See %s for more information about the available commands." msgstr "" +"Δείτε το %s για περισσότερες πληροφορίες σχετικά με τις διαθέσιμες εντολές." #: apt-private/private-cmndline.cc msgid "" @@ -1750,6 +1748,8 @@ msgid "" "--force-yes is deprecated, use one of the options starting with --allow " "instead." msgstr "" +"Το --force-yes είναι παρωχημένο, χρησιμοποιήστε τις επιλογές που ξεκινάνε με " +"--allow." #: apt-private/private-depends.cc apt-private/private-download.cc #: apt-private/private-show.cc cmdline/apt-mark.cc @@ -1758,7 +1758,7 @@ msgstr "Δε βρέθηκαν πακέτα" #: apt-private/private-download.cc msgid "WARNING: The following packages cannot be authenticated!" -msgstr "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Τα ακόλουθα πακέτα δεν εξακριβώθηκαν!" +msgstr "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Τα ακόλουθα πακέτα δεν επικυρώθηκαν!" #: apt-private/private-download.cc msgid "Authentication warning overridden.\n" @@ -1773,11 +1773,12 @@ msgid "Install these packages without verification?" msgstr "Εγκατάσταση των πακέτων χωρίς επαλήθευση;" #: apt-private/private-download.cc -#, fuzzy msgid "" "There were unauthenticated packages and -y was used without --allow-" "unauthenticated" -msgstr "Υπάρχουν προβλήματα και δώσατε -y χωρίς το --force-yes" +msgstr "" +"Υπήρχαν μη επικυρωμένα πακέτα και χρησιμοποιήθηκε το -y χωρίς το --allow-" +"unauthenticated" #: apt-private/private-download.cc #, c-format @@ -1841,22 +1842,24 @@ msgstr "" "Μερικά πακέτα πρέπει να αφαιρεθούν αλλά η Αφαίρεση είναι απενεργοποιημένη." #: apt-private/private-install.cc -#, fuzzy msgid "" "Essential packages were removed and -y was used without --allow-remove-" "essential." -msgstr "Υπάρχουν προβλήματα και δώσατε -y χωρίς το --force-yes" +msgstr "" +"Αφαιρέθηκαν ουσιώδη πακέτα και χρησιμοποιήθηκε το -y χωρίς το --allow-remove-" +"essential." #: apt-private/private-install.cc -#, fuzzy msgid "Packages were downgraded and -y was used without --allow-downgrades." -msgstr "Υπάρχουν προβλήματα και δώσατε -y χωρίς το --force-yes" +msgstr "Υπάρχουν προβλήματα και δώσατε -y χωρίς το --force-yes." #: apt-private/private-install.cc msgid "" "Held packages were changed and -y was used without --allow-change-held-" "packages." msgstr "" +"Τα κρατημένα πακέτα άλλαξαν και το -y χρησιμοποιήθηκε χωρίς το --allow-" +"change-held-packages." #: apt-private/private-install.cc msgid "Internal error, Ordering didn't finish" @@ -1899,7 +1902,8 @@ msgstr "Μετά από αυτή τη λειτουργία, θα ελευθερ #: apt-private/private-install.cc msgid "Trivial Only specified but this is not a trivial operation." -msgstr "Καθορίσατε συνηθισμένο, αλλά αυτή δεν είναι μια συνηθισμένη εργασία" +msgstr "" +"Καθορίστηκε μόνο συνηθισμένο, αλλά αυτή δεν είναι μια συνηθισμένη εργασία." #. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be #. careful with hard to type or special characters (like non-breaking spaces) @@ -1959,7 +1963,7 @@ msgstr[1] "" #: apt-private/private-install.cc msgid "Note: This is done automatically and on purpose by dpkg." -msgstr "" +msgstr "Σημείωση: Αυτό έγινε αυτόματα και με κάποιο σκοπό από το dpkg." #: apt-private/private-install.cc msgid "We are not supposed to delete stuff, can't start AutoRemover" @@ -1989,14 +1993,12 @@ msgstr[1] "" "Τα ακόλουθα πακέτα εγκαταστάθηκαν αυτόματα και δεν χρειάζονται πλέον:" #: apt-private/private-install.cc -#, fuzzy, c-format +#, c-format msgid "%lu package was automatically installed and is no longer required.\n" msgid_plural "" "%lu packages were automatically installed and are no longer required.\n" -msgstr[0] "" -"%lu το ακόλουθο πακέτο εγκαταστάθηκε αυτόματα και δεν χρειάζεται πλέον:" -msgstr[1] "" -"%lu τα ακόλουθα πακέτα εγκαταστάθηκαν αυτόματα και δεν χρειάζονται πλέον:" +msgstr[0] "%lu πακέτο εγκαταστάθηκε αυτόματα και δεν χρειάζεται πλέον.\n" +msgstr[1] "%lu πακέτα εγκαταστάθηκαν αυτόματα και δεν χρειάζονται πλέον.\n" #: apt-private/private-install.cc #, c-format @@ -2006,7 +2008,6 @@ msgstr[0] "Χρησιμοποιήστε '%s' για να το διαγράψετ msgstr[1] "Χρησιμοποιήστε '%s' για να τα διαγράψετε." #: apt-private/private-install.cc -#, fuzzy msgid "The following additional packages will be installed:" msgstr "Τα ακόλουθα επιπλέον πακέτα θα εγκατασταθούν:" @@ -2039,9 +2040,9 @@ msgstr "" #. TRANSLATORS: First string is package name, second is version #: apt-private/private-install.cc -#, fuzzy, c-format +#, c-format msgid "%s is already the newest version (%s).\n" -msgstr "το %s είναι ήδη η τελευταία έκδοση.\n" +msgstr "το %s είναι ήδη η τελευταία έκδοση (%s).\n" #: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc #, c-format @@ -2060,7 +2061,7 @@ msgstr "Επιλέχθηκε η έκδοση %s (%s) για το %s λόγω τ #: apt-private/private-list.cc msgid "Listing" -msgstr "" +msgstr "Δημιουργία λίστας" #: apt-private/private-list.cc #, c-format @@ -2082,40 +2083,37 @@ msgstr "" #: apt-private/private-output.cc apt-private/private-show.cc msgid "unknown" -msgstr "" +msgstr "άγνωστο" #: apt-private/private-output.cc -#, fuzzy, c-format +#, c-format msgid "[installed,upgradable to: %s]" -msgstr " [Εγκατεστημένα]" +msgstr "[εγκατεστημένα,αναβαθμίσιμα σε: %s]" #: apt-private/private-output.cc -#, fuzzy msgid "[installed,local]" -msgstr " [Εγκατεστημένα]" +msgstr "[εγκατεστημένα,τοπικά]" #: apt-private/private-output.cc msgid "[installed,auto-removable]" -msgstr "" +msgstr "[εγκατεστημένο,αυτόματα-αφαιρέσιμο]" #: apt-private/private-output.cc -#, fuzzy msgid "[installed,automatic]" -msgstr " [Εγκατεστημένα]" +msgstr "[εγκατεστημένα,αυτόματα]" #: apt-private/private-output.cc -#, fuzzy msgid "[installed]" -msgstr " [Εγκατεστημένα]" +msgstr "[εγκατεστημένα]" #: apt-private/private-output.cc #, c-format msgid "[upgradable from: %s]" -msgstr "" +msgstr "[αναβαθμίσιμο από: %s]" #: apt-private/private-output.cc msgid "[residual-config]" -msgstr "" +msgstr "[υπολοιπόμενο-config]" #: apt-private/private-output.cc #, c-format @@ -2196,7 +2194,7 @@ msgstr "%lu αναβαθμίστηκαν, %lu νέο εγκατεστημένα, #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " -msgstr "%lu επανεγκατεστημένα," +msgstr "%lu επανεγκατεστημένα, " #: apt-private/private-output.cc #, c-format @@ -2232,12 +2230,12 @@ msgstr "[ν/Ο]" #. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set #: apt-private/private-output.cc msgid "Y" -msgstr "" +msgstr "Y" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set #: apt-private/private-output.cc msgid "N" -msgstr "" +msgstr "Ο" #: apt-private/private-search.cc msgid "You must give at least one search pattern" @@ -2245,7 +2243,7 @@ msgstr "Πρέπει να δώσετε τουλάχιστον ένα μοτίβ #: apt-private/private-search.cc msgid "Full Text Search" -msgstr "" +msgstr "Αναζήτηση πλήρους κειμένου" #: apt-private/private-show.cc #, c-format @@ -2257,7 +2255,7 @@ msgstr[1] "" #: apt-private/private-show.cc msgid "not a real package (virtual)" -msgstr "" +msgstr "δεν είναι πραγματικό πακέτο (ιδεατό)" #: apt-private/private-show.cc msgid "Package files:" @@ -2277,7 +2275,7 @@ msgstr "Καθηλωμένα Πακέτα:" #: apt-private/private-show.cc #, c-format msgid "%s -> %s with priority %d\n" -msgstr "" +msgstr "%s -> %s με προτεραιότητα %d\n" #: apt-private/private-show.cc msgid " Installed: " @@ -2297,19 +2295,19 @@ msgid " Version table:" msgstr " Πίνακας Έκδοσης:" #: apt-private/private-source.cc -#, fuzzy, c-format +#, c-format msgid "Can not find a package for architecture '%s'" -msgstr "Αδύνατη η εύρεση του πακέτου %s" +msgstr "Δεν βρέθηκε πακέτο για την αρχιτεκτονική '%s'" #: apt-private/private-source.cc -#, fuzzy, c-format +#, c-format msgid "Can not find a package '%s' with version '%s'" -msgstr "Αδύνατη η εύρεση του πακέτου %s" +msgstr "Δεν βρέθηκε πακέτο '%s' με έκδοση '%s'" #: apt-private/private-source.cc -#, fuzzy, c-format +#, c-format msgid "Can not find a package '%s' with release '%s'" -msgstr "Αδύνατη η εύρεση του πακέτου %s" +msgstr "Δεν βρέθηκε πακέτο '%s' με έκδοση '%s'" #: apt-private/private-source.cc #, c-format @@ -2319,7 +2317,7 @@ msgstr "Επιλογή του %s ώς λίστας πηγαίων πακέτων #: apt-private/private-source.cc #, c-format msgid "Can not find version '%s' of package '%s'" -msgstr "" +msgstr "Δεν μπορεί να βρεθεί η έκδοση '%s' του πακέτου '%s'" #: apt-private/private-source.cc msgid "Must specify at least one package to fetch source for" @@ -2428,23 +2426,23 @@ msgid "Note, using directory '%s' to get the build dependencies\n" msgstr "" #: apt-private/private-source.cc -#, fuzzy, c-format +#, c-format msgid "Note, using file '%s' to get the build dependencies\n" -msgstr "Αποτυχία επεξεργασίας εξαρτήσεων χτισίματος" +msgstr "Σημείωση, χρήση του αρχείου '%s' για λήψη εξαρτήσεων κατασκευής\n" #: apt-private/private-source.cc msgid "Failed to process build dependencies" msgstr "Αποτυχία επεξεργασίας εξαρτήσεων χτισίματος" #: apt-private/private-sources.cc -#, fuzzy, c-format +#, c-format msgid "Failed to parse %s. Edit again? " -msgstr "Αποτυχία μετονομασίας του %s σε %s" +msgstr "Αποτυχία ανάλυσης του %s. Επεξεργασία ξανά; " #: apt-private/private-sources.cc #, c-format msgid "Your '%s' file changed, please run 'apt-get update'.\n" -msgstr "" +msgstr "Το αρχείο '%s' άλλαξε, παρακαλώ τρέξτε το 'apt-get update'.\n" #: apt-private/private-unmet.cc #, c-format @@ -2469,16 +2467,20 @@ msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" msgid_plural "" "%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n" msgstr[0] "" +"%i πακέτο μπορεί να αναβαθμιστεί. Τρέξτε 'apt list --upgradable' για να το " +"δείτε.\n" msgstr[1] "" +"%i πακέτα μπορούν να αναβαθμιστούν. Τρέξτε 'apt list --upgradable' για να τα " +"δείτε.\n" #: apt-private/private-update.cc msgid "All packages are up to date." -msgstr "" +msgstr "Όλα τα πακέτα είναι ενημερωμένα." #: cmdline/apt-cache.cc cmdline/apt-mark.cc -#, fuzzy, c-format +#, c-format msgid "%s does not take any arguments" -msgstr "Η εντολή update δεν παίρνει ορίσματα" +msgstr "%s δεν παίρνει ορίσματα" #: cmdline/apt-cache.cc msgid "Total package names: " @@ -2506,7 +2508,7 @@ msgstr " Μικτά Εικονικά Πακέτα: " #: cmdline/apt-cache.cc msgid " Missing: " -msgstr "Αγνοούμενα: " +msgstr " Αγνοούμενα: " #: cmdline/apt-cache.cc msgid "Total distinct versions: " @@ -2547,6 +2549,7 @@ msgstr "Συνολικός Καταμετρημένος Χώρος: " #: cmdline/apt-cache.cc msgid "This command is deprecated. Please use 'apt-mark showauto' instead." msgstr "" +"Αυτή η εντολή είναι παρωχημένη. Παρακαλώ χρησιμοποιήστε 'apt-mark showauto'." #: cmdline/apt-cache.cc msgid "" @@ -2595,9 +2598,8 @@ msgstr "" "Παρακαλώ δώστε ένα όνομα για αυτόν τον δίσκο, όπως 'Debian 5.0.3 Disk 1'" #: cmdline/apt-cdrom.cc -#, fuzzy msgid "Please insert a Disc in the drive and press [Enter]" -msgstr "Παρακαλώ εισάγετε το δίσκο στη συσκευή και πατήστε enter" +msgstr "Παρακαλώ εισάγετε δίσκο στον οδηγό και πατήστε [Enter}" #: cmdline/apt-cdrom.cc #, c-format @@ -2630,7 +2632,6 @@ msgid "Arguments not in pairs" msgstr "Τα ορίσματα δεν είναι σε ζεύγη" #: cmdline/apt-config.cc -#, fuzzy msgid "" "Usage: apt-config [options] command\n" "\n" @@ -2639,8 +2640,10 @@ msgid "" msgstr "" "Χρήση: apt-config [επιλογές] εντολή\n" "\n" -"το apt-config είναι ένα απλό εργαλείο για την ανάγνωση του αρχείου ρυθμίσεων " -"APT\n" +"το apt-config είναι μια διεπαφή στις προσαρμοσμένες ρυθμίσεις που " +"χρησιμοποιούνται από όλα\n" +"τα εργαλεία APT, με κύριο σκοπό την αποσφαλμάτωση και την δημιουργία " +"σεναρίων κελύφους.\n" #: cmdline/apt-config.cc msgid "get configuration values via shell evaluation" @@ -2659,7 +2662,6 @@ msgid "" msgstr "" #: cmdline/apt-extracttemplates.cc -#, fuzzy msgid "" "Usage: apt-extracttemplates file1 [file2 ...]\n" "\n" @@ -2669,14 +2671,9 @@ msgid "" msgstr "" "Χρήση: apt-extracttemplates αρχείο1 [αρχείο2 ...]\n" "\n" -"το apt-extracttemplates είναι ένα βοήθημα για να εξάγετε ρυθμίσεις \n" -"και πρότυπα από πακέτα debian\n" -"\n" -"Επιλογές:\n" -" -h Το παρόν κείμενο βοήθειας\n" -" -t Καθορισμός προσωρινού καταλόγου\n" -" -c=? Ανάγνωση αυτού του αρχείου ρυθμίσεων\n" -" -o=? Καθορισμός αυθαίρετης επιλογής παραμέτρου, πχ -o dir::cache=/tmp\n" +"το apt-extracttemplates χρησιμοποιείται για να εξάγετε αρχεία προτύπων\n" +"και ρυθμίσεις από πακέτα debian. Χρησιμοποιείται κυρίως από το debconf(1)\n" +"για προτροπή ερωτήσεων προσαρμογής πριν την εγκατάσταση πακέτων.\n" #: cmdline/apt-extracttemplates.cc msgid "Cannot get debconf version. Is debconf installed?" @@ -2709,7 +2706,6 @@ msgid "Supported modules:" msgstr "Υποστηριζόμενοι Οδηγοί:" #: cmdline/apt-get.cc -#, fuzzy msgid "" "Usage: apt-get [options] command\n" " apt-get [options] install|remove pkg1 [pkg2 ...]\n" @@ -2724,9 +2720,10 @@ msgstr "" " apt-get [παράμετροι] install|remove pkg1 [pkg2 ...]\n" " apt-get [παράμετροι] source pkg1 [pkg2 ...]\n" "\n" -"η apt-get είναι μια απλή διασύνδεση για τη μεταφόρτωση και την\n" -"εγκατάσταση πακέτων. Οι πιο συχνές εντολές είναι η update\n" -"και η install.\n" +"η apt-get είναι μια διεπαφή της γραμμής εντολών για την ανάκτηση\n" +"πακέτων και πληροφοριών σχετικά με αυτά, από πιστοποιημένες πηγές\n" +"και για εγκατάσταση, αναβάθμιση και αφαίρεση πακέτων μαζί με τις\n" +"εξαρτήσεις τους.\n" #: cmdline/apt-get.cc msgid "Retrieve new lists of packages" @@ -2741,10 +2738,8 @@ msgid "Install new packages (pkg is libc6 not libc6.deb)" msgstr "Εγκατάσταση νέων πακέτων (χωρίς την επέκταση .deb)" #: cmdline/apt-get.cc -#, fuzzy -#| msgid "Install new packages (pkg is libc6 not libc6.deb)" msgid "Reinstall packages (pkg is libc6 not libc6.deb)" -msgstr "Εγκατάσταση νέων πακέτων (χωρίς την επέκταση .deb)" +msgstr "Επανεγκατάσταση πακέτων (το pkg είναι libc6 όχι libc6.deb)" #: cmdline/apt-get.cc msgid "Remove packages" @@ -2752,12 +2747,11 @@ msgstr "Αφαίρεση πακέτων" #: cmdline/apt-get.cc msgid "Remove packages and config files" -msgstr "" +msgstr "Αφαίρεση πακέτων και αρχείων ρυθμίσεων" #: cmdline/apt-get.cc cmdline/apt.cc -#, fuzzy msgid "Remove automatically all unused packages" -msgstr "το %s έχει εγκατασταθεί αυτόματα\n" +msgstr "Αυτόματη αφαίρεση όλων των μη χρησιμοποιούμενων πακέτων" #: cmdline/apt-get.cc msgid "Distribution upgrade, see apt-get(8)" @@ -2772,10 +2766,8 @@ msgid "Configure build-dependencies for source packages" msgstr "Ρύθμιση εξαρτήσεων χτισίματος για πακέτα πηγαίου κώδικα" #: cmdline/apt-get.cc -#, fuzzy -#| msgid "Building dependency tree" msgid "Satisfy dependency strings" -msgstr "Κατασκευή Δένδρου Εξαρτήσεων" +msgstr "Εκπλήρωση των συμβολοσειρών εξαρτήσεων" #: cmdline/apt-get.cc msgid "Erase downloaded archive files" @@ -2795,31 +2787,28 @@ msgstr "Μεταφόρτωση πακέτων πηγαίου κώδικα" #: cmdline/apt-get.cc msgid "Download the binary package into the current directory" -msgstr "" +msgstr "Λήψη του δυαδικού πακέτου μέσα στον τρέχοντα κατάλογο" #: cmdline/apt-get.cc msgid "Download and display the changelog for the given package" -msgstr "" +msgstr "Λήψη και εμφάνιση του changelog για το δοθέν πακέτο" #: cmdline/apt-helper.cc msgid "Need one URL as argument" -msgstr "" +msgstr "Χρειάζεται ένα URL ως παράμετρο" #: cmdline/apt-helper.cc -#, fuzzy msgid "Must specify at least one pair url/filename" -msgstr "" -"Θα πρέπει να καθορίσετε τουλάχιστον ένα πακέτο για να μεταφορτώσετε τον " -"κωδικάτου" +msgstr "Πρέπει να προσδιορίσετε τουλάχιστον ένα ζεύγος url/αρχείου" #: cmdline/apt-helper.cc msgid "Download Failed" -msgstr "" +msgstr "Η λήψη απέτυχε" #: cmdline/apt-helper.cc #, c-format msgid "GetSrvRec failed for %s" -msgstr "" +msgstr "Το GetSrvRec απέτυχε για το %s" #: cmdline/apt-helper.cc msgid "" @@ -2849,7 +2838,7 @@ msgstr "" #: cmdline/apt-helper.cc msgid "wait for system to be online" -msgstr "" +msgstr "αναμονή μέχρι το σύστημα να είναι online" #: cmdline/apt-helper.cc msgid "drop privileges before running given command" @@ -2857,10 +2846,9 @@ msgstr "" #: cmdline/apt-helper.cc msgid "analyse a pattern" -msgstr "" +msgstr "ανάλυση μοτίβου" #: cmdline/apt-internal-planner.cc -#, fuzzy msgid "" "Usage: apt-internal-planner\n" "\n" @@ -2868,19 +2856,13 @@ msgid "" "installation planner for the APT family like an external one,\n" "for debugging or the like.\n" msgstr "" -"Χρήση: apt-extracttemplates αρχείο1 [αρχείο2 ...]\n" +"Χρήση: apt-internal-planner\n" "\n" -"το apt-extracttemplates είναι ένα βοήθημα για να εξάγετε ρυθμίσεις \n" -"και πρότυπα από πακέτα debian\n" -"\n" -"Επιλογές:\n" -" -h Το παρόν κείμενο βοήθειας\n" -" -t Καθορισμός προσωρινού καταλόγου\n" -" -c=? Ανάγνωση αυτού του αρχείου ρυθμίσεων\n" -" -o=? Καθορισμός αυθαίρετης επιλογής παραμέτρου, πχ -o dir::cache=/tmp\n" +"το apt-internal-planner είναι μια διεπαφή για χρήση του τρέχοντος\n" +"installation planner για την οικογένεια APT, όπως ένα εξωτερικό,\n" +"για αποσφαλμάτωση και τα σχετικά.\n" #: cmdline/apt-internal-solver.cc -#, fuzzy msgid "" "Usage: apt-internal-solver\n" "\n" @@ -2888,65 +2870,58 @@ msgid "" "resolver for the APT family like an external one, for debugging or\n" "the like.\n" msgstr "" -"Χρήση: apt-extracttemplates αρχείο1 [αρχείο2 ...]\n" +"Χρήση: apt-internal-solver\n" "\n" -"το apt-extracttemplates είναι ένα βοήθημα για να εξάγετε ρυθμίσεις \n" -"και πρότυπα από πακέτα debian\n" -"\n" -"Επιλογές:\n" -" -h Το παρόν κείμενο βοήθειας\n" -" -t Καθορισμός προσωρινού καταλόγου\n" -" -c=? Ανάγνωση αυτού του αρχείου ρυθμίσεων\n" -" -o=? Καθορισμός αυθαίρετης επιλογής παραμέτρου, πχ -o dir::cache=/tmp\n" +"Το apt-internal-solver είναι μια διεπαφή για χρήση του τρέχοντος εσωτερικού\n" +"resolver για την οικογένεια APT, όπως ένα εξωτερικό, για αποσφαλμάτωση ή\n" +"σχετικά.\n" #: cmdline/apt-mark.cc -#, fuzzy, c-format +#, c-format msgid "%s can not be marked as it is not installed.\n" -msgstr "αλλά δεν είναι εγκατεστημένο" +msgstr "Το %s δεν μπορεί να σημειωθεί καθώς δεν είναι εγκατεστημένο.\n" #: cmdline/apt-mark.cc -#, fuzzy, c-format +#, c-format msgid "%s was already set to manually installed.\n" -msgstr "το %s έχει εγκατασταθεί με το χέρι\n" +msgstr "Το %s έχει ήδη ορισθεί ως εγκατεστημένο χειρωνακτικά.\n" #: cmdline/apt-mark.cc -#, fuzzy, c-format +#, c-format msgid "%s was already set to automatically installed.\n" -msgstr "το %s έχει εγκατασταθεί με το χέρι\n" +msgstr "Το %s έχει ήδη ορισθεί να εγκατασταθεί αυτόματα.\n" #: cmdline/apt-mark.cc msgid "No changes necessary" msgstr "" #: cmdline/apt-mark.cc -#, fuzzy -#| msgid "The following NEW packages will be installed:" msgid "The following packages will be marked as automatically installed:" -msgstr "Τα ακόλουθα ΝΕΑ πακέτα θα εγκατασταθούν:" +msgstr "Τα ακόλουθα πακέτα θα σημειωθούν ως αυτόματα εγκατεστημένα:" #: cmdline/apt-mark.cc -#, fuzzy, c-format +#, c-format msgid "%s was already set on hold.\n" -msgstr "το %s είναι ήδη η τελευταία έκδοση.\n" +msgstr "το %s ήταν ήδη ορισμένο σε κράτηση.\n" #: cmdline/apt-mark.cc -#, fuzzy, c-format +#, c-format msgid "%s was already not hold.\n" -msgstr "το %s είναι ήδη η τελευταία έκδοση.\n" +msgstr "το %s ήταν ήδη χωρίς κράτηση.\n" #: cmdline/apt-mark.cc msgid "Executing dpkg failed. Are you root?" -msgstr "" +msgstr "Η εκτέλεση του dpkg απέτυχε. Είστε root;" #: cmdline/apt-mark.cc -#, fuzzy, c-format +#, c-format msgid "%s set on hold.\n" -msgstr "το %s έχει εγκατασταθεί με το χέρι\n" +msgstr "το %s ορίστηκε σε κράτηση.\n" #: cmdline/apt-mark.cc -#, fuzzy, c-format +#, c-format msgid "Canceled hold on %s.\n" -msgstr "Αποτυχία ανοίγματος του %s" +msgstr "Ακύρωση κράτησης του %s\n" #: cmdline/apt-mark.cc #, c-format @@ -2956,12 +2931,12 @@ msgstr "" #: cmdline/apt-mark.cc #, c-format msgid "Selected %s for removal.\n" -msgstr "" +msgstr "Επιλέχθηκαν %s για αφαίρεση.\n" #: cmdline/apt-mark.cc #, c-format msgid "Selected %s for installation.\n" -msgstr "" +msgstr "Επιλέχθηκαν %s για εγκατάσταση.\n" #: cmdline/apt-mark.cc msgid "" @@ -2974,19 +2949,17 @@ msgid "" msgstr "" #: cmdline/apt-mark.cc -#, fuzzy msgid "Mark the given packages as automatically installed" -msgstr "το %s έχει εγκατασταθεί αυτόματα\n" +msgstr "Σημείωση των δοθέντων πακέτων ως αυτόματα εγκατεστημένων" #: cmdline/apt-mark.cc -#, fuzzy msgid "Mark the given packages as manually installed" -msgstr "Ελέγξτε αν είναι εγκαταστημένο το πακέτο 'dpkg-dev'.\n" +msgstr "Σημείωση των δοθέντων πακέτων ως εγκατεστημένων χειρονακτικά" #: cmdline/apt-mark.cc -#, fuzzy msgid "Mark all dependencies of meta packages as automatically installed." -msgstr "το %s έχει εγκατασταθεί αυτόματα\n" +msgstr "" +"Σημείωση όλων των εξαρτήσεων των μετα-πακέτων ως εγκατεστημένα αυτόματα." #: cmdline/apt-mark.cc msgid "Mark a package as held back" @@ -2997,18 +2970,16 @@ msgid "Unset a package set as held back" msgstr "" #: cmdline/apt-mark.cc -#, fuzzy msgid "Print the list of automatically installed packages" -msgstr "το %s έχει εγκατασταθεί αυτόματα\n" +msgstr "Εκτύπωση της λίστας των αυτόματα εγκατεστημένων πακέτων" #: cmdline/apt-mark.cc -#, fuzzy msgid "Print the list of manually installed packages" -msgstr "το %s έχει εγκατασταθεί με το χέρι\n" +msgstr "Εκτύπωση της λίστας των χειρωνακτικά εγκαταστημένων πακέτων" #: cmdline/apt-mark.cc msgid "Print the list of packages on hold" -msgstr "" +msgstr "Εκτύπωση της λίστας των πακέτων υπό κράτηση" #: cmdline/apt-sortpkgs.cc msgid "Unknown package record!" @@ -3037,81 +3008,71 @@ msgstr "" #. query #: cmdline/apt.cc msgid "list packages based on package names" -msgstr "" +msgstr "λίστα πακέτων βασισμένη στα ονόματα πακέτων" #: cmdline/apt.cc -#, fuzzy msgid "search in package descriptions" -msgstr "Ανάγνωση Λιστών Πακέτων" +msgstr "αναζήτηση στις περιγραφές των πακέτων" #: cmdline/apt.cc msgid "show package details" -msgstr "" +msgstr "εμφάνιση λεπτομερειών πακέτου" #. package stuff #: cmdline/apt.cc -#, fuzzy msgid "install packages" -msgstr "Καθηλωμένα Πακέτα:" +msgstr "εγκατάσταση πακέτων" #: cmdline/apt.cc -#, fuzzy msgid "reinstall packages" -msgstr "Καθηλωμένα Πακέτα:" +msgstr "επανεγκατάσταση πακέτων" #: cmdline/apt.cc -#, fuzzy msgid "remove packages" -msgstr "Χαλασμένα πακέτα" +msgstr "αφαίρεση πακέτων" #. system wide stuff #: cmdline/apt.cc -#, fuzzy msgid "update list of available packages" -msgstr "το %s έχει εγκατασταθεί με το χέρι\n" +msgstr "ενημέρωση λίστας διαθέσιμων πακέτων" #: cmdline/apt.cc msgid "upgrade the system by installing/upgrading packages" -msgstr "" +msgstr "αναβάθμιση του συστήματος με εγκατάσταση/αναβάθμιση πακέτων" #: cmdline/apt.cc msgid "upgrade the system by removing/installing/upgrading packages" msgstr "" +"αναβάθμιση του συστήματος με την αφαίρεση/εγκατάσταση/αναβάθμιση πακέτων" #. misc #: cmdline/apt.cc -#, fuzzy msgid "edit the source information file" -msgstr "Ανάγνωση περιγραφής της τρέχουσας κατάσταση" +msgstr "επεξεργασία του αρχείου με τις πληροφορίες πηγής" #: cmdline/apt.cc -#, fuzzy -#| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" -msgstr "Αποτυχία ικανοποίησης %s εξάρτησης για το %s: %s" +msgstr "εκπλήρωση των συμβολοσειρών εξαρτήσεων" #: dselect/install msgid "Bad default setting!" msgstr "Κακή προκαθορισμένη ρύθμιση!" #: dselect/install dselect/update -#, fuzzy msgid "Press [Enter] to continue." -msgstr "Πιέστε enter για συνέχεια." +msgstr "Πατήστε [Enter] για συνέχεια." #: dselect/install msgid "Do you want to erase any previously downloaded .deb files?" msgstr "Επιθυμείτε τη διαγραφή ήδη μεταφορτωμένων αρχείων .deb;" #: dselect/install -#, fuzzy msgid "Some errors occurred while unpacking. Packages that were installed" -msgstr "Προέκυψανσφάλματα κατά την αποσυμπίεση. Θα ρυθμίσω τα " +msgstr "Προέκυψαν σφάλματα κατά την αποσυμπίεση. Τα πακέτα που εγκαταστάθηκαν" #: dselect/install -#, fuzzy msgid "will be configured. This may result in duplicate errors" -msgstr "πακέτα που εγκαταστάθηκαν. Αυτό μπορεί να παράγει διπλά λάθη" +msgstr "θα ρυθμιστούν. Αυτό μπορεί να έχει ως αποτέλεσμα διπλότυπα σφάλματα" #: dselect/install msgid "or errors caused by missing dependencies. This is OK, only the errors" @@ -3256,13 +3217,12 @@ msgid "DB is old, attempting to upgrade %s" msgstr "Η βάση δεν είναι ενημερωμένη, γίνεται προσπάθεια να αναβαθμιστεί το %s" #: ftparchive/cachedb.cc -#, fuzzy msgid "" "DB format is invalid. If you upgraded from an older version of apt, please " "remove and re-create the database." msgstr "" -"Το φορμά της βάσης δεν είναι έγκυρο. Εάν αναβαθμίσατε το apt σε νεότερη " -"έκδοση, παρακαλώ αφαιρέστε και δημιουργήστε τη βάση εκ νέου." +"Η μορφή της βάσης δεν είναι έγκυρη. Εάν αναβαθμίσατε το apt από παλαιότερη " +"έκδοση, παρακαλώ αφαιρέστε και ξαναδημιουργήστε τη βάση δεδομένων." #: ftparchive/cachedb.cc #, c-format @@ -3270,9 +3230,8 @@ msgid "Unable to open DB file %s: %s" msgstr "Το άνοιγμά του αρχείου της βάσης %s: %s απέτυχε" #: ftparchive/cachedb.cc -#, fuzzy msgid "Failed to read .dsc" -msgstr "Αποτυχία ανάγνωσης του %s" +msgstr "Αποτυχία ανάγνωσης .dsc" #: ftparchive/cachedb.cc msgid "Archive has no control record" @@ -3334,9 +3293,9 @@ msgstr "Αδύνατο το άνοιγμα του %s" #. skip spaces #. find end of word #: ftparchive/override.cc -#, fuzzy, c-format +#, c-format msgid "Malformed override %s line %llu (%s)" -msgstr "Κακογραμμένη παρακαμπτήρια %s γραμμή %lu #1" +msgstr "Κακογραμμένη παράκαμψη %s γραμμή %llu (%s)" #: ftparchive/override.cc #, c-format @@ -3344,19 +3303,19 @@ msgid "Failed to read the override file %s" msgstr "Αποτυχία ανάγνωσης του αρχείου παράκαμψης %s" #: ftparchive/override.cc -#, fuzzy, c-format +#, c-format msgid "Malformed override %s line %llu #1" -msgstr "Κακογραμμένη παρακαμπτήρια %s γραμμή %lu #1" +msgstr "Κακογραμμένη παρακαμπτήρια %s γραμμή %llu #1" #: ftparchive/override.cc -#, fuzzy, c-format +#, c-format msgid "Malformed override %s line %llu #2" -msgstr "Κακογραμμένη παρακαμπτήρια %s γραμμή %lu #2" +msgstr "Κακογραμμένη παρακαμπτήρια %s γραμμή %llu #2" #: ftparchive/override.cc -#, fuzzy, c-format +#, c-format msgid "Malformed override %s line %llu #3" -msgstr "Κακογραμμένη παρακαμπτήρια %s γραμμή %lu #3" +msgstr "Κακογραμμένη παρακαμπτήρια %s γραμμή %llu #3" #: ftparchive/writer.cc #, c-format @@ -3378,7 +3337,7 @@ msgstr "W: " #: ftparchive/writer.cc msgid "E: Errors apply to file " -msgstr "E: Σφάλματα στο αρχείο" +msgstr "E: Σφάλματα στο αρχείο " #: ftparchive/writer.cc #, c-format @@ -3397,12 +3356,12 @@ msgstr "Αποτυχία ανοίγματος του %s" #: ftparchive/writer.cc #, c-format msgid " DeLink %s [%s]\n" -msgstr "Αποσύνδεση %s [%s]\n" +msgstr " Αποσύνδεση %s [%s]\n" #: ftparchive/writer.cc #, c-format msgid "*** Failed to link %s to %s" -msgstr " Αποτυχία σύνδεσης του %s με το %s" +msgstr "Αποτυχία σύνδεσης του %s με το %s" #: ftparchive/writer.cc #, c-format @@ -3527,10 +3486,9 @@ msgid "[IP: %s %s]" msgstr "[IP: %s %s]" #: methods/connect.cc -#, fuzzy, c-format -#| msgid "Connecting to %s (%s)" +#, c-format msgid "Connected to %s (%s)" -msgstr "Σύνδεση στο %s (%s)" +msgstr "Συνδέθηκε στο %s (%s)" #: methods/connect.cc methods/http.cc #, c-format @@ -3579,19 +3537,19 @@ msgid "Temporary failure resolving '%s'" msgstr "Προσωρινή αποτυχία στην εύρεση του '%s'" #: methods/connect.cc -#, fuzzy, c-format +#, c-format msgid "System error resolving '%s:%s'" -msgstr "Κάτι παράξενο συνέβη κατά την εύρεση του '%s:%s' (%i)" +msgstr "Σφάλμα συστήματος κατά την επίλυση '%s:%s'" #: methods/connect.cc -#, fuzzy, c-format +#, c-format msgid "Something wicked happened resolving '%s:%s' (%i - %s)" -msgstr "Κάτι παράξενο συνέβη κατά την εύρεση του '%s:%s' (%i)" +msgstr "Κάτι παράξενο συνέβη κατά την επίλυση του '%s:%s' (%i - %s)" #: methods/connect.cc -#, fuzzy, c-format +#, c-format msgid "Unable to connect to %s:%s:" -msgstr "Αδύνατη η σύνδεση στο %s %s:" +msgstr "Αδύνατη η σύνδεση στο %s:%s:" #: methods/copy.cc msgid "Failed to stat" @@ -3635,7 +3593,7 @@ msgid "" "is empty." msgstr "" "Ο διαμεσολαβητής έχει οριστεί αλλά χωρίς σενάριο εισόδου, το Acquire::ftp::" -"ProxyLogin είναι άδειο" +"ProxyLogin είναι άδειο." #: methods/ftp.cc #, c-format @@ -3677,7 +3635,7 @@ msgstr "Αδύνατη η σύνδεση σε παθητική υποδοχή (s #: methods/ftp.cc msgid "getaddrinfo was unable to get a listening socket" -msgstr "Το getaddrinfo ήταν αδύνατο να δέσμευση υποδοχή παρακολούθησης" +msgstr "Το getaddrinfo ήταν αδύνατο να δεσμεύσει υποδοχή παρακολούθησης" #: methods/ftp.cc msgid "Could not bind a socket" @@ -3738,7 +3696,7 @@ msgstr "Επερώτηση" #: methods/ftp.cc msgid "Unable to invoke " -msgstr "Αδύνατη η εκτέλεση" +msgstr "Αδύνατη η επίκληση " #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc @@ -3759,10 +3717,9 @@ msgstr "" "αποτυπώματος?!" #: methods/gpgv.cc -#, fuzzy msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" msgstr "" -"Αδυναμία εκτέλεσης του '%s' για την επαλήθευση της υπογραφής (είναι " +"Δεν μπόρεσε να εκτελεστεί το 'apt-key' για επιβεβαίωση της υπογραφής (είναι " "εγκατεστημένο το gnupg;)" #: methods/gpgv.cc diff --git a/test/integration/framework b/test/integration/framework index 20173da23..3973ad863 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -504,7 +504,7 @@ EOF unset http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy # Make dpkg inherit testing path - echo 'DPkg::Path "";\n' >> aptconfig.conf + echo 'DPkg::Path "";' >> aptconfig.conf # Make gcov shut up export GCOV_ERROR_FILE=/dev/null diff --git a/test/integration/test-kernel-helper-autoremove b/test/integration/test-kernel-helper-autoremove index 9cc978645..8dac44b93 100755 --- a/test/integration/test-kernel-helper-autoremove +++ b/test/integration/test-kernel-helper-autoremove @@ -38,9 +38,8 @@ testprotected() { testsuccess --nomsg test -e rootdir/etc/apt/apt.conf.d/01autoremove-kernels testfilestats 'rootdir/etc/apt/apt.conf.d/01autoremove-kernels' '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:444" - msgtest 'Check kernel autoremoval protection list' 'can be dumped' - testsuccess --nomsg aptconfig dump --no-empty --format '%v%n' 'APT::NeverAutoRemove' - cp rootdir/tmp/testsuccess.output protected.list + testsuccess --nomsg apt -o Debug::PkgAutoRemove=1 autoremove -s + grep "Kernel protection regex" rootdir/tmp/testsuccess.output | cut -f2- -d: | tr '|' '\n' | sed 's/\s*//g' | sort -u > protected.list msgtest 'Check kernel autoremoval protection list' 'can be parsed' testfailure --nomsg grep '^[A-Z]: ' protected.list @@ -71,7 +70,7 @@ The following packages were automatically installed and are no longer required: ${CURRENTKERNEL}-686-pae:i386 (5-1) ${CURRENTKERNEL}-dbg (5-1) Use '$AUTOREMOVE' to remove them. -0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -sV +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -sV -o APT::Protect-Kernels=0 testsuccessequal "Reading package lists... Building dependency tree... Reading state information... @@ -85,13 +84,13 @@ The following packages were automatically installed and are no longer required: ${CURRENTKERNEL}-dbg (5-1) ${CURRENTKERNEL}-rt (5-1) Use '$AUTOREMOVE' to remove them. -0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -sV --ignore-hold +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -sV --ignore-hold -o APT::Protect-Kernels=0 testequal "Reading package lists... Building dependency tree... Reading state information... 7 packages were automatically installed and are no longer required. Use '$AUTOREMOVE' to remove them. -0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -s -o APT::Get::HideAutoRemove=small +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -s -o APT::Get::HideAutoRemove=small -o APT::Protect-Kernels=0 testequal "Reading package lists... Building dependency tree... Reading state information... @@ -110,7 +109,7 @@ Remv linux-image-100.0.0-1-generic [100.0.0-1] Remv $CURRENTKERNEL [5-1] Remv ${CURRENTKERNEL}+variant [5-1] Remv ${CURRENTKERNEL}-686-pae:i386 [5-1] -Remv ${CURRENTKERNEL}-dbg [5-1]" aptget autoremove -sV +Remv ${CURRENTKERNEL}-dbg [5-1]" aptget autoremove -sV -o APT::Protect-Kernels=0 msgmsg "run without parameter" testprotected @@ -168,7 +167,7 @@ Remv ${CURRENTKERNEL}-dbg [5-1]" aptget autoremove -s unset COLUMNS # rt kernel was put on hold while the protected list was generated -testsuccess aptmark unhold "${CURRENTKERNEL}-rt" +testsuccess aptmark hold "${CURRENTKERNEL}-rt" export COLUMNS=99999 testsuccessequal "Reading package lists... Building dependency tree... |