diff options
-rw-r--r-- | apt-pkg/acquire-method.cc | 31 | ||||
-rw-r--r-- | apt-pkg/acquire-worker.cc | 2 | ||||
-rw-r--r-- | apt-pkg/tagfile.cc | 8 | ||||
-rw-r--r-- | apt-private/private-cmndline.cc | 6 | ||||
-rw-r--r-- | apt-private/private-install.cc | 4 | ||||
-rw-r--r-- | apt-private/private-json-hooks.cc | 2 | ||||
-rw-r--r-- | cmdline/apt-get.cc | 1 | ||||
-rw-r--r-- | cmdline/apt.cc | 1 | ||||
-rw-r--r-- | doc/apt-get.8.xml | 4 | ||||
-rw-r--r-- | doc/apt.8.xml | 2 | ||||
-rw-r--r-- | po/fr.po | 132 | ||||
-rw-r--r-- | po/ru.po | 14 | ||||
-rwxr-xr-x | test/integration/test-apt-sources-deb822 | 68 | ||||
-rw-r--r-- | test/libapt/tagfile_test.cc | 2 |
14 files changed, 186 insertions, 91 deletions
diff --git a/apt-pkg/acquire-method.cc b/apt-pkg/acquire-method.cc index c67c47ab8..ae5ae4a15 100644 --- a/apt-pkg/acquire-method.cc +++ b/apt-pkg/acquire-method.cc @@ -88,6 +88,37 @@ pkgAcqMethod::pkgAcqMethod(const char *Ver,unsigned long Flags) /*}}}*/ void pkgAcqMethod::SendMessage(std::string const &header, std::unordered_map<std::string, std::string> &&fields) /*{{{*/ { + auto CheckKey = [](std::string const &str) { + // Space, hyphen-minus, and alphanum are allowed for keys/headers. + return str.find_first_not_of(" -0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz") == std::string::npos; + }; + + auto CheckValue = [](std::string const &str) { + return std::all_of(str.begin(), str.end(), [](unsigned char c) -> bool { + return c > 127 // unicode + || (c > 31 && c < 127) // printable chars + || c == '\n' || c == '\t'; // special whitespace + }); + }; + + auto Error = [this]() { + _error->Error("SECURITY: Message contains control characters, rejecting."); + _error->DumpErrors(); + SendMessage("400 URI Failure", {{"URI", "<UNKNOWN>"}, {"Message", "SECURITY: Message contains control characters, rejecting."}}); + abort(); + }; + + if (!CheckKey(header)) + return Error(); + + for (auto const &f : fields) + { + if (!CheckKey(f.first)) + return Error(); + if (!CheckValue(f.second)) + return Error(); + } + std::cout << header << '\n'; for (auto const &f : fields) { diff --git a/apt-pkg/acquire-worker.cc b/apt-pkg/acquire-worker.cc index c2bbf8bed..b36186121 100644 --- a/apt-pkg/acquire-worker.cc +++ b/apt-pkg/acquire-worker.cc @@ -98,6 +98,8 @@ bool pkgAcquire::Worker::Start() std::string Method; if (_config->Exists(confItem)) Method = _config->FindFile(confItem.c_str()); + else if (Access == "ftp" || Access == "rsh" || Access == "ssh") + return _error->Error(_("The method '%s' is unsupported and disabled by default. Consider switching to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."), Access.c_str(), Access.c_str(), Access.c_str()); else Method = _config->FindDir(methodsDir) + Access; if (FileExists(Method) == false) diff --git a/apt-pkg/tagfile.cc b/apt-pkg/tagfile.cc index 98001afd1..1e7f2867c 100644 --- a/apt-pkg/tagfile.cc +++ b/apt-pkg/tagfile.cc @@ -250,8 +250,12 @@ bool pkgTagFile::Step(pkgTagSection &Tag) d->chunks.erase(d->chunks.begin(), first); } - Tag.Trim(); - return true; + if ((d->Flags & pkgTagFile::SUPPORT_COMMENTS) == 0 || Tag.Count() != 0) + { + Tag.Trim(); + return true; + } + return Step(Tag); } /*}}}*/ // TagFile::Fill - Top up the buffer /*{{{*/ diff --git a/apt-private/private-cmndline.cc b/apt-private/private-cmndline.cc index 87deb6bf0..494928332 100644 --- a/apt-private/private-cmndline.cc +++ b/apt-private/private-cmndline.cc @@ -175,7 +175,7 @@ static bool addArgumentsAPTHelper(std::vector<CommandLine::Args> &Args, char con /*}}}*/ static bool addArgumentsAPTGet(std::vector<CommandLine::Args> &Args, char const * const Cmd)/*{{{*/ { - if (CmdMatches("install", "remove", "purge", "upgrade", "dist-upgrade", + if (CmdMatches("install", "reinstall", "remove", "purge", "upgrade", "dist-upgrade", "dselect-upgrade", "autoremove", "autopurge", "full-upgrade")) { addArg(0, "show-progress", "DpkgPM::Progress", 0); @@ -239,7 +239,7 @@ static bool addArgumentsAPTGet(std::vector<CommandLine::Args> &Args, char const else if (CmdMatches("moo")) addArg(0, "color", "APT::Moo::Color", 0); - if (CmdMatches("install", "remove", "purge", "upgrade", "dist-upgrade", + if (CmdMatches("install", "reinstall", "remove", "purge", "upgrade", "dist-upgrade", "dselect-upgrade", "autoremove", "auto-remove", "autopurge", "clean", "autoclean", "auto-clean", "check", "build-dep", "full-upgrade", "source")) { @@ -291,7 +291,7 @@ static bool addArgumentsAPTMark(std::vector<CommandLine::Args> &Args, char const { addArg('f',"file","Dir::State::extended_states",CommandLine::HasArg); } - else if (CmdMatches("install", "remove", "deinstall", "purge", + else if (CmdMatches("install", "reinstall", "remove", "deinstall", "purge", "showinstall", "showinstalls", "showremove", "showremoves", "showdeinstall", "showdeinstalls", "showpurge", "showpurges")) ; diff --git a/apt-private/private-install.cc b/apt-private/private-install.cc index 1713ff308..243b75b1c 100644 --- a/apt-private/private-install.cc +++ b/apt-private/private-install.cc @@ -586,7 +586,9 @@ bool DoCacheManipulationFromCommandLine(CommandLine &CmdL, std::vector<PseudoPkg Fix.reset(new pkgProblemResolver(Cache)); unsigned short fallback = MOD_INSTALL; - if (strcasecmp(CmdL.FileList[0],"remove") == 0) + if (strcasecmp(CmdL.FileList[0], "reinstall") == 0) + _config->Set("APT::Get::ReInstall", "true"); + else if (strcasecmp(CmdL.FileList[0],"remove") == 0) fallback = MOD_REMOVE; else if (strcasecmp(CmdL.FileList[0], "purge") == 0) { diff --git a/apt-private/private-json-hooks.cc b/apt-private/private-json-hooks.cc index b5c1a7172..65ff87924 100644 --- a/apt-private/private-json-hooks.cc +++ b/apt-private/private-json-hooks.cc @@ -387,7 +387,7 @@ bool RunJsonHook(std::string const &option, std::string const &method, const cha if (size < 0) { - if (errno != ECONNRESET) + if (errno != ECONNRESET && errno != EPIPE) _error->Error("Could not read response to hello message from hook %s: %s", Opts->Value.c_str(), strerror(errno)); goto out; } diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index 6d25ed509..da18d2d19 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -405,6 +405,7 @@ static std::vector<aptDispatchWithHelp> GetCommands() /*{{{*/ {"update", &DoUpdate, _("Retrieve new lists of packages")}, {"upgrade", &DoUpgrade, _("Perform an upgrade")}, {"install", &DoInstall, _("Install new packages (pkg is libc6 not libc6.deb)")}, + {"reinstall", &DoInstall, _("Reinstall packages (pkg is libc6 not libc6.deb)")}, {"remove", &DoInstall, _("Remove packages")}, {"purge", &DoInstall, _("Remove packages and config files")}, {"autoremove", &DoInstall, _("Remove automatically all unused packages")}, diff --git a/cmdline/apt.cc b/cmdline/apt.cc index f508406d1..d388e4af4 100644 --- a/cmdline/apt.cc +++ b/cmdline/apt.cc @@ -63,6 +63,7 @@ static std::vector<aptDispatchWithHelp> GetCommands() /*{{{*/ // package stuff {"install", &DoInstall, _("install packages")}, + {"reinstall", &DoInstall, _("reinstall packages")}, {"remove", &DoInstall, _("remove packages")}, {"autoremove", &DoInstall, _("Remove automatically all unused packages")}, {"auto-remove", &DoInstall, nullptr}, diff --git a/doc/apt-get.8.xml b/doc/apt-get.8.xml index 184282e69..b83eabd27 100644 --- a/doc/apt-get.8.xml +++ b/doc/apt-get.8.xml @@ -143,6 +143,10 @@ with a '^' or '$' character, or create a more specific regular expression.</para></listitem> </varlistentry> + <varlistentry><term><option>reinstall</option></term> + <listitem><para><literal>reinstall</literal> is an alias for <literal>install --reinstall</literal>.</para></listitem> + </varlistentry> + <varlistentry><term><option>remove</option></term> <listitem><para><literal>remove</literal> is identical to <literal>install</literal> except that packages are removed instead of installed. Note that removing a package leaves its diff --git a/doc/apt.8.xml b/doc/apt.8.xml index 626419ec3..08492bf54 100644 --- a/doc/apt.8.xml +++ b/doc/apt.8.xml @@ -69,7 +69,7 @@ </para></listitem> </varlistentry> - <varlistentry><term><option>install</option>, <option>remove</option>, <option>purge</option> (&apt-get;)</term> + <varlistentry><term><option>install</option>, <option>reinstall</option>, <option>remove</option>, <option>purge</option> (&apt-get;)</term> <listitem><para>Performs the requested action on one or more packages specified via ®ex;, &glob; or exact match. The requested action can be overridden for specific packages by append a plus (+) to the @@ -4,13 +4,14 @@ # # Pierre Machard <pmachard@tuxfamily.org>, 2002,2003,2004. # Christian Perrier <bubulle@debian.org>, 2004-2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013. -# Julien Patriarca <leatherface@debian.org>, 2013, 2017, 2018 +# Julien Patriarca <leatherface@debian.org>, 2013, 2017, 2018. +# Baptiste Jammet <baptiste@mailoo.org>, 2019. 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: 2019-01-23 16:49+0100\n" -"PO-Revision-Date: 2018-01-02 15:09+0100\n" +"POT-Creation-Date: 2018-12-18 15:02+0100\n" +"PO-Revision-Date: 2019-01-21 09:19+0100\n" "Last-Translator: Julien Patriarca <leatherface@debian.org>\n" "Language-Team: French <debian-l10n-french@lists.debian.org>\n" "Language: fr\n" @@ -22,7 +23,7 @@ msgstr "" #: apt-inst/contrib/arfile.cc msgid "Invalid archive signature" -msgstr "Signature d'archive invalide" +msgstr "Signature d'archive non valable" #: apt-inst/contrib/arfile.cc msgid "Error reading archive member header" @@ -35,7 +36,7 @@ msgstr "En-tête du membre d'archive %s non valable" #: apt-inst/contrib/arfile.cc msgid "Invalid archive member header" -msgstr "En-tête du membre d'archive non-valable" +msgstr "En-tête du membre d'archive non valable" #: apt-inst/contrib/arfile.cc msgid "Archive is too short" @@ -66,7 +67,7 @@ msgstr "Type d'en-tête %u inconnu pour TAR, partie %s" #: apt-inst/deb/debfile.cc #, c-format msgid "This is not a valid DEB archive, missing '%s' member" -msgstr "Ce n'est pas une archive DEB valide, partie « %s » manquante" +msgstr "Ce n'est pas une archive DEB valable, partie « %s » manquante" #: apt-inst/deb/debfile.cc #, c-format @@ -196,7 +197,7 @@ msgid "" "disabled by default." msgstr "" "Les mises à jour depuis un tel dépôt ne peuvent s'effectuer de manière " -"sécurisée, et sont donc désactivées par défaut" +"sécurisée, et sont donc désactivées par défaut." #: apt-pkg/acquire-item.cc msgid "" @@ -273,7 +274,7 @@ msgstr "Taille incohérente" #: apt-pkg/acquire-item.cc msgid "Invalid file format" -msgstr "Format de fichier invalide" +msgstr "Format de fichier non valable" #: apt-pkg/acquire-item.cc msgid "Signature error" @@ -321,7 +322,7 @@ msgid "" "architecture '%s'" msgstr "" "Le fichier configuré « %s » ne sera pas pris en compte car le dépôt « %s » " -"ne supporte pas l'architecture « %s »" +"ne prend pas en charge l'architecture « %s »" #: apt-pkg/acquire-item.cc #, c-format @@ -350,14 +351,14 @@ msgid "" "Release file for %s is expired (invalid since %s). Updates for this " "repository will not be applied." msgstr "" -"Le fichier « Release » pour %s a expiré (invalide depuis %s). Les mises à " +"Le fichier « Release » pour %s est périmé (invalide depuis %s). Les mises à " "jour depuis ce dépôt ne s'effectueront pas." #. TRANSLATOR: The first %s is the URL of the bad Release file, the second is #. the time until the file will be valid - formatted in the same way as in #. the download progress display (e.g. 7d 3h 42min 1s) #: apt-pkg/acquire-item.cc -#, fuzzy, c-format +#, c-format #| msgid "" #| "Release file for %s is expired (invalid since %s). Updates for this " #| "repository will not be applied." @@ -365,8 +366,8 @@ msgid "" "Release file for %s is not valid yet (invalid for another %s). Updates for " "this repository will not be applied." msgstr "" -"Le fichier « Release » pour %s a expiré (invalide depuis %s). Les mises à " -"jour depuis ce dépôt ne s'effectueront pas." +"Le fichier « Release » pour %s n'est pas encore valable (invalide pendant " +"encore %s). Les mises à jour depuis ce dépôt ne s'effectueront pas." #: apt-pkg/acquire-item.cc #, c-format @@ -439,7 +440,7 @@ msgstr "La méthode « %s » est volontairement désactivée par configuration #, c-format msgid "If you meant to use Tor remember to use %s instead of %s." msgstr "" -".Si vous souhaitiez utiliser Tor veuillez alors utiliser « %s » plutôt que " +".Si vous souhaitiez utiliser Tor, veuillez alors utiliser « %s » plutôt que " "« %s »." #: apt-pkg/acquire-worker.cc @@ -729,8 +730,8 @@ msgid "" "Command line option '%c' [from %s] is not understood in combination with the " "other options." msgstr "" -"L'option « %c » de la ligne de commande [%s] est inconnue quand elle est " -"utilisée avec d'autres options." +"L'option « %c » de la ligne de commande [%s] n'est pas reconnue quand elle " +"est utilisée avec d'autres options." #: apt-pkg/contrib/cmndline.cc #, c-format @@ -769,7 +770,9 @@ msgstr "L'option « %s » est trop longue" #: apt-pkg/contrib/cmndline.cc #, c-format msgid "Sense %s is not understood, try true or false." -msgstr "La signification %s n'est pas comprise, veuillez essayer vrai ou faux." +msgstr "" +"La signification %s n'est pas comprise, veuillez essayer « true » ou " +"« false »." #: apt-pkg/contrib/cmndline.cc #, c-format @@ -888,7 +891,7 @@ msgstr "" #: cmdline/apt-dump-solver.cc #, c-format msgid "Waited for %s but it wasn't there" -msgstr "A attendu %s mais il n'était pas présent" +msgstr "A attendu %s, mais il n'était pas présent" #: apt-pkg/contrib/fileutl.cc #, c-format @@ -987,7 +990,7 @@ msgstr "Impossible de mapper un fichier vide en mémoire" #: apt-pkg/contrib/mmap.cc #, c-format msgid "Couldn't make mmap of %llu bytes" -msgstr "Impossible de réaliser un mapping de %llu octets en mémoire" +msgstr "Impossible de réaliser un mappage de %llu octets en mémoire" #: apt-pkg/contrib/mmap.cc #, c-format @@ -1005,7 +1008,7 @@ msgstr "Impossible de synchroniser la « mmap »" #: apt-pkg/contrib/mmap.cc #, c-format msgid "Couldn't make mmap of %lu bytes" -msgstr "Impossible de réaliser un mapping de %lu octets en mémoire" +msgstr "Impossible de réaliser un mappage de %lu octets en mémoire" #: apt-pkg/contrib/mmap.cc msgid "Failed to truncate file" @@ -1160,23 +1163,23 @@ msgid "Unable to parse package file %s (%d)" msgstr "Impossible de traiter le fichier %s (%d)" #: apt-pkg/deb/debsystem.cc -#, fuzzy, c-format +#, c-format #| msgid "" #| "Unable to lock the administration directory (%s), is another process " #| "using it?" msgid "" "Unable to acquire the dpkg frontend lock (%s), is another process using it?" msgstr "" -"Impossible de verrouiller le répertoire d'administration (%s). Il est " -"possible qu'un autre processus l'utilise." +"Impossible d'obtenir le verrou de dpkg (%s). Il est possible qu'un autre " +"processus l'utilise." #: apt-pkg/deb/debsystem.cc -#, fuzzy, c-format +#, c-format #| msgid "Unable to lock the administration directory (%s), are you root?" msgid "Unable to acquire the dpkg frontend lock (%s), are you root?" msgstr "" -"Impossible de verrouiller le répertoire d'administration (%s). Avez-vous les " -"privilèges du superutilisateur ?" +"Impossible d'obtenir le verrou de dpkg (%s). Avez-vous les droits du " +"superutilisateur ?" #. TRANSLATORS: the %s contains the recovery command, usually #. dpkg --configure -a @@ -1202,7 +1205,7 @@ msgstr "" msgid "Unable to lock the administration directory (%s), are you root?" msgstr "" "Impossible de verrouiller le répertoire d'administration (%s). Avez-vous les " -"privilèges du superutilisateur ?" +"droits du superutilisateur ?" #: apt-pkg/deb/debsystem.cc msgid "Not locked" @@ -1442,7 +1445,7 @@ msgstr "Somme de contrôle de hachage incohérente pour %s" #: apt-pkg/init.cc #, c-format msgid "Packaging system '%s' is not supported" -msgstr "Le système de paquet « %s » n'est pas supporté" +msgstr "Le système de paquet « %s » n'est pas pris en charge" #: apt-pkg/init.cc msgid "Unable to determine a suitable packaging system type" @@ -1500,7 +1503,7 @@ msgstr "Le fichier de cache des paquets a une version incompatible" #: apt-pkg/pkgcache.cc #, c-format msgid "This APT does not support the versioning system '%s'" -msgstr "Cet APT ne supporte pas le système de version « %s »" +msgstr "Cet APT ne prend pas en charge le système de version « %s »" #: apt-pkg/pkgcache.cc #, c-format @@ -1645,8 +1648,8 @@ msgstr "Type d'épinglage %s inconnu" #, c-format msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)" msgstr "" -"%s : la valeur %s est dehors de la plage de priorités d'épinglage valide (%d " -"à %d)" +"%s : la valeur %s est en dehors de la plage de priorités d'épinglage valide " +"(%d à %d)" #: apt-pkg/policy.cc msgid "No priority (or zero) specified for pin" @@ -1711,28 +1714,28 @@ msgstr "Calcul de la mise à jour" #: apt-private/acqprogress.cc #, c-format msgid "Hit:%lu %s" -msgstr "Atteint:%lu %s" +msgstr "Atteint :%lu %s" #. TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update' #. Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens #: apt-private/acqprogress.cc #, c-format msgid "Get:%lu %s" -msgstr "Réception de:%lu %s" +msgstr "Réception de :%lu %s" #. TRANSLATOR: Very short word to be displayed for files in 'apt-get update' #. which failed to download, but the error is ignored (compare "Err:") #: apt-private/acqprogress.cc #, c-format msgid "Ign:%lu %s" -msgstr "Ign:%lu %s" +msgstr "Ign :%lu %s" #. TRANSLATOR: Very short word to be displayed for files in 'apt-get update' #. which failed to download and the error is critical (compare "Ign:") #: apt-private/acqprogress.cc #, c-format msgid "Err:%lu %s" -msgstr "Err:%lu %s" +msgstr "Err :%lu %s" #: apt-private/acqprogress.cc #, c-format @@ -1760,7 +1763,7 @@ msgid "" "repository?" msgstr "" "Souhaitez-vous accepter ces modifications et continuer à mettre à jour " -"depuis ce dépôt ?" +"depuis ce dépôt ?" #: apt-private/private-cachefile.cc msgid "Correcting dependencies..." @@ -1878,7 +1881,7 @@ msgstr "Note : sélection de « %s » au lieu de « %s »\n" #: apt-private/private-cmndline.cc msgid "Most used commands:" -msgstr "Commandes les plus utilisées :" +msgstr "Commandes les plus utilisées :" #: apt-private/private-cmndline.cc #, c-format @@ -1927,7 +1930,7 @@ msgstr "Aucun paquet n'a été trouvé" #: apt-private/private-download.cc msgid "WARNING: The following packages cannot be authenticated!" -msgstr "ATTENTION : les paquets suivants n'ont pas été authentifiés !" +msgstr "ATTENTION : les paquets suivants n'ont pas été authentifiés !" #: apt-private/private-download.cc msgid "Authentication warning overridden.\n" @@ -1939,7 +1942,7 @@ msgstr "Certains paquets n'ont pas pu être authentifiés" #: apt-private/private-download.cc msgid "Install these packages without verification?" -msgstr "Faut-il installer ces paquets sans vérification ?" +msgstr "Faut-il installer ces paquets sans vérification ?" #: apt-private/private-download.cc msgid "" @@ -2008,7 +2011,7 @@ msgstr "Erreur interne, « InstallPackages » appelé avec des paquets cassés #: apt-private/private-install.cc msgid "Packages need to be removed but remove is disabled." msgstr "" -"Les paquets doivent être enlevés mais la désinstallation est désactivée." +"Les paquets doivent être enlevés, mais la désinstallation est désactivée." #: apt-private/private-install.cc msgid "" @@ -2073,8 +2076,8 @@ msgstr "Après cette opération, %so d'espace disque seront libérés.\n" #: apt-private/private-install.cc msgid "Trivial Only specified but this is not a trivial operation." msgstr "" -"L'option --trivial-only a été indiquée mais il ne s'agit pas d'une opération " -"triviale." +"L'option --trivial-only a été indiquée, mais il ne s'agit pas d'une " +"opération triviale." # The space before the exclamation mark must not be a non-breaking space; this # sentence is supposed to be typed by a user who cannot see the difference. @@ -2099,7 +2102,7 @@ msgstr "" msgid "Abort." msgstr "Annulation." -#: apt-private/private-install.cc cmdline/apt-mark.cc +#: apt-private/private-install.cc msgid "Do you want to continue?" msgstr "Souhaitez-vous continuer ?" @@ -2686,10 +2689,8 @@ msgstr[1] "" msgid "All packages are up to date." msgstr "Tous les paquets sont à jour." -#: cmdline/apt-cache.cc cmdline/apt-mark.cc -#, fuzzy, c-format -#| msgid "%s does not take any arguments" -msgid "%s does not take any arguments" +#: cmdline/apt-cache.cc +msgid "apt-cache stats does not take any arguments" msgstr "La commande apt-cache ne prend pas de paramètre" #: cmdline/apt-cache.cc @@ -2776,8 +2777,8 @@ msgstr "" "\tapt-cache [options] show pkg1 [pkg2 ...]\n" "\n" "apt-cache recherche et affiche les informations disponibles à propos\n" -"des paquets installés et installables. Il fonctionne exclusivement sur \n" -"les données trouvées dans le cache local grâce à la commande « update »\n" +"des paquets installés et installables. Il fonctionne exclusivement sur\n" +"les données trouvées dans le cache local grâce à la commande « update »\n" "d'apt-get par exemple. Les informations affichées peuvent cependant être\n" "obsolètes si la dernière mise à jour est trop ancienne, mais en revanche\n" "apt-cache fonctionne indépendamment de la disponibilité des sources\n" @@ -2994,7 +2995,7 @@ msgstr "Supprime des paquets et leurs fichiers de configuration" #: cmdline/apt-get.cc cmdline/apt.cc msgid "Remove automatically all unused packages" -msgstr "Supprime automatiquement les dépendances inutilisés" +msgstr "Supprime automatiquement les dépendances inutilisées" #: cmdline/apt-get.cc msgid "Distribution upgrade, see apt-get(8)" @@ -3049,7 +3050,7 @@ msgstr "Le téléchargement a échoué" #: cmdline/apt-helper.cc #, c-format msgid "GetSrvRec failed for %s" -msgstr "GetSrvRec a échouté pour %s" +msgstr "GetSrvRec a échoué pour %s" #: cmdline/apt-helper.cc msgid "" @@ -3064,7 +3065,7 @@ msgstr "" " apt-helper [options] cat-file fichier ...\n" " apt-helper [options] download-file uri target-path\n" "\n" -"apt-helper embarque un grand nombre de commandes que les scripts pour \n" +"apt-helper embarque un grand nombre de commandes que les scripts pour\n" "l'interpréteur de commandes peuvent utiliser\n" "par exemple, la même configuration de proxy ou d'acquisition qu'APT " "utiliserait.\n" @@ -3085,7 +3086,7 @@ msgstr "Concaténer des fichiers, avec décompression automatique" #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" -msgstr "détecter la configuration proxy en utilisant apt.conf" +msgstr "Détecter la configuration proxy en utilisant apt.conf" #: cmdline/apt-helper.cc msgid "wait for system to be online" @@ -3093,7 +3094,7 @@ msgstr "En attente de la connexion du système" #: cmdline/apt-helper.cc msgid "drop privileges before running given command" -msgstr "" +msgstr "Se débarrasser des privilèges avant d'exécuter la commande donnée" #: cmdline/apt-internal-planner.cc msgid "" @@ -3141,16 +3142,6 @@ msgid "%s was already set to automatically installed.\n" msgstr "%s était déjà marqué comme installé automatiquement.\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 "Les NOUVEAUX paquets suivants seront installés :" - -#: cmdline/apt-mark.cc #, c-format msgid "%s was already set on hold.\n" msgstr "%s était déjà marqué comme figé (« hold »).\n" @@ -3163,8 +3154,7 @@ msgstr "%s était déjà marqué comme non figé.\n" #: cmdline/apt-mark.cc msgid "Executing dpkg failed. Are you root?" msgstr "" -"Échec de l'exécution de dpkg. Possédez-vous les privilèges du " -"superutilisateur ?" +"Échec de l'exécution de dpkg. Possédez-vous les droits du superutilisateur ?" #: cmdline/apt-mark.cc #, c-format @@ -3217,12 +3207,6 @@ msgid "Mark the given packages as manually installed" msgstr "Marquer les paquets indiqués comme installés manuellement" #: cmdline/apt-mark.cc -#, fuzzy -#| msgid "Mark the given packages as automatically installed" -msgid "Mark all dependencies of meta packages as automatically installed." -msgstr "Marquer les paquets indiqués comme installés automatiquement" - -#: cmdline/apt-mark.cc msgid "Mark a package as held back" msgstr "Marquer un paquet comme maintenu dans une version" @@ -3256,7 +3240,7 @@ msgid "" msgstr "" "Usage : apt-sortpkgs [options] fichier1 [fichier2 ...]\n" "\n" -"apt-sortpgks est un outil simple permettant de trier les informations à \n" +"apt-sortpgks est un outil simple permettant de trier les informations à\n" "propos d'un paquet. Par défaut, il trie par information de paquets " "binaires,\n" "mais l'option -s peut être utilisée pour passer au tri par paquet source.\n" @@ -3679,7 +3663,7 @@ msgstr "Le serveur http a envoyé un en-tête « Content-Range » invalide" #: methods/basehttp.cc msgid "This HTTP server has broken range support" -msgstr "Ce serveur http possède un support des limites non-valide" +msgstr "Ce serveur http possède une gestion des limites non-valide" #: methods/basehttp.cc msgid "Unknown date format" @@ -8,14 +8,14 @@ # Dmitry Astapov <adept@despammed.com>, 2004. # Yuri Kozlov <kozlov.y@gmail.com>, 2004, 2005, 2006, 2007, 2008. # Yuri Kozlov <yuray@komyakino.ru>, 2009, 2010, 2012, 2015, 2016. -# Aleksej Shilin <rootlexx@mail.ru>, 2017, 2018. # Lev Lamberov <dogsleg@debian.org>, 2018. +# Aleksej Shilin <rootlexx@mail.ru>, 2017, 2018, 2019. msgid "" msgstr "" "Project-Id-Version: apt 1.8.0\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" "POT-Creation-Date: 2019-01-23 16:49+0100\n" -"PO-Revision-Date: 2018-10-25 19:03+0300\n" +"PO-Revision-Date: 2019-01-29 21:20+0300\n" "Last-Translator: Aleksej Shilin <rootlexx@mail.ru>\n" "Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n" "Language: ru\n" @@ -3058,13 +3058,11 @@ msgstr "%s уже помечен как установленный автома #: cmdline/apt-mark.cc msgid "No changes necessary" -msgstr "" +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 #, c-format @@ -3131,10 +3129,8 @@ msgid "Mark the given packages as manually installed" msgstr "пометить указанные пакеты как установленные вручную" #: cmdline/apt-mark.cc -#, fuzzy -#| msgid "Mark the given packages as automatically installed" msgid "Mark all dependencies of meta packages as automatically installed." -msgstr "пометить указанные пакеты как установленные автоматически" +msgstr "пометить все зависимости метапакетов как установленные автоматически" #: cmdline/apt-mark.cc msgid "Mark a package as held back" diff --git a/test/integration/test-apt-sources-deb822 b/test/integration/test-apt-sources-deb822 index fdf26fe97..8ffe0abe6 100755 --- a/test/integration/test-apt-sources-deb822 +++ b/test/integration/test-apt-sources-deb822 @@ -14,6 +14,8 @@ BASE='# some comment # that contains a : as well #Types: meep +# a free-standing comment appears + Types: deb #Types: deb-src URIs: http://ftp.debian.org/debian @@ -291,3 +293,69 @@ testsuccessequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' 'http://ftp.debian.org/debian2/dists/sid/non-free/binary-powerpc/Packages.xz' ftp.debian.org_debian2_dists_sid_non-free_binary-powerpc_Packages 0 'http://ftp.debian.org/debian2/dists/sid/non-free/binary-all/Packages.xz' ftp.debian.org_debian2_dists_sid_non-free_binary-all_Packages 0 'http://ftp.debian.org/debian2/dists/sid/non-free/i18n/Translation-en.xz' ftp.debian.org_debian2_dists_sid_non-free_i18n_Translation-en 0 " aptget update --print-uris + +EXPECTEDUK="'http://ftp.uk.debian.org/debian/dists/stretch/InRelease' ftp.uk.debian.org_debian_dists_stretch_InRelease 0 +'http://ftp.uk.debian.org/debian/dists/stretch/main/source/Sources.xz' ftp.uk.debian.org_debian_dists_stretch_main_source_Sources 0 +'http://ftp.uk.debian.org/debian/dists/stretch/contrib/source/Sources.xz' ftp.uk.debian.org_debian_dists_stretch_contrib_source_Sources 0 +'http://ftp.uk.debian.org/debian/dists/stretch/non-free/source/Sources.xz' ftp.uk.debian.org_debian_dists_stretch_non-free_source_Sources 0 +'http://ftp.uk.debian.org/debian/dists/stretch/main/binary-i386/Packages.xz' ftp.uk.debian.org_debian_dists_stretch_main_binary-i386_Packages 0 +'http://ftp.uk.debian.org/debian/dists/stretch/main/binary-all/Packages.xz' ftp.uk.debian.org_debian_dists_stretch_main_binary-all_Packages 0 +'http://ftp.uk.debian.org/debian/dists/stretch/main/i18n/Translation-en.xz' ftp.uk.debian.org_debian_dists_stretch_main_i18n_Translation-en 0 +'http://ftp.uk.debian.org/debian/dists/stretch/contrib/binary-i386/Packages.xz' ftp.uk.debian.org_debian_dists_stretch_contrib_binary-i386_Packages 0 +'http://ftp.uk.debian.org/debian/dists/stretch/contrib/binary-all/Packages.xz' ftp.uk.debian.org_debian_dists_stretch_contrib_binary-all_Packages 0 +'http://ftp.uk.debian.org/debian/dists/stretch/contrib/i18n/Translation-en.xz' ftp.uk.debian.org_debian_dists_stretch_contrib_i18n_Translation-en 0 +'http://ftp.uk.debian.org/debian/dists/stretch/non-free/binary-i386/Packages.xz' ftp.uk.debian.org_debian_dists_stretch_non-free_binary-i386_Packages 0 +'http://ftp.uk.debian.org/debian/dists/stretch/non-free/binary-all/Packages.xz' ftp.uk.debian.org_debian_dists_stretch_non-free_binary-all_Packages 0 +'http://ftp.uk.debian.org/debian/dists/stretch/non-free/i18n/Translation-en.xz' ftp.uk.debian.org_debian_dists_stretch_non-free_i18n_Translation-en 0 " + +msgcleantest 'Test deb822 sources.list file comments' 'top' +cat > $SOURCES <<EOF +#NOTE: Most preferred source listed first! + + +#=== NEW MULTI-LINE FORMAT =============== +Types: deb deb-src +URIs:http://ftp.uk.debian.org/debian/ +Suites: stretch +Components: main contrib non-free +EOF +testsuccessequal --nomsg "$EXPECTEDUK" aptget update --print-uris + +msgcleantest 'Test deb822 sources.list file comments' 'bottom' +cat > $SOURCES <<EOF +Types: deb deb-src +URIs:http://ftp.uk.debian.org/debian/ +Suites: stretch +Components: main contrib non-free +#=== NEW MULTI-LINE FORMAT =============== + + +#NOTE: Most preferred source listed first! +EOF +testsuccessequal --nomsg "$EXPECTEDUK" aptget update --print-uris + +msgcleantest 'Test deb822 sources.list file comments' 'both' +cat > $SOURCES <<EOF +#=== NEW MULTI-LINE FORMAT =============== + + +#NOTE: Most preferred source listed first! +Types: deb deb-src +URIs:http://ftp.uk.debian.org/debian/ +Suites: stretch +Components: main contrib non-free +#=== NEW MULTI-LINE FORMAT =============== + + +#NOTE: Most preferred source listed first! +EOF +testsuccessequal --nomsg "$EXPECTEDUK" aptget update --print-uris + + +msgcleantest 'Test deb822 sources.list file comments' 'empty' +cat > $SOURCES <<EOF +#=== NEW MULTI-LINE FORMAT =============== + + +EOF +testempty aptget update --print-uris diff --git a/test/libapt/tagfile_test.cc b/test/libapt/tagfile_test.cc index f455a8dcc..8823ff781 100644 --- a/test/libapt/tagfile_test.cc +++ b/test/libapt/tagfile_test.cc @@ -232,6 +232,8 @@ TEST(TagFileTest, Comments) FileFd fd; createTemporaryFile("commentfile", fd, NULL, "# Leading comments should be ignored.\n" "\n" +"# A wild second comment appears!\n" +"\n" "Source: foo\n" "#Package: foo\n" "Section: bar\n" |