# translation of urpmi-fr.po to # translation of urpmi-fr.po to francais # translation of urpmi-fr.po to Français # translation of urpmi-fr.po to french # # Latest versions of po files are at http://www.mandrivalinux.com/l10n/fr.php3 # # Traduction de Mandriva Linux Urpmi # $Id$ # Copyright (C) 1999-2005 Mandriva # Pixel , 1999. # Olivier Poppon , 1999. # Patrick Legault , 2000. # David BAUDENS , 2000. # Thierry Vignaud , 2000-2004. # Combelles Christophe , 2003. # Christophe Combelles , 2003. # Didier Hérisson , 2004. # Lecureuil Nicolas , 2004, 2005. # Teletchéa , 2005. # Christophe Berthelé , 2005. # msgid "" msgstr "" "Project-Id-Version: urpmi-fr\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-06-15 17:56+0800\n" "PO-Revision-Date: 2005-04-21 15:13+0200\n" "Last-Translator: Christophe Berthelé \n" "Language-Team: Français \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.9.1\n" "Plural-Forms: nplurals=2;plural=(n>1);\n" #. This is a list of chars acceptable as a 'yes' answer to a Yes/No question; #. you can put here the letters for 'yes' for your language, so people #. can hit those keys in their keyboard to reply. #. please keep the 'Yy' for compatibility reasons #. #: placeholder.h:11 msgid "Yy" msgstr "OoYy" #. This is a list of chars acceptable as a 'no' answer to a Yes/No question; #. you can put here the letters for 'no' for your language, so people #. can hit those keys in their keyboard to reply. #. please keep the 'Nn' for compatibility reasons #. #: placeholder.h:17 msgid "Nn" msgstr "Nn" #: ../_irpm:23 #, c-format msgid "installing %s\n" msgstr "installation de %s\n" #: ../_irpm:33 #, c-format msgid "" "Automatic installation of packages...\n" "You requested installation of package %s\n" msgstr "" "Installation automatique des paquetages ...\n" "Vous avez demandé l'installation du paquetage %s\n" #: ../_irpm:33 ../urpme:29 ../urpmi:478 #, c-format msgid "Is this OK?" msgstr "Est-ce correct ?" #: ../_irpm:35 #, c-format msgid "Ok" msgstr "Ok" #: ../_irpm:36 #, c-format msgid "Cancel" msgstr "Annuler" #: ../_irpm:44 ../urpmi:384 ../urpmi:402 ../urpmi:482 #, c-format msgid " (Y/n) " msgstr " (O/n) " #: ../_irpm:63 #, c-format msgid "%s: command not found\n" msgstr "%s : commande non trouvée\n" #: ../gurpmi:31 ../gurpmi2:55 #, c-format msgid "RPM installation" msgstr "Installation du RPM" #: ../gurpmi:48 #, c-format msgid "" "You have selected a source package:\n" "\n" "%s\n" "\n" "You probably didn't want to install it on your computer (installing it would " "allow you to make modifications to its sourcecode then compile it).\n" "\n" "What would you like to do?" msgstr "" "Vous avez choisi un paquetage de sources :\n" "\n" "%s\n" "\n" "Vous ne désirez probablement pas l'installer sur votre ordinateur. " "(L'installer vous permettra de modifier le code source, puis de le " "recompiler).\n" "\n" "Que voulez vous faire ?" #: ../gurpmi:56 #, c-format msgid "" "You are about to install the following software package on your computer:\n" "\n" "%s\n" "\n" "You may prefer to just save it. What is your choice?" msgstr "" "Vous êtes sur le point d'installer le paquetage suivant sur votre " "ordinateur :\n" "\n" "%s\n" "\n" "Peut-être préférez-vous simplement l'enregistrer. Quel est votre choix ?" #: ../gurpmi:61 #, c-format msgid "" "You are about to install the following software packages on your computer:\n" "\n" "%s\n" "\n" "Proceed?" msgstr "" "Vous êtes sur le point d'installer les paquetages suivants sur votre " "ordinateur :\n" "\n" "%s\n" "\n" "Continuer ?" #: ../gurpmi:71 #, c-format msgid "_Install" msgstr "_Installer" #: ../gurpmi:72 #, c-format msgid "_Save" msgstr "_Sauver" #: ../gurpmi:73 ../gurpmi2:119 #, c-format msgid "_Cancel" msgstr "_Annuler" #: ../gurpmi:83 #, c-format msgid "Choose location to save file" msgstr "Choisissez un emplacement pour enregistrer le fichier." #: ../gurpmi2:36 #, c-format msgid "Please wait..." msgstr "Veuillez patienter ..." #: ../gurpmi2:45 #, c-format msgid "Must be root" msgstr "Vous devez être administrateur" #: ../gurpmi2:75 #, c-format msgid "" "Some package requested cannot be installed:\n" "%s\n" "Continue?" msgstr "" "Certains paquetages demandés ne peuvent pas être installés :\n" "%s\n" "Continuer ?" #: ../gurpmi2:115 #, c-format msgid " (to upgrade)" msgstr " (à mettre à jour)" #: ../gurpmi2:116 #, c-format msgid " (to install)" msgstr " (à installer)" #: ../gurpmi2:119 #, c-format msgid "Package choice" msgstr "" #: ../gurpmi2:119 ../gurpmi2:142 #, c-format msgid "_Ok" msgstr "_Ok" #: ../gurpmi2:120 ../urpmi:349 #, c-format msgid "One of the following packages is needed:" msgstr "Un des paquetages suivants est nécessaire :" #: ../gurpmi2:143 #, c-format msgid "_Abort" msgstr "_Abandonner" #: ../gurpmi2:163 #, c-format msgid "" "The following packages have to be removed for others to be upgraded:\n" "%s\n" "Continue?" msgstr "" "Afin de poursuivre la mise à jour, les paquetages suivants doivent être " "désinstallés :\n" "%s\n" "Continuer ?" #: ../gurpmi2:177 #, c-format msgid "" "To satisfy dependencies, the following %d packages are going to be " "installed:\n" "%s\n" msgstr "" "Pour satisfaire les dépendances, les %d paquetages suivants vont être " "installés :\n" "%s\n" #: ../gurpmi2:184 #, c-format msgid "Package installation..." msgstr "Installation du paquetage ..." #: ../gurpmi2:186 ../urpmi:491 ../urpmq:308 #, c-format msgid "unable to get source packages, aborting" msgstr "impossible de récupérer les paquetages de sources, abandon" #: ../gurpmi2:200 ../urpmi:502 #, c-format msgid "Please insert the medium named \"%s\" on device [%s]" msgstr "Veuillez insérer le média nommé « %s » dans le périphérique [%s]" #: ../gurpmi2:228 #, c-format msgid "Downloading package `%s'..." msgstr "Téléchargement du paquetage %s ..." #: ../gurpmi2:243 #, c-format msgid "" "The following packages have bad signatures:\n" "%s\n" "\n" "Do you want to continue installation ?" msgstr "" "Les paquetages suivants ont une signature erronée :\n" "%s\n" "\n" "Voulez-vous continuer l'installation ?" #: ../gurpmi2:250 ../gurpmi2:299 ../urpmi:573 ../urpmi:689 #, c-format msgid "" "Installation failed, some files are missing:\n" "%s\n" "You may want to update your urpmi database" msgstr "" "L'installation a échoué, il manque les fichiers :\n" "%s\n" "Vous devriez mettre à jour votre base de données urpmi." #: ../gurpmi2:257 ../urpme:116 ../urpmi:616 #, c-format msgid "removing %s" msgstr "désinstallation de %s" #: ../gurpmi2:265 ../urpm.pm:2877 #, c-format msgid "Preparing..." msgstr "Préparation ..." #: ../gurpmi2:267 #, c-format msgid "Installing package `%s' (%s/%s)..." msgstr "Installation du paquetage « %s » (%s/%s)..." #: ../gurpmi2:285 ../urpmi:583 ../urpmi:634 ../urpmi:652 ../urpmi:668 #, c-format msgid "Installation failed" msgstr "L'installation a échoué" #: ../gurpmi2:294 #, c-format msgid "_Done" msgstr "_Fini" #: ../gurpmi2:302 ../urpmi:705 #, c-format msgid "The package(s) are already installed" msgstr "Tous les paquetages sont déjà installés" #: ../gurpmi2:304 #, c-format msgid "Installation finished" msgstr "L'installation est terminée" #: ../rpm-find-leaves:14 #, c-format msgid "" "usage: %s [options]\n" "where [options] are from\n" msgstr "" "usage : %s [options]\n" "où les [options] sont parmi\n" #: ../rpm-find-leaves:16 #, c-format msgid " -h|--help - print this help message.\n" msgstr " -h|--help - afficher ce message d'aide.\n" #: ../rpm-find-leaves:17 #, c-format msgid " --root - use the given root instead of /\n" msgstr "" " --root  - utiliser l'emplacement spécifié comme racine à la " "place de « / »\n" #: ../rpm-find-leaves:18 #, c-format msgid " -g [group] - restrict results to given group.\n" msgstr " -g [groupe] - restreindre les résultats au groupe spécifié.\n" #: ../rpm-find-leaves:19 #, c-format msgid " defaults is %s.\n" msgstr " valeur par défaut %s.\n" #: ../urpm.pm:70 #, c-format msgid "unknown protocol defined for %s" msgstr "protocole inconnu défini pour %s" #: ../urpm.pm:103 #, c-format msgid "no webfetch found, supported webfetch are: %s\n" msgstr "" "aucun programme de téléchargement web trouvé, ceux supportés sont : %s\n" #: ../urpm.pm:119 #, c-format msgid "unable to handle protocol: %s" msgstr "impossible d'utiliser le protocole : %s" #: ../urpm.pm:210 #, c-format msgid "medium \"%s\" trying to use an already used hdlist, medium ignored" msgstr "le média « %s » essaye d'utiliser un hdlist déjà utilisé, média ignoré" #: ../urpm.pm:211 #, c-format msgid "medium \"%s\" trying to use an already used list, medium ignored" msgstr "" "le média « %s » essaye d'utiliser une liste déjà utilisée, média ignoré" #: ../urpm.pm:224 ../urpm.pm:1293 ../urpm.pm:1303 #, c-format msgid "unable to access hdlist file of \"%s\", medium ignored" msgstr "impossible d'accéder au fichier hdlist de « %s », média ignoré" #: ../urpm.pm:227 ../urpm.pm:2483 #, c-format msgid "unable to access list file of \"%s\", medium ignored" msgstr "impossible d'accéder au fichier de liste de « %s », média ignoré" #: ../urpm.pm:257 #, c-format msgid "trying to bypass existing medium \"%s\", avoiding" msgstr "tentative d'ignorer le média existant « %s », abandon" #: ../urpm.pm:265 #, c-format msgid "" "virtual medium \"%s\" should not have defined hdlist or list file, medium " "ignored" msgstr "" "le média virtuel « %s » ne devrait pas avoir de liste de fichier ou de " "hdlist, média ignoré" #: ../urpm.pm:270 #, c-format msgid "virtual medium \"%s\" should have a clear url, medium ignored" msgstr "le média virtuel « %s » devrait avoir une url claire, média ignoré" #: ../urpm.pm:279 #, c-format msgid "unable to find hdlist file for \"%s\", medium ignored" msgstr "impossible de trouver le fichier hdlist pour « %s », média ignoré" #: ../urpm.pm:286 #, c-format msgid "unable to find list file for \"%s\", medium ignored" msgstr "impossible de trouver le fichier liste de « %s », média ignoré" #: ../urpm.pm:310 #, c-format msgid "inconsistent list file for \"%s\", medium ignored" msgstr "fichier de liste incohérent pour « %s », média ignoré" #: ../urpm.pm:320 #, c-format msgid "unable to inspect list file for \"%s\", medium ignored" msgstr "impossible de consulter le fichier de liste pour « %s », média ignoré" #: ../urpm.pm:360 #, c-format msgid "too many mount points for removable medium \"%s\"" msgstr "trop de points de montage pour le média amovible « %s »" #: ../urpm.pm:361 #, c-format msgid "taking removable device as \"%s\"" msgstr "périphérique amovible pris en tant que « %s »" #: ../urpm.pm:364 #, c-format msgid "Medium \"%s\" is an ISO image, will be mounted on-the-fly" msgstr "Le média « %s » est une image ISO, elle va être montée à la volée" #: ../urpm.pm:367 #, c-format msgid "using different removable device [%s] for \"%s\"" msgstr "utilisation de différents périphériques amovibles [%s] pour « %s »" #: ../urpm.pm:372 ../urpm.pm:375 #, c-format msgid "unable to retrieve pathname for removable medium \"%s\"" msgstr "impossible d'accéder au chemin du média amovible « %s »" #: ../urpm.pm:401 #, c-format msgid "unable to write config file [%s]" msgstr "impossible d'écrire le fichier de configuration [%s]" #: ../urpm.pm:411 #, c-format msgid "wrote config file [%s]" msgstr "le fichier de configuration [%s] a été ecrit" #: ../urpm.pm:423 #, c-format msgid "Can't use parallel mode with use-distrib mode" msgstr "" "Le mode « parallel » ne peut pas être utilisé avec le mode « use-distrib »" #: ../urpm.pm:433 #, c-format msgid "unable to parse \"%s\" in file [%s]" msgstr "impossible d'analyser « %s » dans le fichier [%s]" #: ../urpm.pm:445 #, c-format msgid "examining parallel handler in file [%s]" msgstr "examen du support distribué dans le fichier [%s]" #: ../urpm.pm:456 #, c-format msgid "found parallel handler for nodes: %s" msgstr "support distribué trouvé pour les noeuds : %s" #: ../urpm.pm:460 #, c-format msgid "using associated media for parallel mode: %s" msgstr "utilisation du média associé pour le mode distribué : %s" #: ../urpm.pm:464 #, c-format msgid "unable to use parallel option \"%s\"" msgstr "impossible d'utiliser l'option distribuée « %s »" #: ../urpm.pm:472 #, c-format msgid "there doesn't seem to be devices in the chroot in \"%s\"" msgstr "" #: ../urpm.pm:478 #, c-format msgid "" "--synthesis cannot be used with --media, --excludemedia, --sortmedia, --" "update or --parallel" msgstr "" "--synthesis ne peut pas être utilisé avec --media, --excludemedia, --" "sortmedia, --update ou --parallel" #: ../urpm.pm:539 ../urpm.pm:565 ../urpm.pm:1047 ../urpm.pm:1058 #: ../urpm.pm:1130 ../urpm.pm:1147 ../urpm.pm:1217 ../urpm.pm:1276 #: ../urpm.pm:1491 ../urpm.pm:1614 ../urpm.pm:1731 ../urpm.pm:1737 #: ../urpm.pm:1840 ../urpm.pm:1925 ../urpm.pm:1929 #, c-format msgid "examining synthesis file [%s]" msgstr "examen de la liste de synthèse [%s]" #: ../urpm.pm:543 ../urpm.pm:558 ../urpm.pm:571 ../urpm.pm:1050 #: ../urpm.pm:1061 ../urpm.pm:1136 ../urpm.pm:1142 ../urpm.pm:1222 #: ../urpm.pm:1280 ../urpm.pm:1495 ../urpm.pm:1618 ../urpm.pm:1725 #: ../urpm.pm:1743 ../urpm.pm:1935 #, c-format msgid "examining hdlist file [%s]" msgstr "examen du fichier hdlist [%s]" #: ../urpm.pm:553 ../urpm.pm:1054 #, c-format msgid "virtual medium \"%s\" is not local, medium ignored" msgstr "le média virtuel « %s » n'est pas local, média ignoré" #: ../urpm.pm:583 #, c-format msgid "Search start: %s end: %s" msgstr "Recherche début : %s fin : %s" #: ../urpm.pm:588 ../urpm.pm:1068 ../urpm.pm:1155 ../urpm.pm:1226 #: ../urpm.pm:1622 #, c-format msgid "problem reading hdlist or synthesis file of medium \"%s\"" msgstr "problème de lecture du fichier hdlist ou de synthèse du média « %s »" #: ../urpm.pm:595 ../urpm.pm:1878 #, c-format msgid "performing second pass to compute dependencies\n" msgstr "seconde exécution pour calculer les dépendances\n" #: ../urpm.pm:611 #, c-format msgid "skipping package %s" msgstr "paquetage %s ignoré" #: ../urpm.pm:624 #, c-format msgid "would install instead of upgrade package %s" msgstr "effectuerait une installation plutôt qu'une mise à jour de %s" #: ../urpm.pm:635 ../urpm.pm:2290 ../urpm.pm:2351 ../urpm.pm:2540 #: ../urpm.pm:2942 ../urpm.pm:3065 #, c-format msgid "unable to open rpmdb" msgstr "impossible d'ouvrir la base de donnée rpm" #: ../urpm.pm:675 #, c-format msgid "medium \"%s\" already exists" msgstr "le média « %s » existe déjà" #: ../urpm.pm:682 #, c-format msgid "virtual medium needs to be local" msgstr "les médias virtuels doivent être locaux" #: ../urpm.pm:709 #, c-format msgid "added medium %s" msgstr "média %s ajouté" #: ../urpm.pm:751 #, c-format msgid "unable to access first installation medium" msgstr "impossible d'accéder au premier média d'installation" #: ../urpm.pm:755 #, c-format msgid "copying hdlists file..." msgstr "copie du fichier hdlists ..." #: ../urpm.pm:757 ../urpm.pm:1171 ../urpm.pm:1246 #, c-format msgid "...copying done" msgstr "... copie effectuée" #: ../urpm.pm:758 ../urpm.pm:1172 ../urpm.pm:1321 ../urpm.pm:1380 #: ../urpm.pm:1560 ../urpm.pm:1567 #, c-format msgid "...copying failed" msgstr "... copie impossible" #: ../urpm.pm:761 ../urpm.pm:786 ../urpm.pm:825 #, c-format msgid "unable to access first installation medium (no hdlists file found)" msgstr "" "impossible d'accéder au premier média d'installation (pas de fichier hdlists)" #: ../urpm.pm:768 #, c-format msgid "retrieving hdlists file..." msgstr "récupération du fichier hdlists ..." #: ../urpm.pm:780 ../urpm.pm:1604 ../urpm.pm:2094 ../urpm.pm:2810 #, c-format msgid "...retrieving done" msgstr "... récupération effectuée" #: ../urpm.pm:782 ../urpm.pm:1588 ../urpm.pm:1597 ../urpm.pm:2097 #: ../urpm.pm:2812 #, c-format msgid "...retrieving failed: %s" msgstr "... échec de la récupération : %s" #: ../urpm.pm:806 #, c-format msgid "invalid hdlist description \"%s\" in hdlists file" msgstr "description « %s » invalide dans le fichier hdlists" #: ../urpm.pm:862 #, c-format msgid "trying to select nonexistent medium \"%s\"" msgstr "essai de sélection du média inexistant « %s »" #: ../urpm.pm:864 #, c-format msgid "selecting multiple media: %s" msgstr "sélection de plusieurs médias : %s" #: ../urpm.pm:864 ../urpmi.update:94 #, c-format msgid "\"%s\"" msgstr "« %s »" #: ../urpm.pm:880 #, c-format msgid "removing medium \"%s\"" msgstr "enlever le média « %s »" #: ../urpm.pm:931 #, c-format msgid "reconfiguring urpmi for media \"%s\"" msgstr "reconfiguration de urpmi pour le média « %s »..." #: ../urpm.pm:960 #, c-format msgid "...reconfiguration failed" msgstr "... la reconfiguration a échoué" #: ../urpm.pm:967 #, c-format msgid "reconfiguration done" msgstr "reconfiguration effectuée" #: ../urpm.pm:1108 #, c-format msgid "" "unable to access medium \"%s\",\n" "this could happen if you mounted manually the directory when creating the " "medium." msgstr "" "Impossible d'accéder au média « %s »,\n" "cela peut arriver si vous avez effectué un montage manuel lors de la " "création du média." #: ../urpm.pm:1159 #, c-format msgid "" "virtual medium \"%s\" should have valid source hdlist or synthesis, medium " "ignored" msgstr "" "le média virtuel « %s » devrait avoir un fichier hdlist ou de synthèse " "valide, média ignoré" #: ../urpm.pm:1169 #, c-format msgid "copying description file of \"%s\"..." msgstr "copie du fichier description de « %s »..." #: ../urpm.pm:1193 ../urpm.pm:1467 #, c-format msgid "computing md5sum of existing source hdlist (or synthesis)" msgstr "" "calcul de la somme de contrôle MD5 du fichier hdlist (ou de synthèse) " "existant" #: ../urpm.pm:1242 #, c-format msgid "copying source hdlist (or synthesis) of \"%s\"..." msgstr "copie du hdlist source (ou de synthèse) de « %s »..." #: ../urpm.pm:1256 #, c-format msgid "copy of [%s] failed (file is suspiciously small)" msgstr "" "La copie de [%s] a échoué (le fichier est si petit que c'en est suspect)" #: ../urpm.pm:1261 #, c-format msgid "computing md5sum of copied source hdlist (or synthesis)" msgstr "" "calcul de la somme de contrôle MD5 du fichier hdlist copié (ou de sa " "synthèse)" #: ../urpm.pm:1263 #, c-format msgid "copy of [%s] failed (md5sum mismatch)" msgstr "" "la copie de [%s] a échoué (désaccord entre les sommes de contrôle md5sum)" #: ../urpm.pm:1284 ../urpm.pm:1499 ../urpm.pm:1843 #, c-format msgid "problem reading synthesis file of medium \"%s\"" msgstr "problème de lecture du fichier de synthèse du média « %s »" #: ../urpm.pm:1338 #, c-format msgid "reading rpm files from [%s]" msgstr "lecture des fichiers rpm à partir de [%s]" #: ../urpm.pm:1353 #, c-format msgid "no rpms read" msgstr "aucun rpms lu" #: ../urpm.pm:1363 #, c-format msgid "unable to read rpm files from [%s]: %s" msgstr "impossible de lire les fichiers rpm à partir de [%s] : %s" #: ../urpm.pm:1368 #, c-format msgid "no rpm files found from [%s]" msgstr "pas de fichier rpm trouvé pour [%s]" #: ../urpm.pm:1517 #, c-format msgid "retrieving source hdlist (or synthesis) of \"%s\"..." msgstr "récupération du hdlist source (ou de synthèse) de « %s »..." #: ../urpm.pm:1545 #, c-format msgid "found probed hdlist (or synthesis) as %s" msgstr "hdlist source (ou de synthèse) potentiel trouvé en tant que %s" #: ../urpm.pm:1595 #, c-format msgid "computing md5sum of retrieved source hdlist (or synthesis)" msgstr "" "calcul de la somme de contrôle MD5 du fichier hdlist (ou de synthèse) " "téléchargé" #: ../urpm.pm:1597 #, c-format msgid "md5sum mismatch" msgstr "la somme de contrôle MD5 ne correspond pas" #: ../urpm.pm:1695 #, c-format msgid "retrieval of source hdlist (or synthesis) failed" msgstr "la récupération du hdlist source (ou de synthèse) a échoué" #: ../urpm.pm:1702 #, c-format msgid "no hdlist file found for medium \"%s\"" msgstr "pas de fichier hdlist trouvé pour le média « %s »" #: ../urpm.pm:1713 ../urpm.pm:1767 #, c-format msgid "file [%s] already used in the same medium \"%s\"" msgstr "le fichier [%s] est déjà utilisé sur le même support « %s »" #: ../urpm.pm:1753 #, c-format msgid "unable to parse hdlist file of \"%s\"" msgstr "impossible d'analyser le fichier hdlist de « %s »" #: ../urpm.pm:1792 #, c-format msgid "unable to write list file of \"%s\"" msgstr "impossible d'écrire le fichier de liste « %s »" #: ../urpm.pm:1800 #, c-format msgid "writing list file for medium \"%s\"" msgstr "écriture de la liste des fichiers pour le média « %s »" #: ../urpm.pm:1802 #, c-format msgid "nothing written in list file for \"%s\"" msgstr "rien n'a été écrit dans le fichier de liste pour « %s »" #: ../urpm.pm:1817 #, c-format msgid "examining pubkey file of \"%s\"..." msgstr "examen du fichier de la clé publique de « %s »..." #: ../urpm.pm:1824 #, c-format msgid "...imported key %s from pubkey file of \"%s\"" msgstr "... clé %s importée à partir du fichier de la clé publique de « %s »" #: ../urpm.pm:1827 #, c-format msgid "unable to import pubkey file of \"%s\"" msgstr "impossible d'importer le fichier de la clé publique de « %s »" #: ../urpm.pm:1892 #, c-format msgid "reading headers from medium \"%s\"" msgstr "lecture des en-têtes du média « %s »" #: ../urpm.pm:1897 #, c-format msgid "building hdlist [%s]" msgstr "création du fichier hdlist [%s]" #: ../urpm.pm:1912 ../urpm.pm:1947 #, c-format msgid "" "Unable to build synthesis file for medium \"%s\". Your hdlist file may be " "corrupted." msgstr "" "Impossible de créer le fichier synthesis pour le média « %s ». Votre fichier " "hdlist est peut-être corrompu." #: ../urpm.pm:1915 ../urpm.pm:1950 ../urpmi:306 #, c-format msgid "built hdlist synthesis file for medium \"%s\"" msgstr "fichier de synthèse créé pour le média « %s »" #: ../urpm.pm:1973 #, c-format msgid "found %d headers in cache" msgstr "%d en-têtes trouvés dans le cache" #: ../urpm.pm:1977 #, c-format msgid "removing %d obsolete headers in cache" msgstr "destruction de %d en-têtes obsolètes dans le cache" #: ../urpm.pm:2033 #, c-format msgid "mounting %s" msgstr "montage de %s" #: ../urpm.pm:2055 #, c-format msgid "unmounting %s" msgstr "démontage de %s" #: package commands; # $Id$ #-######################################################################## #- This file implement many common shell commands: #- true, false, cat, which, dirname, basename, rmdir, lsmod, grep, tr, #- mount, umount, mkdir, mknod, ln, rm, chmod, chown, swapon, #- swapoff, ls, cp, ps, dd, head, tail, strings, hexdump, more, insmod, #- modprobe, route, df, kill, lspci, lssbus, dmesg, sort, du, #-######################################################################## use diagnostics; use strict; use vars qw($printable_chars *ROUTE *DF *PS); #-###################################################################################### #- misc imports #-###################################################################################### use MDK::Common::System; use common; #-###################################################################################### #- Functions #-###################################################################################### sub getopts { my $o = shift; my @r = map { '' } (@_ = split //, $_[0]); while (1) { local $_ = $o->[0]; $_ && /^-/ or return @r; for (my $i = 0; $i < @_; $i++) { /$_[$i]/ and $r[$i] = $_[$i] } shift @$o; } @r; } sub true() { exit 0 } sub false() { exit 1 } sub cat { @ARGV = @_; print while <> } sub dirname_ { print dirname(@_), "\n" } sub basename_ { print basename(@_), "\n" } sub rmdir_ { foreach (@_) { rmdir $_ or die "rmdir: can not remove $_\n" } } sub lsmod() { print "Module Size Used by\n"; cat("/proc/modules") } sub which { ARG: foreach (@_) { foreach my $c (split /:/, $ENV{PATH}) { -x "$c/$_" and print("$c/$_\n"), next ARG } } } sub grep_ { my ($h, $v, $i) = getopts(\@_, qw(hvi)); @_ == 0 || $h and die "usage: grep <regexp> [files...]\n"; my $r = shift; $r = qr/$r/i if $i; @ARGV = @_; (/$r/ xor $v) and print while <>; } sub tr_ { my ($s, $c, $d) = getopts(\@_, qw(s c d)); @_ >= 1 + (!$d || $s) or die "usage: tr [-c] [-s [-d]] <set1> <set2> [files...]\n or tr [-c] -d <set1> [files...]\n"; my $set1 = shift; my $set2; !$d || $s and $set2 = shift; @ARGV = @_; eval "(tr/$set1/$set2/$s$d$c, print) while <>"; } sub mount { @_ or return cat("/proc/mounts"); my ($t, $r) = getopts(\@_, qw(tr)); my $fs = $t && shift; @_ == 2 or die "usage: mount [-r] [-t <fs>] <device> <dir>\n", " (use -r for readonly)\n", " (if /dev/ is left off the device name, a temporary node will be created)\n"; my ($dev, $where) = @_; $fs ||= $where =~ /:/ ? "nfs" : $dev =~ /fd/ ? "vfat" : "ext2"; require fs; require modules; modules::load_dependencies("/modules/modules.dep"); fs::mount($dev, $where, $fs, $r); } sub umount { @_ == 1 or die "umount expects a single argument\n"; require fs; fs::umount($_[0]); } sub mkdir_ { my ($_rec) = getopts(\@_, qw(p)); mkdir_p($_) foreach @_; } sub mknod { if (@_ == 1) { require devices; eval { devices::make($_[0]) }; $@ and die "mknod: failed to create $_[0]\n"; } elsif (@_ == 4) { require c; my $mode = ${{ "b" => c::S_IFBLK(), "c" => c::S_IFCHR() }}{$_[1]} or die "unknown node type $_[1]\n"; syscall_('mknod', my $_a = $_[0], $mode | 0600, makedev($_[2], $_[3])) or die "mknod failed: $!\n"; } else { die "usage: mknod <path> [b|c] <major> <minor> or mknod <path>\n" } } sub ln { my ($force, $soft) = getopts(\@_, qw(fs)); @_ >= 1 or die "usage: ln [-s] [-f] <source> [<dest>]\n"; my ($source, $dest) = @_; $dest ||= basename($source); $force and unlink $dest; ($soft ? symlink($source, $dest) : link($source, $dest)) or die "ln failed: $!\n"; } sub rm { my ($rec, undef) = getopts(\@_, qw(rf)); my $rm; $rm = sub { foreach (@_) { if (!-l $_ && -d $_) { $rec or die "$_ is a directory\n"; &$rm(glob_($_)); rmdir $_ or die "can not remove directory $_: $!\n"; } else { unlink $_ or die "rm of $_ failed: $!\n" } } }; &$rm(@_); } sub chmod_ { @_ >= 2 or die "usage: chmod <mode> <files>\n"; my $mode = shift; $mode =~ /^[0-7]+$/ or die "illegal mode $mode\n"; foreach (@_) { chmod oct($mode), $_ or die "chmod failed $_: $!\n" } } sub chown_ { my ($rec, undef) = getopts(\@_, qw(r)); local $_ = shift or die "usage: chown [-r] name[.group] <files>\n"; my ($name, $group) = (split('\.'), $_); my ($uid, $gid) = (getpwnam($name) || $name, getgrnam($group) || $group); my $chown; $chown = sub { foreach (@_) { chown $uid, $gid, $_ or die "chown of file $_ failed: $!\n"; -d $_ && $rec and &$chown(glob_($_)); } }; &$chown(@_); } sub swapon { @_ == 1 or die "swapon <file>\n"; require fs; fs::swapon($_[0]); } sub swapoff { @_ == 1 or die "swapoff <file>\n"; require fs; fs::swapoff($_[0]); } sub uncpio { @_ and die "uncpio reads from stdin\n"; # cpioInstallArchive(gzdopen(0, "r"), NULL, 0, NULL, NULL, &fail); } sub rights { my $r = '-' x 9; my @rights = (qw(x w r x w r x w r), ['t', 0], ['s', 3], ['s', 6]); for (my $i = 0; $i < @rights; $i++) { if (vec(pack("S", $_[0]), $i, 1)) { my ($val, $place) = $i >= 9 ? @{$rights[$i]} : ($rights[$i], $i); my $old = \substr($r, 8 - $place, 1); $$old = $$old eq '-' && $i >= 9 ? uc $val : $val; } } my @types = split //, "_pc_d_b_-_l_s"; $types[($_[0] >> 12) & 0xf] . $r; } sub displaySize { my $m = $_[0] >> 12; $m == 4 || $m == 8 || $m == 10; } sub ls { my ($l, $h) = getopts(\@_, qw(lh)); $h and die "usage: ls [-l] <files...>\n"; @_ or @_ = '.'; @_ == 1 && -d $_[0] and @_ = glob_($_[0]); foreach (sort @_) { if ($l) { my @s = lstat or warn("can not stat file $_\n"), next; formline( "@<<<<<<<<< @<<<<<<< @<<<<<<< @>>>>>>>> @>>>>>>>>>>>>>>> @*\n", rights($s[2]), getpwuid $s[4] || $s[4], getgrgid $s[5] || $s[5], displaySize($s[2]) ? $s[7] : join(", ", unmakedev($s[6])), scalar localtime $s[9], -l $_ ? "$_ -> " . readlink $_ : $_); print $^A; $^A = ''; } else { print "$_\n" } } } sub cp { @_ >= 2 or die "usage: cp <sources> <dest>\n(this cp does -Rfl by default)\n"; cp_af(@_); } sub ps { @_ and die "usage: ps\n"; my ($pid, $rss, $cpu, $cmd); my ($uptime) = split ' ', first(cat_("/proc/uptime")); my $hertz = 100; require c; my $page = c::getpagesize() / 1024; open PS, ">&STDOUT"; #- PS must be not be localised otherwise the "format PS" fails format PS_TOP = PID RSS %CPU CMD . format PS = @>>>> @>>>> @>>> @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< $pid, $rss, $cpu, $cmd . foreach (sort { $a <=> $b } grep { /\d+/ } all('/proc')) { $pid = $_; my @l = split(' ', cat_("/proc/$pid/stat")); $cpu = sprintf "%2.1f", max(0, min(99, ($l[13] + $l[14]) * 100 / $hertz / ($uptime - $l[21] / $hertz))); $rss = (split ' ', cat_("/proc/$pid/stat"))[23] * $page; ($cmd = cat_("/proc/$pid/cmdline")) =~ s/\0/ /g; $cmd ||= (split ' ', (cat_("/proc/$pid/stat"))[0])[1]; write PS; } } sub dd { my $u = "usage: dd [-h] [-p] [if=<file>] [of=<file>] [bs=<number>] [count=<number>]\n"; my ($help, $percent) = getopts(\@_, qw(hp)); die $u if $help; my %h = (if => *STDIN, of => *STDOUT, bs => 512, count => undef); foreach (@_) { /(.*?)=(.*)/ && exists $h{$1} or die $u; $h{$1} = $2; } local (*IF, *OF); my ($tmp, $nb, $read); ref($h{if}) eq 'GLOB' ? (*IF = $h{if}) : sysopen(IF, $h{if}, 0) || die "error: can not open file $h{if}\n"; ref($h{of}) eq 'GLOB' ? (*OF = $h{of}) : sysopen(OF, $h{of}, 0x41) || die "error: can not open file $h{of}\n"; $h{bs} = removeXiBSuffix($h{bs}); for ($nb = 0; !$h{count} || $nb < $h{count}; $nb++) { printf "\r%02.1d%%", 100 * $nb / $h{count} if $h{count} && $percent; $read = sysread(IF, $tmp, $h{bs}) or ($h{count} ? die "error: can not read block $nb\n" : last); syswrite(OF, $tmp) or die "error: can not write block $nb\n"; $read < $h{bs} and $read = 1, last; } print STDERR "\r$nb+$read records in\n"; print STDERR "$nb+$read records out\n"; } sub head_tail { my ($h, $n) = getopts(\@_, qw(hn)); $h || @_ < to_bool($n) and die "usage: $0 [-h] [-n lines] [<file>]\n"; $n = $n ? shift : 10; my $fh; @_ ? open($fh, $_[0]) || die "error: can not open file $_[0]\n" : ($fh = *STDIN); if ($0 eq 'head') { local $_; while (<$fh>) { $n-- or return; print } } else { @_ = (); local $_; while (<$fh>) { push @_, $_; @_ > $n and shift } print @_; } } sub head { $0 = 'head'; &head_tail } sub tail { $0 = 'tail'; &head_tail } sub strings { my ($h, $o, $n) = getopts(\@_, qw(hon)); $h and die "usage: strings [-o] [-n min-length] [<files>]\n"; $n = $n ? shift : 4; $/ = "\0"; @ARGV = @_; my $l = 0; local $_; while (<>) { while (/[$printable_chars]{$n,}/og) { printf "%07d ", ($l + length $') if $o; print "$&\n"; } $l += length; } continue { $l = 0 if eof } } sub hexdump { my $i = 0; $/ = \16; @ARGV = @_; local $_; while (<>) { printf "%08lX ", $i; $i += 16; print join(" ", (map { sprintf "%02X", $_ } unpack("C*", $_)), (s/[^$printable_chars]/./og, $_)[1]), "\n"; } } sub more { @ARGV = @_; require devices; my $tty = devices::make('tty'); my $n = 0; open(my $IN, $tty) or die "can not open $tty\n"; local $_; while (<>) { if (++$n == 25) { my $v = <$IN>; $v =~ /^q/ and exit 0; $n = 0; } print; } } sub insmod { my ($h) = getopts(\@_, qw(h)); $h || @_ == 0 and die "usage: insmod <module> [options]\n"; my $f = shift; require run_program; require modules; if (! -r $f) { my $name = basename($f); $name =~ s/\.k?o$//; ($f) = modules::extract_modules('/tmp', $name); } if (! -r $f) { die "can not find module $f\n"; } run_program::run(["/usr/bin/insmod_", "insmod"], "-f", $f, @_) or die("insmod $f failed"); unlink $f; } sub modprobe { my ($h) = getopts(\@_, qw(h)); $h || @_ == 0 and die "usage: modprobe <module> [options]\n"; my $name = shift; require modules; modules::load_dependencies("/modules/modules.dep"); modules::load_with_options([ $name ], { $name => join(' ', @_) }); } sub route { @_ == 0 or die "usage: route\nsorry, no modification handled\n"; my ($titles, @l) = cat_("/proc/net/route"); my @titles = split ' ', $titles; my %l; open ROUTE, ">&STDOUT"; #- ROUTE must be not be localised otherwise the "format ROUTE" fails format ROUTE_TOP = Destination Gateway Mask Iface . format ROUTE = @<<<<<<<<<<<< @<<<<<<<<<<<< @<<<<<<<<<<<< @<<<<<<< $l{Destination}, $l{Gateway}, $l{Mask}, $l{Iface} . foreach (@l) { /^\s*$/ and next; @l{@titles} = split; $_ = join ".", reverse map { hex $_ } unpack "a2a2a2a2", $_ foreach @l{qw(Destination Gateway Mask)}; $l{Destination} = 'default' if $l{Destination} eq "0.0.0.0"; $l{Gateway} = '*' if $l{Gateway} eq "0.0.0.0"; write ROUTE; } } sub df { my ($h) = getopts(\@_, qw(h)); my ($dev, $size, $free, $used, $use, $mntpoint); open DF, ">&STDOUT"; #- DF must be not be localised otherwise the "format DF" fails format DF_TOP = Filesystem Size Used Avail Use Mounted on . format DF = @<<<<<<<<<<<<<<<< @>>>>>>> @>>>>>>> @>>>>>>> @>>>>>% @<<<<<<<<<<<<<<<<<<<<<<<<< $dev, $size, $used, $free, $use, $mntpoint . my %h; foreach (cat_("/proc/mounts"), cat_("/etc/mtab")) { ($dev, $mntpoint) = split; $h{$dev} = $mntpoint; } foreach (sort keys %h) { $dev = $_; ($size, $free) = MDK::Common::System::df($mntpoint = $h{$dev}); $size or next; $use = int(100 * ($size - $free) / $size); $used = $size - $free; if ($h) { $used = int($used / 1024 . "M"); $size = int($size / 1024 . "M"); $free = int($free / 1024 . "M"); } write DF if $size; } } sub kill { my $signal = 15; @_ or die "usage: kill [-<signal>] pids\n"; $signal = (shift, $1)[1] if $_[0] =~ /^-(.*)/; kill $signal, @_ or die "kill failed: $!\n"; } sub lspci() { require detect_devices; print join "\n", detect_devices::stringlist(), ''; } *lssbus = \&lspci; sub dmesg() { print cat_("/tmp/syslog") } sub sort { my ($n, $h) = getopts(\@_, qw(nh)); $h and die "usage: sort [-n] [<file>]\n"; my $fh; @_ ? open($fh, $_[0]) || die "error: can not open file $_[0]\n" : ($fh = *STDIN); if ($n) { print(sort { $a <=> $b } <$fh>); } else { print(sort <$fh>); } } sub du { my ($s, $h) = getopts(\@_, qw(sh)); $h || !$s and die "usage: du -s [<directories>]\n"; my $f; $f = sub { my ($e) = @_; my $s = (lstat($e))[12]; $s += sum(map { &$f($_) } glob_("$e/*")) if !-l $e && -d $e; $s; }; print &$f($_) >> 1, "\t$_\n" foreach @_ ? @_ : glob_("*"); } sub install_cpio($$;@) { my ($dir, $name, @more) = @_; return "$dir/$name" if -e "$dir/$name"; my $cpio = "$dir.cpio.bz2"; -e $cpio or return; eval { rm("-r", $dir) }; mkdir $dir, 0755; require run_program; my $more = join " ", map { $_ && "$_ $_/*" } @more; run_program::run("cd $dir ; $ENV{LD_LOADER} bzip2 -cd $cpio | $ENV{LD_LOADER} cpio -id $name $name/* $more"); "$dir/$name"; } sub bug { my ($h) = getopts(\@_, "h"); $h and die "usage: bug\nput file report.bug on fat formatted floppy\n"; require detect_devices; mount devices::make(detect_devices::floppy()), "/fd0"; require install_any; output("/fd0/report.bug", install_any::report_bug("/mnt")); #- no other way :-( umount "/fd0"; common::sync(); } sub loadkeys { my ($h) = getopts(\@_, "h"); $h || @_ != 1 and die "usage: loadkeys <keyboard>\n"; require keyboard; keyboard::setup({ KEYBOARD => $_[0] }); } sub sync() { common::sync() } 1;