# translation of urpmi.po to Euskara # Latest versions of po files are at http://www.mandrivalinux.com/l10n/eu.php3 # EUSKARA: Mandriva Linux translation. # Copyright (C) 2001-2002, 2004, 2005, 2006, 2008 Free Software Foundation, Inc. # # Iñigo Salvador Azurmendi , 2001-2002, 2003, 2004, 2005, 2006, 2008. # Hizkuntza Politikarako Sailburuordetza , 2004. msgid "" msgstr "" "Project-Id-Version: urpmi\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-04-22 20:19+0200\n" "PO-Revision-Date: 2008-03-17 23:09+0100\n" "Last-Translator: Iñigo Salvador Azurmendi \n" "Language-Team: Euskara \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" #: ../gurpmi:30 ../gurpmi2:72 #, c-format msgid "RPM installation" msgstr "RPM instalaketa" #: ../gurpmi:44 #, c-format msgid "Error: unable to find file %s, will cancel operation" msgstr "Akatsa: ezin da %s fitxategia aurkitu, eragiketa galaraziko da" #: ../gurpmi:45 ../gurpmi2:166 ../gurpmi2:190 #, c-format msgid "_Ok" msgstr "_Ados" #: ../gurpmi:65 #, 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 "" "Iturburu pakete bat hautatu duzu:\n" "\n" "%s\n" "\n" "Segur aski ez zenuen ordenagailuan instalatu nahi (instalatzeak bere " "iturburu kodean aldaketak egin eta konpilatzeko aukera emango lizuke).\n" "\n" "Zer egin nahi duzu?" #: ../gurpmi:73 ../gurpmi:84 #, c-format msgid "" "You are about to install the following software packages on your computer:\n" "\n" "%s\n" "\n" "Proceed?" msgstr "" "Zure konputagailuan hurrengo software paketeak instalatzera zoaz:\n" "\n" "%s\n" "\n" "Jarraitu?" #: ../gurpmi:79 #, 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 "" "Software-pakete hau instalatzera zoaz ordenagailuan:\n" "\n" "%s\n" "\n" "Baliteke gordetzea bakarrik nahi izatea. Zer egin nahi duzu?" #: ../gurpmi:97 #, c-format msgid "_Install" msgstr "_Instalatu" #: ../gurpmi:98 #, c-format msgid "_Save" msgstr "_Gorde" #: ../gurpmi:99 ../gurpmi2:166 #, c-format msgid "_Cancel" msgstr "_Utzi" #: ../gurpmi:107 #, c-format msgid "Choose location to save file" msgstr "Aukeratu fitxategiko gordetzeko kokalekua" #: ../gurpmi.pm:39 ../urpmi:69 #, c-format msgid "" "urpmi version %s\n" "Copyright (C) 1999-2008 Mandriva.\n" "This is free software and may be redistributed under the terms of the GNU " "GPL.\n" "\n" "usage:\n" msgstr "" "urpmi %s bertsioa\n" "Copyright © 1999-2005 Mandriva.\n" "Software askea da hau eta GNU-ren GPL-k ezarritako baldintzak jarraituz " "birbanatu daiteke.\n" "\n" "erabilera:\n" #: ../gurpmi.pm:45 #, c-format msgid "Options:" msgstr "Aukerak:" #: ../gurpmi.pm:46 ../urpme:45 ../urpmf:35 ../urpmi:74 ../urpmi.addmedia:54 #: ../urpmi.recover:33 ../urpmi.removemedia:40 ../urpmi.update:32 ../urpmq:45 #, c-format msgid " --help - print this help message.\n" msgstr " --help - laguntza-mezu hau inprimatzen du.\n" #: ../gurpmi.pm:47 ../urpmi:81 #, c-format msgid "" " --auto - non-interactive mode, assume default answers to " "questions.\n" msgstr "" " --auto - modu ez-interaktiboa, galderen erantzun lehenetsiak " "erabili.\n" #: ../gurpmi.pm:48 ../urpmi:82 ../urpmq:52 #, c-format msgid "" " --auto-select - automatically select packages to upgrade the system.\n" msgstr "" " --auto-select - automatikoki sistemaren bertsioa berritzeko paketeak " "hautatzen ditu\n" #: ../gurpmi.pm:49 ../urpme:48 ../urpmi:104 ../urpmq:65 #, c-format msgid "" " --force - force invocation even if some packages do not exist.\n" msgstr "" " --force - deitzea behartzen du, nahiz eta pakete batzuk ez egon.\n" #: ../gurpmi.pm:50 ../urpmi:133 #, c-format msgid "" " --verify-rpm - verify rpm signature before installation\n" " (--no-verify-rpm disables it, default is enabled).\n" msgstr "" " --verify-rpm - egiaztatu rpm sinadura instalatu aurretik\n" " (--no-verify-rpm ezgaitzeko, era lehenetsian gaituta " "dago).\n" #: ../gurpmi.pm:52 ../urpmf:41 ../urpmi:75 ../urpmq:47 #, c-format msgid " --media - use only the given media, separated by comma.\n" msgstr "" " --media - emandako euskarria bakarrik erabiltzen du, komaz " "bereizita.\n" #: ../gurpmi.pm:53 ../urpmi:149 #, c-format msgid " -p - allow search in provides to find package.\n" msgstr "" " -p - paketeak aurkitzeko bilaketa 'provides'en egitea baimentzen du.\n" #: ../gurpmi.pm:54 ../urpmi:150 #, c-format msgid " -P - do not search in provides to find package.\n" msgstr " -p - paketeak aurkitzeko bilaketa ez du 'provides'en egiten.\n" #: ../gurpmi.pm:55 ../urpmi:111 ../urpmq:68 #, c-format msgid " --root - use another root for rpm installation.\n" msgstr " --root - beste root bat erabiltzen du rpm instalatzeko.\n" #: ../gurpmi.pm:56 ../urpmi:135 #, c-format msgid "" " --test - only verify if the installation can be achieved " "correctly.\n" msgstr "" " --test - instalazioa zuzen gauzatu daitekeen egiaztatzen du.\n" #: ../gurpmi.pm:57 ../urpmi:78 #, c-format msgid "" " --searchmedia - use only the given media to search requested packages.\n" msgstr "" " --searchmedia - soilik adierazitako euskarria erabiltzen du eskatutako " "paketeak bilatzeko.\n" #: ../gurpmi.pm:100 #, c-format msgid "No packages specified" msgstr "Ez da paketerik zehaztu" #: ../gurpmi2:52 #, c-format msgid "Please wait..." msgstr "Itxaron mesedez..." #: ../gurpmi2:61 #, c-format msgid "Must be root" msgstr "Root izan behar da" #: ../gurpmi2:102 #, c-format msgid "" "Some requested packages cannot be installed:\n" "%s\n" "Continue installation anyway?" msgstr "" "Eskatutako pakete batzuk ezin dira instalatu:\n" "%s\n" "Instalazioarekin jarraitu hala ere?" #: ../gurpmi2:126 #, c-format msgid "Warning" msgstr "Kontuz" #: ../gurpmi2:126 ../urpmi:638 #, c-format msgid "Ok" msgstr "Ados" #: ../gurpmi2:162 #, c-format msgid " (to upgrade)" msgstr " (Eguneratu)" #: ../gurpmi2:163 #, c-format msgid " (to install)" msgstr " (instalatu)" #: ../gurpmi2:166 #, c-format msgid "Package choice" msgstr "Paketa aukera" #: ../gurpmi2:167 #, c-format msgid "One of the following packages is needed:" msgstr "Ondoko paketeetako bat behar da:" #: ../gurpmi2:191 #, c-format msgid "_Abort" msgstr "_Geldiarazi" #: ../gurpmi2:213 #, c-format msgid "" "The following packages have to be removed for others to be upgraded:\n" "%s\n" "Continue installation anyway?" msgstr "" "Ondoko paketeak ezabatu egin behar dira besteak berritu ahal izateko:\n" "%s\n" "Instalazioarekin jarraitu hala ere?" #: ../gurpmi2:232 ../urpmi:604 #, c-format msgid "" "To satisfy dependencies, the following package is going to be installed:" msgstr "Mendekotasunak asetzeko, ondorengo paketea instalatuko da:" #: ../gurpmi2:233 ../urpmi:605 #, c-format msgid "" "To satisfy dependencies, the following packages are going to be installed:" msgstr "Mendekotasunak asetzeko, ondoko paketeak instalatuko dira:" #: ../gurpmi2:235 #, c-format msgid "(%d package, %d MB)" msgid_plural "(%d packages, %d MB)" msgstr[0] "(pakete %d, %d MB)" msgstr[1] "(%d pakete, %d MB)" #: ../gurpmi2:241 #, c-format msgid "Package installation..." msgstr "Paketearen instalazioa..." #: ../gurpmi2:243 ../urpm/main_loop.pm:48 #, c-format msgid "unable to get source packages, aborting" msgstr "ezin dira iturburuko paketeak lortu, abortatzen" #: ../gurpmi2:257 ../urpm/install.pm:81 #, c-format msgid "Preparing..." msgstr "Prestatzen..." #: ../gurpmi2:261 #, c-format msgid "Installing package `%s' (%s/%s)..." msgstr "`%s' paketea instalatzen (%s/%s)..." #: ../gurpmi2:278 ../urpmi:633 #, c-format msgid "Please insert the medium named \"%s\"" msgstr "Mesedez, sartu \"%s\" izeneko euskarria" #: ../gurpmi2:289 #, c-format msgid "Downloading package `%s'..." msgstr "`%s' paketea deskargatzen..." #: ../gurpmi2:308 #, c-format msgid "_Done" msgstr "_Eginda" #: ../gurpmi2:316 ../urpm/main_loop.pm:261 #, c-format msgid "" "Installation failed, some files are missing:\n" "%s\n" "You may want to update your urpmi database" msgstr "" "Huts egin du instalatzean, fitxategi batzuk falta dira:\n" "%s\n" "Zure urpmi datu-basea eguneratzea komeni da" #: ../gurpmi2:322 ../urpm/main_loop.pm:199 ../urpm/main_loop.pm:217 #: ../urpm/main_loop.pm:235 #, c-format msgid "Installation failed:" msgstr "Instalaketak huts egin du:" #: ../gurpmi2:327 #, c-format msgid "The package(s) are already installed" msgstr "Dena dago instalatuta" #: ../gurpmi2:329 #, c-format msgid "Installation finished" msgstr "Instalazioa amaitu da" #: ../gurpmi2:330 ../urpme:132 #, c-format msgid "removing %s" msgstr "%s kentzen" #: ../gurpmi2:338 ../urpmi:692 #, c-format msgid "restarting urpmi" msgstr "urpmi berrabiarazten" #: ../rpm-find-leaves:14 #, c-format msgid "" "usage: %s [options]\n" "where [options] are from\n" msgstr "" "erabilera: %s [aukerak]\n" "[aukerak] hemengoak dira\n" #: ../rpm-find-leaves:16 #, c-format msgid " -h|--help - print this help message.\n" msgstr " -h|--help - laguntza-mezu hau inprimatzen du.\n" #: ../rpm-find-leaves:17 #, c-format msgid " --root - use the given root instead of /\n" msgstr " --root - erabili emaniko erroa \"/\" ordez\n" #: ../rpm-find-leaves:18 #, c-format msgid " -g [group] - restrict results to specified group.\n" msgstr " -g [taldea] - emaitzak talde jakin batera murrizten ditu.\n" #: ../rpm-find-leaves:19 #, c-format msgid " defaults to %s.\n" msgstr " lehenetsia %s da.\n" #: ../rpm-find-leaves:20 #, c-format msgid " -f - output rpm full name (NVRA)\n" msgstr " -f - irteeran jarri rpm izen osoa (NVRA)\n" #: ../rurpmi:11 ../urpmi:281 #, c-format msgid "Only superuser is allowed to install packages" msgstr "Supererabiltzaileak bakarrik du paketeak instalatzeko baimena" #: ../rurpmi:18 #, c-format msgid "Running urpmi in restricted mode..." msgstr "urpmi modu murriztuan exekutatzen..." #: ../urpm.pm:110 #, c-format msgid "fail to create directory %s" msgstr "%s direktorioa sortzeak huts egin du" #: ../urpm.pm:111 #, c-format msgid "invalid owner for directory %s" msgstr "%s direktorioarentzako jabe baliogabea" #: ../urpm.pm:233 #, c-format msgid "unable to open rpmdb" msgstr "ezin da rpmdb ireki" #: ../urpm.pm:247 #, c-format msgid "invalid rpm file name [%s]" msgstr "rpm fitxategi-izen baliogabea [%s]" #: ../urpm.pm:253 #, c-format msgid "retrieving rpm file [%s] ..." msgstr "[%s] rpm fitxategia berreskuratzen..." #: ../urpm.pm:255 ../urpm/get_pkgs.pm:171 #, c-format msgid "...retrieving done" msgstr "...berreskuratu da" #: ../urpm.pm:258 ../urpm/download.pm:714 ../urpm/get_pkgs.pm:173 #: ../urpm/media.pm:793 ../urpm/media.pm:1237 ../urpm/media.pm:1405 #, c-format msgid "...retrieving failed: %s" msgstr "...berreskuratzeak huts egin du: %s" #: ../urpm.pm:263 #, c-format msgid "unable to access rpm file [%s]" msgstr "ezin izan da rpm fitxategia atzitu [%s]" #: ../urpm.pm:268 #, c-format msgid "unable to parse spec file %s [%s]" msgstr "ezin da %s spec fitxategia sintaktikoki egiaztatu [%s]" #: ../urpm.pm:276 #, c-format msgid "unable to register rpm file" msgstr "ezin da rpm fitxategia erregistratu" #: ../urpm.pm:278 #, c-format msgid "Incompatible architecture for rpm [%s]" msgstr "rpm-rentzako arkitektura bateraezina [%s]" #: ../urpm.pm:282 #, c-format msgid "error registering local packages" msgstr "errorea pakete lokalak erregistratzean" #: ../urpm.pm:367 #, c-format msgid "This operation is forbidden while running in restricted mode" msgstr "Eragiketa hau debekatuta dago modu murriztuan exekutatzerakoan" #: ../urpm/args.pm:142 ../urpm/args.pm:151 #, c-format msgid "bad proxy declaration on command line\n" msgstr "proxy-adierazpen okerra komando-lerroan\n" #: ../urpm/args.pm:300 #, c-format msgid "urpmq: cannot read rpm file \"%s\"\n" msgstr "urpmq: ezin da \"%s\" rpm fitxategia irakurri\n" #: ../urpm/args.pm:377 #, fuzzy, c-format msgid "unexpected expression %s" msgstr "Adierazpen patroiak:\n" #: ../urpm/args.pm:378 #, fuzzy, c-format msgid "missing expression before %s" msgstr "Sinadura falta da (%s)" #: ../urpm/args.pm:384 #, c-format msgid "unexpected expression %s (suggestion: use -a or -o ?)" msgstr "" #: ../urpm/args.pm:388 #, fuzzy, c-format msgid "no expression to close" msgstr "Adierazpen patroiak:\n" #: ../urpm/args.pm:397 #, c-format msgid "by default urpmf awaits a regexp. you should use option \"--literal\"" msgstr "" "era lehenetsian urpmf-k regexp bat espero du. \"--literal\" aukera erabili " "beharko zenuke" #: ../urpm/args.pm:469 #, c-format msgid "chroot directory doesn't exist" msgstr "chroot direktorioa ez da existitzen" #: ../urpm/args.pm:488 #, c-format msgid "Can't use %s without %s" msgstr "Ezin da %s %s gabe erabili" #: ../urpm/args.pm:491 ../urpm/args.pm:494 #, c-format msgid "Can't use %s with %s" msgstr "Ezin da %s %s-rekin erabili" #: ../urpm/args.pm:502 #, c-format msgid "Too many arguments\n" msgstr "Argumentu gehiegi\n" #: ../urpm/bug_report.pm:48 ../urpmi:258 #, c-format msgid "Copying failed" msgstr "Ezin izan da kopiatu" #: ../urpm/cdrom.pm:66 #, c-format msgid "" "You must mount CD-ROM yourself (or install perl-Hal-Cdroms to have it done " "automatically)" msgstr "" "CD-ROMa zuk zeuk muntatu behar duzu (edo perl-Hal-Cdroms instalatatu " "automatikoki egin dadin)" #: ../urpm/cdrom.pm:68 #, c-format msgid "HAL daemon (hald) is not running or not ready" msgstr "" #: ../urpm/cdrom.pm:161 ../urpm/cdrom.pm:166 #, c-format msgid "medium \"%s\" is not available" msgstr "\"%s\" euskarria ez dago eskuragarri" #: ../urpm/cdrom.pm:207 #, c-format msgid "unable to read rpm file [%s] from medium \"%s\"" msgstr "ezin izan dugu [%s] rpm fitxategia \"%s\" euskarrian irakurri" #: ../urpm/cfg.pm:81 #, c-format msgid "syntax error in config file at line %s" msgstr "sintaxi akatsa konfig fitxategiaren %s lerroan" #: ../urpm/cfg.pm:114 #, c-format msgid "unable to read config file [%s]" msgstr "ezin da konfig fitxategia irakurri [%s]" #: ../urpm/cfg.pm:140 #, c-format msgid "medium `%s' is defined twice, aborting" msgstr "'%s' euskarria bitan definituta dago, galarazten" #: ../urpm/cfg.pm:250 ../urpm/media.pm:456 ../urpm/media.pm:462 #, c-format msgid "unable to write config file [%s]" msgstr "ezin da [%s] konfigurazio-fitxategia idatzi" #: ../urpm/download.pm:100 #, c-format msgid "can not read proxy settings (not enough rights to read %s)" msgstr "" #: ../urpm/download.pm:125 #, c-format msgid "Please enter your credentials for accessing proxy\n" msgstr "Mesedez sartu proxy-ra sartzeko zure egiaztapen datuak\n" #: ../urpm/download.pm:126 #, c-format msgid "User name:" msgstr "Erabiltzaile izena:" #: ../urpm/download.pm:126 #, c-format msgid "Password:" msgstr "Pasahitza:" #: ../urpm/download.pm:210 #, c-format msgid "Unknown webfetch `%s' !!!\n" msgstr "webfetch `%s' ezezaguna !!!\n" #: ../urpm/download.pm:219 #, c-format msgid "%s failed: exited with signal %d" msgstr "%s-k huts egin du: %d seinalearekin irten da" #: ../urpm/download.pm:220 #, c-format msgid "%s failed: exited with %d" msgstr "%s-k huts egin du: %d-rekin irten da" #: ../urpm/download.pm:249 #, c-format msgid "copy failed" msgstr "kopiak huts egin du" #: ../urpm/download.pm:255 #, c-format msgid "wget is missing\n" msgstr "wget falta da\n" #: ../urpm/download.pm:322 #, c-format msgid "curl is missing\n" msgstr "curl falta da\n" #: ../urpm/download.pm:447 #, c-format msgid "curl failed: download canceled\n" msgstr "curl-ek huts egin du: deskarga galarazita\n" #: ../urpm/download.pm:486 #, c-format msgid "rsync is missing\n" msgstr "rsync falta da\n" #: ../urpm/download.pm:552 #, c-format msgid "ssh is missing\n" msgstr "ssh falta da\n" #: ../urpm/download.pm:571 #, c-format msgid "prozilla is missing\n" msgstr "prozilla falta da\n" #: ../urpm/download.pm:587 #, c-format msgid "Couldn't execute prozilla\n" msgstr "Ezin izan da prozilla exekutatu\n" #: ../urpm/download.pm:595 #, c-format msgid "aria2 is missing\n" msgstr "aria2 falta da\n" #: ../urpm/download.pm:698 #, c-format msgid " %s%% of %s completed, ETA = %s, speed = %s" msgstr " %s%% / %s osatuta, ETA = %s, abiadura = %s" #: ../urpm/download.pm:700 #, c-format msgid " %s%% completed, speed = %s" msgstr " %s%% osatuta, abiadura = %s" #: ../urpm/download.pm:763 #, c-format msgid "retrieving %s" msgstr "%s berreskuratzen" #: ../urpm/download.pm:767 #, c-format msgid "retrieved %s" msgstr "%s eskuratuta" #: ../urpm/download.pm:795 #, c-format msgid "unknown protocol defined for %s" msgstr "%s(e)rako protokolo ezezaguna definitu da" #: ../urpm/download.pm:815 #, c-format msgid "%s is not available, falling back on %s" msgstr "%s ez dago eskuragarri, %s erabiliko da" #: ../urpm/download.pm:819 #, c-format msgid "no webfetch found, supported webfetch are: %s\n" msgstr "webfetch ez da aurkitu, webfetch hauek onartzen dira: %s\n" #: ../urpm/download.pm:840 #, c-format msgid "unable to handle protocol: %s" msgstr "ezin da protokoloa maneiatu: %s" #: ../urpm/get_pkgs.pm:15 #, c-format msgid "cleaning %s and %s" msgstr "%s eta %s garbitzen" #: ../urpm/get_pkgs.pm:101 #, c-format msgid "package %s is not found." msgstr "ez da %s paketea aurkitu." #: ../urpm/get_pkgs.pm:149 #, c-format msgid "malformed URL: [%s]" msgstr "gaizki osatutako URL: [%s]" #: ../urpm/get_pkgs.pm:160 #, c-format msgid "sorry, you can't use --install-src to install remote .src.rpm files" msgstr "" "barkatu, ezin duzu --install-src erabili urruneko .src.rpm fitxategiak " "instalatzeko" #: ../urpm/get_pkgs.pm:167 #, c-format msgid "retrieving rpm files from medium \"%s\"..." msgstr "rpm fitxategiak berreskuratzen \"%s\" euskarritik..." #: ../urpm/install.pm:88 #, c-format msgid "[repackaging]" msgstr "[birpaketatzen]" #: ../urpm/install.pm:154 #, c-format msgid "" "created transaction for installing on %s (remove=%d, install=%d, upgrade=%d)" msgstr "" "transakzioa sortu da %s(e)n instalatzeko (kendu=%d, instalatu=%d,eguneratu=%" "d)" #: ../urpm/install.pm:157 #, c-format msgid "unable to create transaction" msgstr "ezin da transakziorik sortu" #: ../urpm/install.pm:180 #, c-format msgid "unable to extract rpm from delta-rpm package %s" msgstr "ezin da rpm atera %s delta-rpm paketetik" #: ../urpm/install.pm:193 #, c-format msgid "unable to install package %s" msgstr "ezin da %s paketea instalatu" #: ../urpm/install.pm:196 #, c-format msgid "removing bad rpm (%s) from %s" msgstr "(%s) rpm okerra %s-tik ezabatzen" #: ../urpm/install.pm:197 ../urpm/install.pm:254 #, c-format msgid "removing %s failed: %s" msgstr "%s ezabatzeak huts egin du: %s" #: ../urpm/install.pm:235 #, c-format msgid "Removing package %s" msgstr "%s paketea ezabatzen" #: ../urpm/install.pm:236 #, c-format msgid "removing package %s" msgstr "%s paketea kentzen" #: ../urpm/install.pm:252 #, c-format msgid "removing installed rpms (%s) from %s" msgstr "%2$s-n instalatutako rpm-ak (%1$s) ezabatzen" #: ../urpm/install.pm:260 #, c-format msgid "More information on package %s" msgstr "Informazio gehiago %s paketeari buruz" #: ../urpm/ldap.pm:71 #, c-format msgid "Cannot create ldap cache directory" msgstr "Ezin da ldap katxe direktorioa sortu" #: ../urpm/ldap.pm:73 #, c-format msgid "Cannot write cache file for ldap\n" msgstr "Ezin da ldap-entzako katxe fitxategia idatzi\n" #: ../urpm/ldap.pm:162 #, c-format msgid "No server defined, missing uri or host" msgstr "Ez da zerbitzaririk zehaztu, uri edo ostalaria falta da" #: ../urpm/ldap.pm:163 #, c-format msgid "No base defined" msgstr "Ez da oinarria definitu" #: ../urpm/ldap.pm:172 ../urpm/ldap.pm:175 #, c-format msgid "Cannot connect to ldap uri:" msgstr "Ezin da ldap uri-ra konektatu:" #: ../urpm/lock.pm:62 #, c-format msgid "%s database is locked. Waiting..." msgstr "%s datubasea giltzatuta dago. Itxoiten..." #: ../urpm/lock.pm:63 #, c-format msgid "aborting" msgstr "galarazten" #: ../urpm/lock.pm:65 #, c-format msgid "%s database is locked (another program is already using it)" msgstr "" "%s datubasea giltzatuta dago (beste programa bat hura erabiltzen ari da)" #: ../urpm/main_loop.pm:113 #, c-format msgid "The following package has bad signature" msgstr "Ondoko paketeak sinadura okerra dauka" #: ../urpm/main_loop.pm:114 #, c-format msgid "The following packages have bad signatures" msgstr "Ondoko pakete hauek sinadura okerra dute" #: ../urpm/main_loop.pm:115 #, c-format msgid "Do you want to continue installation ?" msgstr "Instalatzen jarraitu nahi duzu?" #: ../urpm/main_loop.pm:128 ../urpm/main_loop.pm:206 ../urpm/main_loop.pm:224 #, c-format msgid "Installation failed" msgstr "Instalazioak huts egin du" #: ../urpm/main_loop.pm:132 #, c-format msgid "removing installed rpms (%s)" msgstr "instalatutako rpm-ak ezabatzen (%s)" #: ../urpm/main_loop.pm:152 #, c-format msgid "distributing %s" msgstr "%s banatzen" #: ../urpm/main_loop.pm:167 #, c-format msgid "installing %s from %s" msgstr "%s %s-tik instalatzen" #: ../urpm/main_loop.pm:169 #, c-format msgid "installing %s" msgstr "%s instalatzen" #: ../urpm/main_loop.pm:207 #, c-format msgid "Try installation without checking dependencies? (y/N) " msgstr "Mendekotasunak egiaztatu gabe saiatu nahi duzu instalatzen? (b/E) " #: ../urpm/main_loop.pm:225 #, c-format msgid "Try harder to install (--force)? (y/N) " msgstr "Indar handiagoz instalatzen saiatu (--force)? (b/E) " #: ../urpm/main_loop.pm:259 ../urpm/main_loop.pm:267 #, c-format msgid "Error" msgstr "Akatsa" #: ../urpm/main_loop.pm:267 #, c-format msgid "" "Installation failed, bad rpms:\n" "%s" msgstr "" "Instalaketak huts egin du, rpm okerrak:\n" "%s" #: ../urpm/main_loop.pm:273 #, c-format msgid "%d installation transaction failed" msgid_plural "%d installation transactions failed" msgstr[0] "instalaketa eragiketa %d-ek huts egin du" msgstr[1] "%d instalaketa eragiketek huts egin dute" #: ../urpm/main_loop.pm:286 #, c-format msgid "Packages are up to date" msgstr "Paketeak egunean daude" #: ../urpm/main_loop.pm:294 #, c-format msgid "Package %s is already installed" msgstr "%s paketea dagoeneko instalatuta dago" #: ../urpm/main_loop.pm:295 #, c-format msgid "Packages %s are already installed" msgstr "%s paketeak dagoeneko instalatuta daude" #: ../urpm/main_loop.pm:298 #, c-format msgid "Package %s can not be installed" msgstr "%s paketea ezin da instalatu" #: ../urpm/main_loop.pm:299 #, c-format msgid "Packages %s can not be installed" msgstr "%s paketeak ezin dira instalatu" #: ../urpm/main_loop.pm:307 #, c-format msgid "Installation is possible" msgstr "Instalazioa posible da" #: ../urpm/md5sum.pm:20 #, c-format msgid "examining %s file" msgstr "%s fitxategia aztertzen" #: ../urpm/md5sum.pm:22 #, c-format msgid "warning: md5sum for %s unavailable in MD5SUM file" msgstr "oharra: %s-rentzako md5sum ezin da eskuratu MD5SUM fitxategian" #: ../urpm/media.pm:194 #, c-format msgid "virtual medium \"%s\" should have a clear url, medium ignored" msgstr "" "\"%s\" euskarri birtualak url garbia eduki beharko luke, ez ikusi egingo zaio" #: ../urpm/media.pm:196 #, c-format msgid "unable to access list file of \"%s\", medium ignored" msgstr "" "ezin da \"%s\"(r)en zerrenda-fitxategia atzitu, euskarriari ez ikusi egingo " "zaio" #: ../urpm/media.pm:203 #, c-format msgid "unable to access synthesis file of \"%s\", medium ignored" msgstr "" "ezin da \"%s\"(r)en synthesis fitxategia atzitu, euskarriari jaramonik ez" #: ../urpm/media.pm:230 #, c-format msgid "trying to override existing medium \"%s\", skipping" msgstr "" "existitzen den \"%s\" euskarriari jaramonik ez egiteko ahalegina, ekiditen" #: ../urpm/media.pm:415 #, c-format msgid "failed to migrate removable device, ignoring media" msgstr "gailu eramangarria migratzeak huts egin du, euskarria baztertzen" #: ../urpm/media.pm:458 ../urpm/media.pm:464 #, c-format msgid "wrote config file [%s]" msgstr "[%s] konfigurazio-fitxategia idatzi" #: ../urpm/media.pm:507 #, c-format msgid "Can't use parallel mode with use-distrib mode" msgstr "Modu paraleloa ezin da use-distrib moduarekin erabili " #: ../urpm/media.pm:515 #, c-format msgid "using associated media for parallel mode: %s" msgstr "modu paralelorako asoziatutako euskarria erabiltzen: %s" #: ../urpm/media.pm:531 #, c-format msgid "" "--synthesis cannot be used with --media, --excludemedia, --sortmedia, --" "update, --use-distrib or --parallel" msgstr "" "--laburpena ezin da hauekin erabili: --media, --excludemedia, --sortmedia, --" "update, --use-distrib edo --parallel" #: ../urpm/media.pm:624 #, c-format msgid "Search start: %s end: %s" msgstr "Bilaketa hasera: %s amaiera: %s" #: ../urpm/media.pm:641 #, c-format msgid "skipping package %s" msgstr "%s paketea saltatzen" #: ../urpm/media.pm:657 #, c-format msgid "would install instead of upgrade package %s" msgstr "%s paketea eguneratu beharrean instalatu egingo luke" #: ../urpm/media.pm:682 #, c-format msgid "medium \"%s\" already exists" msgstr "\"%s\" euskarria lehendik badago" #: ../urpm/media.pm:724 #, c-format msgid "(ignored by default)" msgstr "(era lehenetsian jaramonik ez)" #: ../urpm/media.pm:730 #, c-format msgid "adding medium \"%s\" before remote medium \"%s\"" msgstr "\"%s\" euskarria \"%s\" urruneko euskarriaren aurretik eransten" #: ../urpm/media.pm:736 #, c-format msgid "adding medium \"%s\"" msgstr "\"%s\" euskarria eransten" #: ../urpm/media.pm:765 #, c-format msgid "directory %s does not exist" msgstr "%s direktorioa ez da existitzen" #: ../urpm/media.pm:773 #, c-format msgid "this location doesn't seem to contain any distribution" msgstr "kokapen honek ez dirudi banaketarik daukanik" #: ../urpm/media.pm:791 #, c-format msgid "unable to parse media.cfg" msgstr "ezin izan da media.cfg sintaktikoki egiaztatu" #: ../urpm/media.pm:794 #, c-format msgid "unable to access the distribution medium (no media.cfg file found)" msgstr "ezin da banaketa menua atzitu (ez da media.cfg fitxategirik aurkitu)" #: ../urpm/media.pm:812 #, c-format msgid "skipping non compatible media `%s' (for %s)" msgstr "alboratu '%s' euskarri ez bateragarria (%s-rentzako)" #: ../urpm/media.pm:861 #, c-format msgid "retrieving media.cfg file..." msgstr "media.cfg fitxategia berreskuratzen..." #: ../urpm/media.pm:902 #, c-format msgid "trying to select nonexistent medium \"%s\"" msgstr "existitzen ez den \"%s\" euskarria hautatu nahian zabiltza" #: ../urpm/media.pm:905 #, c-format msgid "selecting multiple media: %s" msgstr "hainbat euskarri hautatzen: %s" #: ../urpm/media.pm:925 #, c-format msgid "removing medium \"%s\"" msgstr "\"%s\" euskarria kentzen" #: ../urpm/media.pm:1001 #, c-format msgid "reconfiguring urpmi for media \"%s\"" msgstr "\"%s\" euskarriarentzako urpmi birkonfiguratzen" #: ../urpm/media.pm:1039 #, c-format msgid "...reconfiguration failed" msgstr "...birkonfiguraketak hutsegin du" #: ../urpm/media.pm:1045 #, c-format msgid "reconfiguration done" msgstr "birkonfiguraketa amaituta" #: ../urpm/media.pm:1061 #, c-format msgid "Error generating names file: dependency %d not found" msgstr "Akatsa izen fitxategia sortzerakoan: %d menpekotasuna ez da aurkitu" #: ../urpm/media.pm:1082 #, c-format msgid "medium \"%s\" is up-to-date" msgstr "\"%s\" euskarria egunean dago" #: ../urpm/media.pm:1093 #, c-format msgid "examining synthesis file [%s]" msgstr "[%s] laburpen-fitxategia aztertzen" #: ../urpm/media.pm:1113 #, c-format msgid "problem reading synthesis file of medium \"%s\"" msgstr "arazoa \"%s\" euskarriaren laburpen-fitxategia irakurtzean" #: ../urpm/media.pm:1126 ../urpm/media.pm:1209 #, c-format msgid "copying [%s] for medium \"%s\"..." msgstr "[%s] kopiatzen \"%s\" euskarriarentzako..." #: ../urpm/media.pm:1128 ../urpm/media.pm:1183 ../urpm/media.pm:1421 #, c-format msgid "...copying failed" msgstr "...ezin izan da kopiatu" #: ../urpm/media.pm:1179 #, c-format msgid "copying description file of \"%s\"..." msgstr "\"%s\"(r)en deskribapen-fitxategia kopiatzen..." #: ../urpm/media.pm:1181 ../urpm/media.pm:1213 #, c-format msgid "...copying done" msgstr "...kopiatzea burutu da" #: ../urpm/media.pm:1215 #, c-format msgid "copy of [%s] failed (file is suspiciously small)" msgstr "ezin izan da [%s] kopiatu (fitxategia txikiegia da)" #: ../urpm/media.pm:1248 #, c-format msgid "computing md5sum of retrieved source synthesis" msgstr "berreskuratutako iturburu synthesis-en md5sum kalkulatzen" #: ../urpm/media.pm:1250 ../urpm/media.pm:1671 #, c-format msgid "retrieval of [%s] failed (md5sum mismatch)" msgstr "[%s]-ren berreskuperaketak huts egin du (md5sum ez dator bat)" #: ../urpm/media.pm:1265 #, c-format msgid "genhdlist2 failed on %s" msgstr "genhdlist2-k huts egin du %s-rekin" #: ../urpm/media.pm:1275 #, c-format msgid "comparing %s and %s" msgstr "%s eta %s parekatzen" #: ../urpm/media.pm:1300 #, c-format msgid "invalid hdlist file %s for medium \"%s\"" msgstr "%s hdlist fitxategi baliogabea \"%s\" euskarriarentzat" #: ../urpm/media.pm:1326 #, c-format msgid "copying MD5SUM file of \"%s\"..." msgstr "\"%s\"-ren MD5SUM fitxategia kopiatzen..." #: ../urpm/media.pm:1380 #, c-format msgid "retrieving source synthesis of \"%s\"..." msgstr "\"%s\"-ren synthesis iturburua berreskuratzen..." #: ../urpm/media.pm:1397 #, c-format msgid "found probed synthesis as %s" msgstr "aztertutako synthesis aurkitu da %s gisa" #: ../urpm/media.pm:1404 ../urpm/media.pm:1512 #, c-format msgid "no synthesis file found for medium \"%s\"" msgstr "ez da \"%s\" euskarriaren synthesis fitxategirik aurkitu" #: ../urpm/media.pm:1455 #, c-format msgid "examining pubkey file of \"%s\"..." msgstr "\"%s\"(r)en gako publikoen fitxategia aztertzen..." #: ../urpm/media.pm:1467 #, c-format msgid "...imported key %s from pubkey file of \"%s\"" msgstr "...%s gakoa inportatu da \"%s\"(r)en gako publikoen fitxategitik" #: ../urpm/media.pm:1471 #, c-format msgid "unable to import pubkey file of \"%s\"" msgstr "ezin da \"%s\"(r)en gako publikoen fitxategia inportatu" #: ../urpm/media.pm:1545 #, c-format msgid "updated medium \"%s\"" msgstr "\"%s\" euskarri eguneratua" #: ../urpm/media.pm:1665 #, c-format msgid "retrieval of [%s] failed" msgstr "[%s] berreskurapenak huts egin du" #: ../urpm/mirrors.pm:19 #, c-format msgid "trying again with mirror %s" msgstr "%s ispiluarekin berriz saiatzen" #: ../urpm/mirrors.pm:55 #, c-format msgid "Could not find a mirror from mirrorlist %s" msgstr "Ezin da ispilu bat aurkitu %s ispilu zerrendan" #: ../urpm/mirrors.pm:181 #, c-format msgid "found geolocalisation %s %.2f %.2f from timezone %s" msgstr "%s %.2f %.2f geokokapenak aurkitu dira %s ordugunetik" #: ../urpm/mirrors.pm:226 #, c-format msgid "getting mirror list from %s" msgstr "%s-tik ispilu zerrenda jasotzen" #: ../urpm/msg.pm:63 ../urpmi:518 ../urpmi:534 ../urpmi:624 #, c-format msgid "Nn" msgstr "eEnN" #. -PO: Add here the keys which might be pressed in the "Yes"-case. #: ../urpm/msg.pm:64 ../urpme:37 ../urpmi:519 ../urpmi:535 ../urpmi:574 #: ../urpmi:625 ../urpmi:661 ../urpmi:667 ../urpmi.addmedia:138 #, c-format msgid "Yy" msgstr "bByYsS" #: ../urpm/msg.pm:121 #, c-format msgid "Sorry, bad choice, try again\n" msgstr "Aukera okerra, saiatu berriro\n" #: ../urpm/msg.pm:152 #, c-format msgid "Package" msgstr "Paketea" #: ../urpm/msg.pm:152 #, c-format msgid "Version" msgstr "Bertsioa" #: ../urpm/msg.pm:152 #, c-format msgid "Release" msgstr "Askapena" #: ../urpm/msg.pm:152 #, c-format msgid "Arch" msgstr "Arkitektura" #: ../urpm/msg.pm:161 #, c-format msgid "(suggested)" msgstr "(iradokita)" #: ../urpm/msg.pm:176 #, c-format msgid "medium \"%s\"" msgstr "\"%s\" euskarria" #: ../urpm/msg.pm:176 #, c-format msgid "command line" msgstr "komando lerroa" #: ../urpm/msg.pm:190 #, c-format msgid "B" msgstr "B" #: ../urpm/msg.pm:190 #, c-format msgid "KB" msgstr "KB" #: ../urpm/msg.pm:190 #, c-format msgid "MB" msgstr "MB" #: ../urpm/msg.pm:190 #, c-format msgid "GB" msgstr "GB" #: ../urpm/msg.pm:190 ../urpm/msg.pm:199 #, c-format msgid "TB" msgstr "TB" #: ../urpm/parallel.pm:14 #, c-format msgid "unable to parse \"%s\" in file [%s]" msgstr "[%s] fitxategian ezin da \"%s\" analizatu" #: ../urpm/parallel.pm:23 #, c-format msgid "examining parallel handler in file [%s]" msgstr "[%s] fitxategiko maneiatzaile paraleloa aztertzen" #: ../urpm/parallel.pm:34 #, c-format msgid "found parallel handler for nodes: %s" msgstr "nodoentzako maneiatzaile paraleloa aurkitu da: %s" #: ../urpm/parallel.pm:38 #, c-format msgid "unable to use parallel option \"%s\"" msgstr "ezin da \"%s\" aukera paraleloa erabili" #: ../urpm/removable.pm:26 #, c-format msgid "unable to access medium \"%s\"." msgstr "ezin da \"%s\" euskarria atzitu." #: ../urpm/removable.pm:66 ../urpm/removable.pm:84 #, c-format msgid "mounting %s" msgstr "%s muntatzen" #: ../urpm/removable.pm:97 #, c-format msgid "unmounting %s" msgstr "%s desmuntatzen" #: ../urpm/select.pm:28 #, c-format msgid "urpmi was restarted, and the list of priority packages did not change" msgstr "" "urpmi berrabiatu egin da, eta lehentasuna duten paketeen zerrenda ez da " "aldatu" #: ../urpm/select.pm:30 #, c-format msgid "" "urpmi was restarted, and the list of priority packages did change: %s vs %s" msgstr "" "urpmi berrabiatu egin da, eta lehentasuna duten paketeen zerrenda aldatu " "egin da: %s vs %s" #: ../urpm/select.pm:191 #, c-format msgid "No package named %s" msgstr "Ez dago %s izeneko paketerik" #: ../urpm/select.pm:193 ../urpme:107 #, c-format msgid "The following packages contain %s: %s" msgstr "Ondoko paketeek %s dute: %s" #: ../urpm/select.pm:516 ../urpm/select.pm:559 #, c-format msgid "due to missing %s" msgstr "%s falta delako" #: ../urpm/select.pm:517 #, c-format msgid "due to already installed %s" msgstr "dagoeneko instalatutako %s dela eta" #: ../urpm/select.pm:518 ../urpm/select.pm:557 #, c-format msgid "due to unsatisfied %s" msgstr "%s bete gabe dagoelako" #: ../urpm/select.pm:524 #, c-format msgid "trying to promote %s" msgstr "%s jaso nahian" #: ../urpm/select.pm:525 #, c-format msgid "in order to keep %s" msgstr "%s gordetzeko" #: ../urpm/select.pm:553 #, c-format msgid "in order to install %s" msgstr "%s instalatzeko" #: ../urpm/select.pm:563 #, c-format msgid "due to conflicts with %s" msgstr "%s(r)ekin gatazkak daudelako" #: ../urpm/signature.pm:29 #, c-format msgid "Invalid signature (%s)" msgstr "Sinadura ez da baliozkoa (%s)" #: ../urpm/signature.pm:60 #, c-format msgid "Invalid Key ID (%s)" msgstr "ID gakoa ez da baliozkoa (%s)" #: ../urpm/signature.pm:62 #, c-format msgid "Missing signature (%s)" msgstr "Sinadura falta da (%s)" #: ../urpm/sys.pm:156 #, c-format msgid "system" msgstr "" #: ../urpm/sys.pm:191 #, c-format msgid "You should restart %s for %s" msgstr "" #: ../urpm/sys.pm:271 #, c-format msgid "Can't write file" msgstr "Ezin da fitxategia idatzi" #: ../urpm/sys.pm:271 #, c-format msgid "Can't open file" msgstr "Ezin da fitxategia ireki" #: ../urpm/sys.pm:284 #, c-format msgid "Can't move file %s to %s" msgstr "Ezin da %s fitxategiar %s-ra mugitu" #: ../urpme:40 #, c-format msgid "" "urpme version %s\n" "Copyright (C) 1999-2008 Mandriva.\n" "This is free software and may be redistributed under the terms of the GNU " "GPL.\n" "\n" "usage:\n" msgstr "" "urpme %s bertsioa\n" "Copyright © 1999-2008 Mandriva.\n" "Software askea da hau eta GNU-ren GPL-k ezarritako baldintzak jarraituz " "birbanatu daiteke.\n" "\n" "erabilera:\n" #: ../urpme:46 #, c-format msgid " --auto - automatically select a package in choices.\n" msgstr " --auto - automatikoki pakete bat hautatzen du aukeratik.\n" #: ../urpme:47 #, c-format msgid " --test - verify if the removal can be achieved correctly.\n" msgstr " --test - ezabaketa egokiro egin daitekeen egiaztatzen du.\n" #: ../urpme:49 ../urpmi:110 ../urpmq:67 #, c-format msgid " --parallel - distributed urpmi across machines of alias.\n" msgstr " --parallel - urpmi banatzen du alias-makinen artean.\n" #: ../urpme:50 ../urpmi:141 #, c-format msgid " --repackage - Re-package the files before erasing\n" msgstr " --repackage - fitxategiak bir-paketatu ezabatu aurretik\n" #: ../urpme:51 #, c-format msgid " --root - use another root for rpm removal.\n" msgstr " --root - beste root bat erabiltzen du rpm ezabaketarako.\n" #: ../urpme:52 ../urpmf:40 ../urpmi:112 ../urpmi.addmedia:69 #: ../urpmi.recover:36 ../urpmi.removemedia:45 ../urpmi.update:46 ../urpmq:69 #, c-format msgid " --urpmi-root - use another root for urpmi db & rpm installation.\n" msgstr "" " --urpmi-root - erabili beste erro bat urpmi db eta rpm instalatzeko.\n" #: ../urpme:53 #, c-format msgid " --noscripts - do not execute package scriptlet(s).\n" msgstr " --noscripts - ez du scriptlet(s) paketea exekutatzen\n" #: ../urpme:54 #, c-format msgid "" " --use-distrib - configure urpme on the fly from a distrib tree, useful\n" " to (un)install a chroot with --root option.\n" msgstr "" " --use-distrib - urpme berehala konfiguratzen du distrib zuhaitzetik, \n" " erabilgarria chroot --root aukerarekin (des)" "instalatzeko.\n" #: ../urpme:56 ../urpmi:152 ../urpmq:86 #, c-format msgid " --verbose, -v - verbose mode.\n" msgstr " --verbose, -v - modu berritsua.\n" #: ../urpme:57 #, c-format msgid " -a - select all packages matching expression.\n" msgstr "" " -a - pakete denak hautatzen ditu bat datozen adierazpenak " "kontuan hartuz.\n" #: ../urpme:70 #, c-format msgid "Only superuser is allowed to remove packages" msgstr "Supererabiltzaileak soilik dauka paketeak ezabatzeko baimena" #: ../urpme:100 #, c-format msgid "unknown packages" msgstr "pakete ezezagunak" #: ../urpme:100 #, c-format msgid "unknown package" msgstr "pakete ezezaguna" #: ../urpme:113 ../urpmi:548 #, c-format msgid "removing package %s will break your system" msgstr "%s paketea kentzen baduzu, sistema apurtuko duzu" #: ../urpme:115 #, c-format msgid "Nothing to remove" msgstr "Ez dago ezer kentzeko" #: ../urpme:120 #, c-format msgid "Checking to remove the following packages" msgstr "Ondoko paketeak kentzeko egiaztatzen" #: ../urpme:124 #, c-format msgid "To satisfy dependencies, the following package will be removed" msgid_plural "" "To satisfy dependencies, the following %d packages will be removed" msgstr[0] "Mendekotasunak asetzeko, ondoko paketea ezabatuko da" msgstr[1] "Mendekotasunak asetzeko, ondoko %d paketeak ezabatuko dira" #: ../urpme:128 #, c-format msgid "Remove %d package?" msgid_plural "Remove %d packages?" msgstr[0] "%d paketea ezabatu?" msgstr[1] "%d paketeak ezabatu?" #: ../urpme:128 ../urpmi:575 ../urpmi:662 ../urpmi.addmedia:141 #, c-format msgid " (y/N) " msgstr " (b/E) " #: ../urpme:150 #, c-format msgid "Removal failed" msgstr "Kentzean huts egin du" #: ../urpmf:29 #, c-format msgid "" "urpmf version %s\n" "Copyright (C) 2002-2006 Mandriva.\n" "This is free software and may be redistributed under the terms of the GNU " "GPL.\n" "\n" "usage: urpmf [options] pattern-expression\n" msgstr "" "urpmf %s bertsioa\n" "Copyright © 2002-2006 Mandriva.\n" "Software askea da hau eta GNU-ren GPL-k ezarritako baldintzak jarraituz " "birbanatu daiteke.\n" "\n" "erabilera: urpmf [aukerak] adierazpen-patroia\n" #: ../urpmf:36 #, c-format msgid " --version - print this tool's version number.\n" msgstr " --version - inprimatu tresna honen bertsio zenbakia.\n" #: ../urpmf:37 ../urpmi:132 ../urpmq:79 #, c-format msgid " --env - use specific environment (typically a bug report).\n" msgstr "" " --env - ingurune espezifikoa erabiltzen du (normalean\n" " errorearen berri ematea).\n" #: ../urpmf:38 ../urpmi:76 ../urpmq:49 #, c-format msgid " --excludemedia - do not use the given media, separated by comma.\n" msgstr "" " --excludemedia - ez erabili adierazitako euskarria, komaz bereizita.\n" #: ../urpmf:39 #, c-format msgid "" " --literal, -l - don't match patterns, use argument as a literal string.\n" msgstr "" " --literal, -l - ez parekatu patroi gisa, erabili argumentua hitzez hitz " "testu ilara gisa.\n" #: ../urpmf:42 ../urpmi:79 ../urpmq:50 #, c-format msgid "" " --sortmedia - sort media according to substrings separated by comma.\n" msgstr "" " --sortmedia - euskarriak komaz bereizitako azpikateen arabera " "ordenatzen ditu.\n" #: ../urpmf:43 #, c-format msgid " --use-distrib - use the given path to access media\n" msgstr " --use-distrib - erabili emandako bidea euskarria atzitzeko\n" #: ../urpmf:44 ../urpmi:80 ../urpmq:51 #, c-format msgid " --synthesis - use the given synthesis instead of urpmi db.\n" msgstr "" " --synthesis - emandako laburpena erabiltzen du urpmi db-ren ordez.\n" #: ../urpmf:45 #, c-format msgid " --uniq - do not print identical lines twice.\n" msgstr " --uniq - ez inprimatu lerro berdinak.\n" #: ../urpmf:46 ../urpmi:77 ../urpmq:46 #, c-format msgid " --update - use only update media.\n" msgstr " --update - eguneratze-euskarria bakarrik erabiltzen du.\n" #: ../urpmf:47 #, c-format msgid " --verbose - verbose mode.\n" msgstr " --verbose - modu berritsua.\n" #: ../urpmf:48 #, c-format msgid " -i - ignore case distinctions in patterns.\n" msgstr " -i - ereduetan ez bereiztu hizki larri eta xeheak.\n" #: ../urpmf:49 #, c-format msgid " -I - honor case distinctions in patterns (default).\n" msgstr "" " -I - ereduetan hizki larri eta xeheak bereiztu (lehenetsia).\n" #: ../urpmf:50 #, c-format msgid " -F - change field separator (defaults to ':').\n" msgstr " -F - aldatu eremu bakantzailea (lehenetsia ':').\n" #: ../urpmf:51 #, c-format msgid "Pattern expressions:\n" msgstr "Adierazpen patroiak:\n" #: ../urpmf:52 #, c-format msgid " text - any text is parsed as a regexp, unless -l is used.\n" msgstr "" " text - edozein testu regexp bezala aztertzen da, -l erabiltzen " "denean ezik..\n" #: ../urpmf:53 #, c-format msgid " -e - include perl code directly as perl -e.\n" msgstr " -e - perl kodea sartzen du zuzenean perl -e gisa.\n" #: ../urpmf:54 #, c-format msgid " -a - binary AND operator.\n" msgstr " -a - ETA eragile bitarra.\n" #: ../urpmf:55 #, c-format msgid " -o - binary OR operator.\n" msgstr " -o - EDO eragile bitarra.\n" #: ../urpmf:56 #, c-format msgid " ! - unary NOT.\n" msgstr " ! - EZ unarioa.\n" #: ../urpmf:57 #, c-format msgid " ( ) - left and right parentheses.\n" msgstr " ( ) - ezker eta eskuin parentesiak.\n" #: ../urpmf:58 #, c-format msgid "List of tags:\n" msgstr "Etiketa zerrendak:\n" #: ../urpmf:59 #, c-format msgid " --qf - specify a printf-like output format\n" msgstr " --qf - printf-antzeko irteera formatua zehazten du\n" #: ../urpmf:60 #, c-format msgid " example: '%%name:%%files'\n" msgstr " adibidez: '%%name:%%files'\n" #: ../urpmf:61 #, c-format msgid " --arch - architecture\n" msgstr " --arch - arkitektura\n" #: ../urpmf:62 #, c-format msgid " --buildhost - build host\n" msgstr " --buildhost - eraikuntza ostalaria\n" #: ../urpmf:63 #, c-format msgid " --buildtime - build time\n" msgstr " --buildtime - eraikuntza ordua\n" #: ../urpmf:64 #, c-format msgid " --conffiles - configuration files\n" msgstr " --conffiles - konfiguraketa fitxategiak\n" #: ../urpmf:65 #, c-format msgid " --conflicts - conflict tags\n" msgstr " --conflicts - \"gatazka\" etiketak\n" #: ../urpmf:66 #, c-format msgid " --description - package description\n" msgstr " --description - paketeen deskribapena\n" #: ../urpmf:67 #, c-format msgid " --distribution - distribution\n" msgstr " --distribution - banaketa\n" #: ../urpmf:68 #, c-format msgid " --epoch - epoch\n" msgstr " --epoch - garaia.\n" #: ../urpmf:69 #, c-format msgid " --filename - filename of the package\n" msgstr " --filename - paketearen fitxategi izena\n" #: ../urpmf:70 #, c-format msgid " --files - list of files contained in the package\n" msgstr " --files - paketeak biltzen dituen fitxategien izen zerrenda\n" #: ../urpmf:71 #, c-format msgid " --group - group\n" msgstr " --group - taldea\n" #: ../urpmf:72 #, c-format msgid " --license - license\n" msgstr " --license - lizentzia\n" #: ../urpmf:73 #, c-format msgid " --name - package name\n" msgstr " --name - pakete izena\n" #: ../urpmf:74 #, c-format msgid " --obsoletes - obsoletes tags\n" msgstr " --obsoletes - \"zaharkituak\" etiketak\n" #: ../urpmf:75 #, c-format msgid " --packager - packager\n" msgstr " --packager - paketatzailea\n" #: ../urpmf:76 #, c-format msgid " --provides - provides tags\n" msgstr " --provides - \"hornitu\" etiketak.\n" #: ../urpmf:77 #, c-format msgid " --requires - requires tags\n" msgstr " --requires - \"beharrezko\" etiketak\n" #: ../urpmf:78 #, c-format msgid " --size - installed size\n" msgstr " --size - neurria instalatu ondoren\n" #: ../urpmf:79 #, c-format msgid " --sourcerpm - source rpm name\n" msgstr " --sourcerpm - rpm iturburu izena.\n" #: ../urpmf:80 #, c-format msgid " --suggests - suggests tags\n" msgstr " --suggests - bilatu «suggests» bezala markatutakoen artean\n" #: ../urpmf:81 #, c-format msgid " --summary - summary\n" msgstr " --summary - laburpena\n" #: ../urpmf:82 #, c-format msgid " --url - url\n" msgstr " --url - url\n" #: ../urpmf:83 #, c-format msgid " --vendor - vendor\n" msgstr " --verbose - hornitzailea\n" #: ../urpmf:84 #, c-format msgid " -m - the media in which the package was found\n" msgstr " -m - paketea zeukan euskarria\n" #: ../urpmf:85 ../urpmq:96 #, c-format msgid " -f - print version, release and arch with name.\n" msgstr "" " -f - bertsioa, argitalpena eta fitxategia ere izenarekin inprimatzen " "ditu.\n" #: ../urpmf:153 #, fuzzy, c-format msgid "unterminated expression (%s)" msgstr "Adierazpen patroiak:\n" #: ../urpmf:198 #, c-format msgid "Incorrect format: you may use only one multi-valued tag" msgstr "Formatu okerra: etiketa balio-anitz bakarra erabili dezakezu" #: ../urpmf:248 ../urpmi:265 ../urpmq:141 #, c-format msgid "using specific environment on %s\n" msgstr "%s(e)n ingurune espezifikoa erabiliz\n" #: ../urpmf:291 #, c-format msgid "no hdlist available for medium \"%s\"" msgstr "ez dago \"%s\" euskarriarentzako hdlist eskuragarri" #: ../urpmf:298 #, c-format msgid "no synthesis available for medium \"%s\"" msgstr "ez dago \"%s\" euskarriarentzako synthesis eskuragarri" #: ../urpmf:307 #, c-format msgid "no xml-info available for medium \"%s\"" msgstr "ez dago \"%s\" euskarriarentzako xml-info eskuragarri" #: ../urpmi:83 #, c-format msgid " --auto-update - update media then upgrade the system.\n" msgstr " --auto-update - euskarria eguneratu, ondoren systema berritu.\n" #: ../urpmi:84 #, c-format msgid " --no-md5sum - disable MD5SUM file checking.\n" msgstr " --no-md5sum - MD5SUM fitxategiaren egiaztapena desgaitzen du.\n" #: ../urpmi:85 #, c-format msgid " --force-key - force update of gpg key.\n" msgstr " --force-key - gpg gakoa eguneratzera behartzen du.\n" #: ../urpmi:86 ../urpmq:53 #, c-format msgid " --no-suggests - do not auto select \"suggested\" packages.\n" msgstr " --no-suggests - ez aukeratu automatikoki \"suggested\" paketeak.\n" #: ../urpmi:87 #, c-format msgid "" " --no-uninstall - never ask to uninstall a package, abort the " "installation.\n" msgstr "" " --no-uninstall - inoiz ez du pakete bat desinstalatu nahi den galdetzen, " "instalazioa bertan behera uzten da.\n" #: ../urpmi:88 #, c-format msgid " --no-install - don't install packages (only download)\n" msgstr " --no-install - paketeak ez instalatu (jaitsi soilik)\n" #: ../urpmi:89 ../urpmq:55 #, c-format msgid "" " --keep - keep existing packages if possible, reject requested\n" " packages that lead to removals.\n" msgstr "" " --keep - gorde lehendik dauden paketeak ahal bada, ezetsi kentzea\n" " eragiten duten pakete-eskaerak.\n" #: ../urpmi:91 #, c-format msgid "" " --split-level - split in small transaction if more than given packages\n" " are going to be installed or upgraded,\n" " default is %d.\n" msgstr "" " --split-level - transakzio txikiagoetan zatitzen du adierazitako " "paketeak\n" " baino gehiago instalatu edo bertsio-berrituko badira,\n" " lehenetsia %d da.\n" #: ../urpmi:95 #, c-format msgid " --split-length - small transaction length, default is %d.\n" msgstr " --split-length - transakzio txikiaren luzera, lehenetsia %d da.\n" #: ../urpmi:97 #, c-format msgid " --fuzzy, -y - impose fuzzy search.\n" msgstr " --fuzzy, -y - hurbilketazko bilaketa inposatzen du.\n" #: ../urpmi:98 #, c-format msgid " --buildrequires - install the buildrequires of the packages\n" msgstr " --buildrequires - instalatu paketeen «buildrequires»\n" #: ../urpmi:99 #, c-format msgid " --install-src - install only source package (no binaries).\n" msgstr "" " --install-src - iturburu-paketea bakarrik instalatzen du (binarioak ez).\n" #: ../urpmi:100 #, c-format msgid " --clean - remove rpm from cache before anything else.\n" msgstr " --clean - kendu rpm cachetik beste ezer baino lehen.\n" #: ../urpmi:101 #, c-format msgid " --noclean - don't clean rpms from cache.\n" msgstr " --noclean - ez garbitu rpm-ak katxetik.\n" #: ../urpmi:102 #, c-format msgid " --justdb - update only the rpm db, not the filesystem.\n" msgstr " --justdb - eguneratu soilik rpm db, ez fitxategi-sistema.\n" #: ../urpmi:103 #, c-format msgid "" " --replacepkgs - force installing packages which are already installed.\n" msgstr "" " --replacepkgs - behartu dagoeneko instalatuta dauden paketeen " "instalaketa.\n" #: ../urpmi:105 #, c-format msgid "" " --allow-nodeps - allow asking user to install packages without\n" " dependencies checking.\n" msgstr "" " --allow-nodeps - erabiltzaileari paketeak instalatzeko eskatzeko aukera\n" "ematen du, mendekotasunak egiaztatu gabe.\n" #: ../urpmi:107 #, c-format msgid "" " --allow-force - allow asking user to install packages without\n" " dependencies checking and integrity.\n" msgstr "" " --allow-force - erabiltzaileari paketeak instalatzeko eskatzeko aukera\n" "ematen du, mendekotasunak eta osotasuna egiaztatu gabe.\n" #: ../urpmi:109 #, fuzzy, c-format msgid " --allow-suggests - auto select \"suggested\" packages.\n" msgstr " --no-suggests - ez aukeratu automatikoki \"suggested\" paketeak.\n" #: ../urpmi:113 #, c-format msgid "" " --use-distrib - configure urpmi on the fly from a distrib tree, useful\n" " to install a chroot with --root option.\n" msgstr "" " --use-distrib - urpmi berehala konfiguratzen du distrib zuhaitzetik, \n" " erabilgarria chroot --root aukerarekin instalatzeko.\n" #: ../urpmi:115 #, c-format msgid "" " --downloader - program to use to retrieve distant files. \n" " known programs: %s\n" msgstr "" " --downloader - urruneko fitxategiak berreskuratzeko erabili beharreko " "programa. \n" " programa ezagunak: %s\n" #: ../urpmi:118 #, c-format msgid " --curl-options - additional options to pass to curl\n" msgstr " --curl-options - curl-i aukera gehiago pasatzeko\n" #: ../urpmi:119 #, c-format msgid " --rsync-options- additional options to pass to rsync\n" msgstr " --rsync-options- rsync-i aukera gehigarriak pasatzeko\n" #: ../urpmi:120 #, c-format msgid " --wget-options - additional options to pass to wget\n" msgstr " --wget-options - wget-i aukera gehigarriak pasatzeko\n" #: ../urpmi:121 #, c-format msgid " --prozilla-options - additional options to pass to prozilla\n" msgstr " --prozilla-options - prozilla-i aukera gehiago pasatzeko\n" #: ../urpmi:122 #, c-format msgid " --aria2-options - additional options to pass to aria2\n" msgstr " --aria2-options - aria2-ri pasatzeko aukera osagarriak\n" #: ../urpmi:123 ../urpmi.addmedia:58 ../urpmi.update:36 #, c-format msgid " --limit-rate - limit the download speed.\n" msgstr " --limit-rate - deskarga-abiadura mugatzen du.\n" #: ../urpmi:124 #, c-format msgid "" " --resume - resume transfer of partially-downloaded files\n" " (--no-resume disables it, default is disabled).\n" msgstr "" " --resume - partzialki deskargatutako fitxategien transferentziari " "berriro\n" "ekiten dio ('--no-resume'-k hori desgaitzen du; lehenetsia desgaituta da).\n" #: ../urpmi:126 ../urpmi.addmedia:59 ../urpmi.update:37 ../urpmq:75 #, c-format msgid "" " --proxy - use specified HTTP proxy, the port number is assumed\n" " to be 1080 by default (format is ).\n" msgstr "" " --proxy - HTTP proxy espezifikoa erabiltzen du, ataka-zenbakiak \n" " 1080 izan behar du lehenespenez (formatua hau da: \n" ").\n" #: ../urpmi:128 ../urpmi.addmedia:61 ../urpmi.update:39 ../urpmq:77 #, c-format msgid "" " --proxy-user - specify user and password to use for proxy\n" " authentication (format is ).\n" msgstr "" " --proxy-user - zehaztu proxy-aren autentifikazioan erabiltzeko \n" "erabiltzailea eta pasahitza (formatua hau da: ).\n" #: ../urpmi:130 #, c-format msgid "" " --bug - output a bug report in directory indicated by\n" " next arg.\n" msgstr "" " --bug - errorearen berri ematea bideratzen du, hurrengo " "argumentuak\n" " adierazitako direktorioan.\n" #: ../urpmi:136 #, c-format msgid " --excludepath - exclude path separated by comma.\n" msgstr " --excludepath - kanpoan uzten du komaz bereizitako bide-izena.\n" #: ../urpmi:137 #, c-format msgid " --excludedocs - exclude doc files.\n" msgstr " --excludedocs - docs fitxategiak kanpoan uzten ditu.\n" #: ../urpmi:138 #, c-format msgid " --ignoresize - don't verify disk space before installation.\n" msgstr "" " --ignoresize - ez egiaztatu diskoan dagoen lekua instalazio aurretik.\n" #: ../urpmi:139 #, c-format msgid " --ignorearch - allow to install rpms for unmatched architectures.\n" msgstr " --ignorearch - bat ez datozen arkitekturetan instalatzen uzteko.\n" #: ../urpmi:140 #, c-format msgid " --noscripts - do not execute package scriptlet(s)\n" msgstr " --noscripts - ez du scriptlet(s) paketea exekutatzen\n" #: ../urpmi:142 #, c-format msgid " --skip - packages which installation should be skipped\n" msgstr " --skip - instalatu behar ez liratekeen paketeak\n" #: ../urpmi:143 #, c-format msgid " --prefer - packages which should be preferred\n" msgstr " --prefer - hobetsi beharko liratekeen paketeak\n" #: ../urpmi:144 #, c-format msgid "" " --more-choices - when several packages are found, propose more choices\n" " than the default.\n" msgstr "" " --more-choices - pakete ugari aurkitzen direnean, proposatu lehenetsiak\n" " baino aukera gehiago.\n" #: ../urpmi:146 #, c-format msgid " --nolock - don't lock rpm db.\n" msgstr " --nolock - ez giltzatu rpm db.\n" #: ../urpmi:147 #, c-format msgid " --strict-arch - upgrade only packages with the same architecture.\n" msgstr "" " --strict-arch - berritu soilik arkitektura berdina duten paketeak.\n" #: ../urpmi:148 ../urpmq:94 #, c-format msgid " -a - select all matches on command line.\n" msgstr " -a - komando-lerroko bat-etortze guztiak hautatzen ditu.\n" #: ../urpmi:151 #, c-format msgid " --quiet, -q - quiet mode.\n" msgstr " --quiet, -q - modu lasaia.\n" #: ../urpmi:153 #, c-format msgid " --debug - very verbose mode.\n" msgstr " --debug - oso modu berritsua.\n" #: ../urpmi:154 #, c-format msgid " names or rpm files given on command line will be installed.\n" msgstr "" " komando-lerroan idatzitako izenak edo rpm fitxategiak instalatuko dira.\n" #: ../urpmi:182 #, c-format msgid "Error: can't use --auto-select along with package list.\n" msgstr "Akatsa: ezin da erabili -auto-select pakete zerrendarekin.\n" #: ../urpmi:189 #, c-format msgid "" "Error: To generate a bug report, specify the usual command-line arguments\n" "along with --bug.\n" msgstr "" "Akatsa: akats txosten bat sortzeko, zehaztu komando-lerroko ohiko " "argumentuak\n" "--bug argumentuarekin batera.\n" #: ../urpmi:219 #, c-format msgid "You can't install binary rpm files when using --install-src" msgstr "Ezin dituzu rpm fitxategi bitarrak instalatu --install-src erabilita" #: ../urpmi:220 #, c-format msgid "You can't install spec files" msgstr "Zuk ezin dituzu 'spec' fitxategiak instalatu" #: ../urpmi:227 #, c-format msgid "defaulting to --buildrequires" msgstr "lehenetsia --buildrequires" #: ../urpmi:232 #, c-format msgid "" "please use --buildrequires or --install-src, defaulting to --buildrequires" msgstr "" "mesedez erabili --buildrequires edo --install-src, lehenetsia --buildrequires" #: ../urpmi:252 #, c-format msgid "" "Directory [%s] already exists, please use another directory for bug report " "or delete it" msgstr "" "[%s] direktorioa badago lehendik, erabili beste direktorio bat akatsen berri " "emateko edo ezabatu" #: ../urpmi:253 #, c-format msgid "Unable to create directory [%s] for bug report" msgstr "Ezin da erroreen berri emateko [%s] direktorioa sortu" #: ../urpmi:264 #, c-format msgid "Environment directory %s does not exist" msgstr "%s ingurune direktorioa ez da existitzen" #: ../urpmi:287 #, c-format msgid "" "Error: %s appears to be mounted read-only.\n" "Use --allow-force to force operation." msgstr "" "Akatsa: %s irakurri-soilik muntatu dela dirudi.\n" "Erabili --allow-force eragiketa behartzeko." #: ../urpmi:374 #, c-format msgid "Updating media...\n" msgstr "Euskarria eguneratzen...\n" #. -PO: here format is ": (to upgrade)" #: ../urpmi:453 #, c-format msgid "%s: %s (to upgrade)" msgstr "%s: %s (eguneratu)" #. -PO: here format is " (to upgrade)" #: ../urpmi:455 #, c-format msgid "%s (to upgrade)" msgstr "%s (eguneratu)" #. -PO: here format is ": (to install)" #: ../urpmi:459 #, c-format msgid "%s: %s (to install)" msgstr "%s: %s (instalatu)" #. -PO: here format is " (to install)" #: ../urpmi:461 #, c-format msgid "%s (to install)" msgstr "%s (instalatu)" #: ../urpmi:467 #, c-format msgid "" "In order to satisfy the '%s' dependency, one of the following packages is " "needed:" msgstr "%s mendekotasuna asetzeko, ondoko paketeetako bat behar da:" #: ../urpmi:470 #, c-format msgid "What is your choice? (1-%d) " msgstr "Zein hautatzen duzu? (1-%d) " #: ../urpmi:511 #, c-format msgid "" "The following package cannot be installed because it depends on packages\n" "that are older than the installed ones:\n" "%s" msgstr "" "Ondoko paketea ezin dira instalatu instalatuta daudenak baino zaharrago\n" " batzuekiko menpekotasuna dutelako:\n" "%s" #: ../urpmi:513 #, c-format msgid "" "The following packages can't be installed because they depend on packages\n" "that are older than the installed ones:\n" "%s" msgstr "" "Ondoko paketeak ezin dira instalatu instalatuta daudenak baino zaharrago\n" " batzuekiko menpekotasuna dutelako:\n" "%s" #: ../urpmi:520 ../urpmi:536 #, c-format msgid "" "\n" "Continue installation anyway?" msgstr "" "\n" "Instalazioarekin jarraitu hala ere?" #: ../urpmi:521 ../urpmi:537 ../urpmi:626 ../urpmi.addmedia:141 #, c-format msgid " (Y/n) " msgstr " (B/e) " #: ../urpmi:529 #, c-format msgid "" "A requested package cannot be installed:\n" "%s" msgstr "" "Eskatutako pakete bat ezin da instalatu:\n" "%s" #: ../urpmi:530 #, c-format msgid "" "Some requested packages cannot be installed:\n" "%s" msgstr "" "Eskatutako pakete bat ezin da instalatu:\n" "%s" #: ../urpmi:557 #, c-format msgid "" "The installation cannot continue because the following package\n" "has to be removed for others to be upgraded:\n" "%s\n" msgstr "" "Ezin da instalazioarekin jarraitu, honako paketea\n" "kendu egin behar direlako, beste batzuen bertsioa berritzeko:\n" "%s\n" #: ../urpmi:559 #, c-format msgid "" "The installation cannot continue because the following packages\n" "have to be removed for others to be upgraded:\n" "%s\n" msgstr "" "Ezin da instalazioarekin jarraitu, honako paketeak\n" "kendu egin behar direlako, beste batzuen bertsioa berritzeko:\n" "%s\n" #: ../urpmi:566 #, c-format msgid "" "The following package has to be removed for others to be upgraded:\n" "%s" msgstr "" "Ondoko paketea ezabatu behar da besteak berritu ahal daitezen:\n" "%s" #: ../urpmi:567 #, c-format msgid "" "The following packages have to be removed for others to be upgraded:\n" "%s" msgstr "" "Pakete hauek kendu egin behar dira besteak berritzeko:\n" "%s" #: ../urpmi:569 #, c-format msgid "(test only, removal will not be actually done)" msgstr "(froga soilik, ezabaketa ez da egingo)" #: ../urpmi:590 #, c-format msgid "" "You must first call urpmi with --buildrequires to install the following " "dependencies:\n" "%s\n" msgstr "" "Lehenengo urpmi deitu behar duzu --buildrequires aukerarekin ondoko " "mendekotasunak instalatzeko:\n" "%s\n" #: ../urpmi:607 #, c-format msgid "(test only, installation will not be actually done)" msgstr "(froga soilik, instalazioa ez da egingo)" #: ../urpmi:613 #, c-format msgid "%s of additional disk space will be used." msgstr "diskoan %s leku gehiago erabiliko da." #: ../urpmi:614 #, c-format msgid "%s of disk space will be freed." msgstr "diskoan %s lekua askatuko da." #: ../urpmi:615 #, c-format msgid "%s of packages will be retrieved." msgstr "paketeen %s eskuratuko dira." #: ../urpmi:616 #, c-format msgid "Proceed with the installation of one package?" msgid_plural "Proceed with the installation of the %d packages?" msgstr[0] "Pakete baten instalaketarekin arrera jarraitu nahi duzu?" msgstr[1] "%d paketeen instalaketarekin jarraitu nahi duzu?" #: ../urpmi:638 #, c-format msgid "Cancel" msgstr "Utzi" #: ../urpmi:646 #, c-format msgid "Press Enter when mounted..." msgstr "Sakatu 'Sartu' muntatuta dagoenean..." #. -PO: The URI types strings 'file:', 'ftp:', 'http:', and 'cdrom:' must not be translated! #. -PO: neither the ``with''. Only what is between can be translated. #: ../urpmi.addmedia:36 #, c-format msgid "" "usage: urpmi.addmedia [options] \n" "where is one of\n" " [file:/]/\n" " ftp://:@/\n" " ftp:///\n" " http:///\n" " cdrom://\n" "\n" "usage: urpmi.addmedia [options] --distrib --mirrorlist \n" "usage: urpmi.addmedia [options] --mirrorlist \n" "\n" "examples:\n" "\n" " urpmi.addmedia --distrib --mirrorlist '$MIRRORLIST'\n" " urpmi.addmedia --mirrorlist '$MIRRORLIST' backports media/main/backports\n" "\n" "\n" "and [options] are from\n" msgstr "" "Erabilera: urpmi.addmedia [aukerak] \n" "non hauetako bat den\n" " [file:/]/\n" " ftp://:@/\n" " ftp:///\n" " http:///\n" " cdrom://\n" "\n" "erabilera: urpmi.addmedia [aukerak] --distrib --mirrorlist \n" "erabilera: urpmi.addmedia [aukerak] --mirrorlist \n" "\n" "adibideak:\n" "\n" " urpmi.addmedia --distrib --mirrorlist '$MIRRORLIST'\n" " urpmi.addmedia --mirrorlist '$MIRRORLIST' backports media/main/backports\n" "\n" "\n" "eta [aukerak] hemengoak diren\n" #: ../urpmi.addmedia:55 ../urpmi.update:33 ../urpmq:72 #, c-format msgid " --wget - use wget to retrieve distant files.\n" msgstr "" " --wget - wget erabiltzen du urruneko fitxategiak eskuratzeko.\n" #: ../urpmi.addmedia:56 ../urpmi.update:34 ../urpmq:73 #, c-format msgid " --curl - use curl to retrieve distant files.\n" msgstr " --curl - curl erabiltzen du urruneko fitxategiak eskuratzeko.\n" #: ../urpmi.addmedia:57 ../urpmi.update:35 ../urpmq:74 #, c-format msgid " --prozilla - use prozilla to retrieve distant files.\n" msgstr "" " --prozilla - prozilla erabiltzen du urruneko fitxategiak eskuratzeko.\n" #: ../urpmi.addmedia:63 #, c-format msgid " --update - create an update medium.\n" msgstr " --update - eguneratze-euskarria sortzen du.\n" #: ../urpmi.addmedia:64 #, c-format msgid "" " --xml-info - use the specific policy for downloading xml info files\n" " one of: never, on-demand, update-only, always. cf urpmi." "cfg(5)\n" msgstr "" " --xml-info - erabili xml info fitxategiak jaisteko politika zehatza\n" " hauetako bat: never, on-demand, update-only, always. cf " "urpmi.cfg(5)\n" #: ../urpmi.addmedia:66 #, c-format msgid " --probe-synthesis - use synthesis file.\n" msgstr " --probe-synthesis - synthesis fitxategia erabili.\n" #: ../urpmi.addmedia:67 #, c-format msgid " --probe-rpms - use rpm files (instead of synthesis).\n" msgstr " --probe-rpms - erabili rpm fitxategiak (synthesis ordez).\n" #: ../urpmi.addmedia:68 #, c-format msgid " --no-probe - do not try to find any synthesis file.\n" msgstr " --no-probe - ez saiatu synthesis fitxategiak aurkitzen.\n" #: ../urpmi.addmedia:70 #, c-format msgid "" " --distrib - automatically create all media from an installation\n" " medium.\n" msgstr "" " --distrib - instalazio-euskarri batetik euskarri guztiak sortzen \n" " ditu automatikoki.\n" #: ../urpmi.addmedia:72 #, c-format msgid " --interactive - with --distrib, ask confirmation for each media\n" msgstr "" " --interactive - , --distrib aukerarekin, eskatu berrespena euskarri " "bakoitzarentzako\n" #: ../urpmi.addmedia:73 #, c-format msgid " --all-media - with --distrib, add every listed media\n" msgstr "" " --all-media - , --distrib aukerarekin, erantsi zerrendatutako euskarri " "bakoitza\n" #: ../urpmi.addmedia:74 #, c-format msgid "" " --from - use specified url for list of mirrors, the default is\n" " %s\n" msgstr "" " --from - ispiluen zerrendaren url espezifikoa erabiltzen du,\n" " lehenetsia %s da\n" #: ../urpmi.addmedia:76 #, c-format msgid " --virtual - create virtual media wich are always up-to-date.\n" msgstr " --virtual - beti eguneratuta dauden euskarri birtualak sortu.\n" #: ../urpmi.addmedia:77 ../urpmi.update:42 #, c-format msgid " --no-md5sum - disable MD5SUM file checking.\n" msgstr " --no-md5sum - MD5SUM fitxategiaren egiaztapena desgaitzen du.\n" #: ../urpmi.addmedia:78 #, c-format msgid " --nopubkey - don't import pubkey of added media\n" msgstr " --nopubkey - ez inportatu erantsitako euskarrien gako-publikoa\n" #: ../urpmi.addmedia:79 #, c-format msgid " --raw - add the media in config, but don't update it.\n" msgstr " --raw - erantsi euskarria konfig-en, baino ez eguneratu.\n" #: ../urpmi.addmedia:80 ../urpmi.removemedia:43 ../urpmi.update:51 #, c-format msgid " -q - quiet mode.\n" msgstr " -q - modu lasaia.\n" #: ../urpmi.addmedia:81 ../urpmi.removemedia:44 ../urpmi.update:52 #, c-format msgid " -v - verbose mode.\n" msgstr " -v - modu berritsua.\n" #: ../urpmi.addmedia:101 #, c-format msgid "known xml-info policies are %s" msgstr "xml-info politika ezagunak dira %s" #: ../urpmi.addmedia:112 #, c-format msgid "no argument needed for --distrib --mirrorlist " msgstr "ez da argumenturik behar honentzako: --distrib --mirrorlist " #: ../urpmi.addmedia:117 #, c-format msgid "bad (for local directory, the path must be absolute)" msgstr " okerra (bertako direktorioentzako, bide absolutua behar da)" #: ../urpmi.addmedia:121 #, c-format msgid "Only superuser is allowed to add media" msgstr "Supererabiltzaileak soilik dauka euskarriak eransteko baimena" #: ../urpmi.addmedia:124 #, c-format msgid "creating config file [%s]" msgstr "Konfig fitxategia sortzen [%s]" #: ../urpmi.addmedia:125 #, c-format msgid "Can't create config file [%s]" msgstr "Ezin da konfig fitxategia sortu [%s]" #: ../urpmi.addmedia:133 #, c-format msgid "no need to give with --distrib" msgstr "" "ez dago eman beharrik --distrib aukerarekin" #: ../urpmi.addmedia:141 #, fuzzy, c-format msgid "" "\n" "Do you want to add media '%s'?" msgstr "" "\n" "'%s' euskarria erantsi nahi duzu" #: ../urpmi.addmedia:167 #, c-format msgid " missing\n" msgstr " falta da\n" #: ../urpmi.addmedia:170 #, c-format msgid "Can't use %s with remote medium" msgstr "Urruneko euskarriekin ezin da %s erabili" #: ../urpmi.addmedia:182 #, c-format msgid "unable to add medium" msgstr "ezin da euskarria erantsi" #: ../urpmi.recover:28 #, c-format msgid "" "urpmi.recover version %s\n" "Copyright (C) 2006 Mandriva.\n" "This is free software and may be redistributed under the terms of the GNU " "GPL.\n" "\n" "usage:\n" msgstr "" "urpmi.recover %s bertsioa\n" "Copyright (C) 2006 Mandriva.\n" "Software askea da hau eta GNU-ren GPL-k ezarritako baldintzak jarraituz " "birbanatu daiteke.\n" "\n" "erabilera:\n" #: ../urpmi.recover:34 #, c-format msgid " --checkpoint - set repackaging start now\n" msgstr " --checkpoint - ezarri birpaketatze bat orain hasi dadin\n" #: ../urpmi.recover:35 #, c-format msgid " --noclean - don't clean repackage directory on checkpoint\n" msgstr "" " --noclean - ez garbitu birpaketatzeko direktorioa kontrol-puntua " "jartzean\n" #: ../urpmi.recover:37 #, c-format msgid "" " --list - list transactions since provided date/duration argument\n" msgstr "" " --list - zerrendatu ematen den data/iraupen argumentutik egin " "diren eragiketak\n" #: ../urpmi.recover:38 #, c-format msgid " --list-all - list all transactions in rpmdb (long)\n" msgstr " --list-url - zerrendatu rpmdb-en dauden eragiketa guztiak (luzea)\n" #: ../urpmi.recover:39 #, c-format msgid " --list-safe - list transactions since checkpoint\n" msgstr " --list-safe - zerrendatu kontrol-puntutik egindako eragiketak\n" #: ../urpmi.recover:40 #, c-format msgid "" " --rollback - rollback until specified date,\n" " or rollback the specified number of transactions\n" msgstr "" " --rollback - zehaztutako data arte atzera egin,\n" " edo zehaztutako eragiketa kopurua desegin\n" #: ../urpmi.recover:42 #, c-format msgid " --disable - turn off repackaging\n" msgstr " --disable - berpaketatzea ezgaitu\n" #: ../urpmi.recover:57 #, c-format msgid "Invalid date or duration [%s]\n" msgstr "Data edo iraupen baliogabea [%s]\n" #: ../urpmi.recover:65 #, c-format msgid "Repackage directory not defined\n" msgstr "Birpaketatzeko direktorioa ez da definitu\n" #: ../urpmi.recover:68 #, c-format msgid "Can't write to repackage directory [%s]\n" msgstr "Ezin da [%s] birpaketatzeko direktoriora idatzi\n" #: ../urpmi.recover:70 #, c-format msgid "Cleaning up repackage directory [%s]...\n" msgstr "[%s] birpaketatzeko direktorioa garbitzen...\n" #: ../urpmi.recover:72 #, c-format msgid "%d file removed\n" msgid_plural "%d files removed\n" msgstr[0] "fitxategi %d ezabatuta\n" msgstr[1] "%d fitxategi ezabatuta\n" #: ../urpmi.recover:82 #, c-format msgid "Spurious command-line arguments [%s]\n" msgstr "Komando-lerro argumentu okerrak [%s]\n" #: ../urpmi.recover:84 #, c-format msgid "You can't specify --checkpoint and --rollback at the same time\n" msgstr "Ezin dituzu --checkpoint eta --rollback aukerak batera deitu\n" #: ../urpmi.recover:86 #, c-format msgid "You can't specify --checkpoint and --list at the same time\n" msgstr "Ezin dituzu --checkpoint eta --list aukerak batera zehaztu\n" #: ../urpmi.recover:88 #, c-format msgid "You can't specify --rollback and --list at the same time\n" msgstr "Ezin dituzu --rollback eta --list aukerak batera zehaztu\n" #: ../urpmi.recover:90 #, c-format msgid "You can't specify --disable along with another option" msgstr "Ezin duzu --disable beste aukera batekin zehaztu" #: ../urpmi.recover:115 #, c-format msgid "No transaction found since %s\n" msgstr "%s-tik ez da eragiketarik aurkitu\n" #: ../urpmi.recover:130 #, c-format msgid "You must be superuser to do this" msgstr "Superrerabiltzailea izan behar zara hau egiteko" #: ../urpmi.recover:143 ../urpmi.recover:209 #, c-format msgid "Writing rpm macros file [%s]...\n" msgstr "[%s] rpm macro fitxategia idazten...\n" #: ../urpmi.recover:185 #, c-format msgid "No rollback date found\n" msgstr "Ez da aurkitu atzera bueltatzeko datarik\n" #: ../urpmi.recover:188 #, c-format msgid "Rollback until %s...\n" msgstr "Atzera bueltatu %s arte...\n" #: ../urpmi.recover:195 #, c-format msgid "Disabling repackaging\n" msgstr "Birpaketatzea ezgaitzen\n" #: ../urpmi.removemedia:38 #, c-format msgid "" "usage: urpmi.removemedia (-a | ...)\n" "where is a medium name to remove.\n" msgstr "" "Erabilera: urpmi.removemedia (-a | ...)\n" "non kendu beharreko euskarri-izena den.\n" #: ../urpmi.removemedia:41 #, c-format msgid " -a - select all media.\n" msgstr " -a - euskarri guztiak hautatzen ditu.\n" #: ../urpmi.removemedia:42 #, c-format msgid " -y - fuzzy match on media names.\n" msgstr " -y - parekatze lausoa euskarri izenetan.\n" #: ../urpmi.removemedia:59 #, c-format msgid "Only superuser is allowed to remove media" msgstr "Supererabiltzaileak soilik dauka euskarriak ezabatzeko baimena" #: ../urpmi.removemedia:72 #, c-format msgid "nothing to remove (use urpmi.addmedia to add a media)\n" msgstr "ez dago kentzeko ezer (erabili urpmi.addmedia euskarria gehitzeko)\n" #: ../urpmi.removemedia:78 #, c-format msgid "" "the entry to remove is missing\n" "(one of %s)\n" msgstr "" "kendu beharreko sarrera falta da\n" "(%s(e)tako bat\n" #: ../urpmi.update:30 #, c-format msgid "" "usage: urpmi.update [options] ...\n" "where is a medium name to update.\n" msgstr "" "Erabilera: urpmi.update [aukerak] ...\n" "non eguneratu beharreko euskarri-izena den.\n" #: ../urpmi.update:41 #, c-format msgid " --update - update only update media.\n" msgstr " --update - eguneratze-euskarria bakarrik eguneratzen du.\n" #: ../urpmi.update:43 #, c-format msgid " --force-key - force update of gpg key.\n" msgstr " --force-key - gpg gakoa eguneratzera behartzen du.\n" #: ../urpmi.update:44 #, c-format msgid " --ignore - don't update, mark the media as ignored.\n" msgstr " --ignore - ez eguneratu, markatu euskarria baztertu gisa.\n" #: ../urpmi.update:45 #, c-format msgid " --no-ignore - don't update, mark the media as enabled.\n" msgstr " --no-ignore - ez eguneratu, markatu euskarria gaitu gisa.\n" #: ../urpmi.update:47 #, c-format msgid " --probe-rpms - do not use synthesis, use rpm files directly\n" msgstr "" " --probe-rpms - ez erabili synthesis, zuzenean rpm fitxategiak erabili\n" #: ../urpmi.update:48 #, c-format msgid " -a - select all non-removable media.\n" msgstr " -a - euskarri ez-aldagarri guztiak hautatzen ditu.\n" #: ../urpmi.update:49 #, c-format msgid " -f - force updating synthesis\n" msgstr " -f - synthesis eguneraketa behartu\n" #: ../urpmi.update:50 #, c-format msgid " -ff - really force updating synthesis\n" msgstr " -f - benetan behartu synthesis eguneraketa.\n" #: ../urpmi.update:67 #, c-format msgid "Only superuser is allowed to update media" msgstr "Supererabiltzaileak soilik dauka euskarriak eguneratzeko baimena" #: ../urpmi.update:75 #, c-format msgid "nothing to update (use urpmi.addmedia to add a media)\n" msgstr "" "ez dago eguneratzeko ezer (erabili urpmi.addmedia euskarria gehitzeko)\n" #: ../urpmi.update:93 #, c-format msgid "" "the entry to update is missing\n" "(one of %s)\n" msgstr "" "eguneratu beharreko sarrera falta da\n" "(%s(e)tako bat\n" #: ../urpmi.update:97 #, c-format msgid "\"%s\"" msgstr "\"%s\"" #: ../urpmi.update:98 #, c-format msgid "ignoring media %s" msgstr "%s euskarria baztertzen" #: ../urpmi.update:98 #, c-format msgid "enabling media %s" msgstr "%s euskarria gaitzen" #: ../urpmq:40 #, c-format msgid "" "urpmq version %s\n" "Copyright (C) 2000-2006 Mandriva.\n" "This is free software and may be redistributed under the terms of the GNU " "GPL.\n" "\n" "usage:\n" msgstr "" "urpmq %s bertsioa\n" "Copyright © 2000-2006 Mandriva.\n" "Hau software askea da eta birbanatu egin daiteke GNU GLParen baldintzak " "betetzen badira.\n" "\n" "erabilera:\n" #: ../urpmq:48 #, c-format msgid "" " --searchmedia - use only the given media to search requested (or updated) " "packages.\n" msgstr "" " --searchmedia - soilik emandako euskarria erabiltzen du eskatutako " "paketeak (edo eguneratutakoak) bilatzeko.\n" #: ../urpmq:54 #, c-format msgid " --fuzzy - impose fuzzy search (same as -y).\n" msgstr " --fuzzy - hurbilketazko bilaketa inposatzen du (-y bezala).\n" #: ../urpmq:57 #, c-format msgid " --list - list available packages.\n" msgstr " --list - pakete erabilgarrien zerrenda.\n" #: ../urpmq:58 #, c-format msgid " --list-media - list available media.\n" msgstr " --list-media - euskarri erabilgarrien zerrenda.\n" #: ../urpmq:59 #, c-format msgid " --list-url - list available media and their url.\n" msgstr "" " --list-url - erabilgarri dauden euskarriak eta haien url-a zerrendatzen " "ditu.\n" #: ../urpmq:60 #, c-format msgid " --list-nodes - list available nodes when using --parallel.\n" msgstr "" " --list-nodes - --parallel erabiltzean erabilgarri dauden nodoen " "zerrenda .\n" #: ../urpmq:61 #, c-format msgid " --list-aliases - list available parallel aliases.\n" msgstr " --list-aliases - alias paralelo erabilgarrien zerrenda.\n" #: ../urpmq:62 #, c-format msgid "" " --dump-config - dump the config in form of urpmi.addmedia argument.\n" msgstr "" " --dump-config - config urpmi.addmedia argumentu gisa iraultzen du.\n" #: ../urpmq:63 #, c-format msgid " --src - next package is a source package (same as -s).\n" msgstr "" " --src - hurrengo paketea iturburu-pakete bat da (-s bezala).\n" #: ../urpmq:64 #, c-format msgid "" " --sources - give all source packages before downloading (root only).\n" msgstr "" "--sources - iturburu-pakete guztiak deskargatu aurretik ematen ditu \n" " (root-ek bakarrik).\n" #: ../urpmq:66 #, c-format msgid " --ignorearch - allow to query rpms for unmatched architectures.\n" msgstr "" " --ignorearch - rpm-ak bat ez datozen arkitektura bila galdekatzeko " "aukera eskaintzen du.\n" #: ../urpmq:70 #, c-format msgid "" " --use-distrib - configure urpmi on the fly from a distrib tree.\n" " This permit to querying a distro.\n" msgstr "" " --use-distrib - urpmi berehala konfiguratzen du distrib zuhaitzetik.\n" " Horren bidez distro bati kontsulta egin diezaiokezu.\n" #: ../urpmq:80 #, c-format msgid " --changelog - print changelog.\n" msgstr " --changelog - changelog inprimatzen du.\n" #: ../urpmq:81 #, c-format msgid " --conflicts - print conflicts.\n" msgstr " --conflicts - gatazkak erakutsi.\n" #: ../urpmq:82 #, c-format msgid " --provides - print provides.\n" msgstr " --provides - inprimatu 'provides' eremua.\n" #: ../urpmq:83 #, c-format msgid " --requires - print requires.\n" msgstr " --requires - beharrezko dituenak erakutsi.\n" #: ../urpmq:84 #, c-format msgid " --sourcerpm - print sourcerpm.\n" msgstr " --sourcerpm - sourcerpm erakutsi.\n" #: ../urpmq:85 #, c-format msgid " --summary, -S - print summary.\n" msgstr " --summary, -S - laburpena inprimatu.\n" #: ../urpmq:87 #, c-format msgid "" " --requires-recursive, -d\n" " - query package dependencies.\n" msgstr "" " --requires-recursive, -d\n" " - galdekatu paketearen mendekotasunak.\n" #: ../urpmq:89 #, c-format msgid " --whatrequires - reverse search to what requires package.\n" msgstr " --whatrequires - paketeak behar duenaren alderantzizko bilaketa.\n" #: ../urpmq:90 #, c-format msgid "" " --whatrequires-recursive\n" " - extended reverse search (includes virtual packages).\n" msgstr "" " --whatrequires-recursive\n" " - alderantzizko bilaketa hedatua (alegiazko paketeak " "barne).\n" #: ../urpmq:92 #, c-format msgid "" " --whatprovides, -p\n" " - search in provides to find package.\n" msgstr "" " --whatprovides, -p\n" " - bilatu hornitutakoetan paketea aurkitzeko.\n" #: ../urpmq:95 #, c-format msgid " -c - complete output with package to be removed.\n" msgstr " -c - osatu irteera kendu behar den paketearekin.\n" #: ../urpmq:97 #, c-format msgid " -g - print groups with name also.\n" msgstr " -g - taldeak ere izenarekin inprimatzen ditu.\n" #: ../urpmq:98 #, c-format msgid " -i - print useful information in human readable form.\n" msgstr "" " -i - informazio erabilgarria pertsonek irakurtzeko moduan inprimatzen " "du.\n" #: ../urpmq:99 #, c-format msgid " -l - list files in package.\n" msgstr " -l - paketeko fitxategiak zerrendatzen ditu.\n" #: ../urpmq:100 #, c-format msgid " -m - equivalent to -du\n" msgstr " -m - '-du'-ren baliokidea\n" #: ../urpmq:101 #, c-format msgid " -r - print version and release with name also.\n" msgstr "" " -r - bertsioa eta argitalpena ere izenarekin inprimatzen " "ditu.\n" #: ../urpmq:102 #, c-format msgid " -s - next package is a source package (same as --src).\n" msgstr "" " -s - hurrengo paketea iturburu-pakete bat da (--src bezala).\n" #: ../urpmq:103 #, c-format msgid "" " -u - remove package if a more recent version is already " "installed.\n" msgstr "" "-u - paketea kentzen du bertsio berriagoa instalatuta badago.\n" #: ../urpmq:104 #, c-format msgid " -y - impose fuzzy search (same as --fuzzy).\n" msgstr " -y - inposatu hurbilketazko bilaketa (--fuzzy bezala).\n" #: ../urpmq:105 #, c-format msgid " -Y - like -y, but forces to match case-insensitively.\n" msgstr "" " -Y - -y bezala, baino ez ditu hizki larri/xeheak " "desberdinduko.\n" #: ../urpmq:106 #, c-format msgid " names or rpm files given on command line are queried.\n" msgstr "" " komando-lerroan idatzitako izenak edo rpm fitxategiak kontsultatu dira.\n" #: ../urpmq:185 #, c-format msgid "--list-nodes can only be used with --parallel" msgstr "--nodo-zerrendak honekin bakarrik erabil daitezke: --parallel" #: ../urpmq:209 #, c-format msgid "use -l to list files" msgstr "erabili -l fitxategiak zerrendatzeko" #: ../urpmq:382 #, c-format msgid "no xml info for medium \"%s\", only partial result for package %s" msgstr "" "ez dago \"%s\" euskarriarentzako xml info, %s paketearentzako emaitza " "partzialak soilik" #: ../urpmq:383 #, c-format msgid "no xml info for medium \"%s\", only partial result for packages %s" msgstr "" "ez dago \"%s\" euskarriarentzako xml info, %s paketeentzako emaitza " "partzialak soilik" #: ../urpmq:386 #, c-format msgid "" "no xml info for medium \"%s\", unable to return any result for package %s" msgstr "" "ez dago \"%s\" euskarriarentzako xml info, ezin da %s paketearentzako " "inolako emaitzarik itzuli" #: ../urpmq:387 #, c-format msgid "" "no xml info for medium \"%s\", unable to return any result for packages %s" msgstr "" "ez dago \"%s\" euskarriarentzako xml info, ezin da %s paketeentzako inolako " "emaitzarik itzuli" #: ../urpmq:451 #, c-format msgid "No changelog found\n" msgstr "Ez da changelog aurkitu\n" ass="hl kwc">or next; push @l, $u; $_->{url} = sprintf('%s://%s@%s%s', $u->{proto}, $u->{login}, $u->{machine}, $u->{dir}); } { my $fh = urpm::sys::open_safe($urpm, '>', $urpm->{private_netrc}) or return; foreach my $u (@l) { printf $fh "machine %s login %s password %s\n", $u->{machine}, $u->{login}, $u->{password}; } } chmod 0600, $urpm->{private_netrc}; } #- handle deprecated way of saving passwords sub recover_url_from_list { my ($urpm, $medium) = @_; my $list = delete $medium->{list} or return; my $statedir_list = "$urpm->{statedir}/$list"; #- /./ is end of url marker in list file (typically generated by a #- find . -name "*.rpm" > list #- for exportable list file. if (my @probe = map { m!^(.*)/\./! || m!^(.*)/[^/]*$! } cat_($statedir_list)) { $urpm->{log}("recovering url from $statedir_list"); ($medium->{url}) = sort { length($a) <=> length($b) } @probe; $urpm->{modified} = 1; #- ensure urpmi.cfg is handled using only partially hidden url + netrc, since file list won't be generated anymore unlink $statedir_list; } } #- Loads /etc/urpmi/urpmi.cfg and performs basic checks. #- Does not handle old format: <name> <url> [with <path_hdlist>] sub read_config { my ($urpm) = @_; return if $urpm->{media}; #- media already loaded $urpm->{media} = []; my $config = urpm::cfg::load_config($urpm->{config}) or $urpm->{fatal}(6, $urpm::cfg::err); #- per-media options read_config_add_passwords($urpm, $config); my @media; foreach my $m (@{$config->{media}}) { my $medium = _only_media_opts_read($m); if (!$medium->{url} && !$medium->{mirrorlist}) { #- recover the url the old deprecated way... #- only useful for migration, new urpmi.cfg will use netrc recover_url_from_list($urpm, $medium); $medium->{url} or $urpm->{error}("unable to find url in list file $medium->{name}, medium ignored"); } push @media, $medium; } require File::Glob; # we can't use perl's glob() because we allow spaces in filename foreach my $conf_file (File::Glob::bsd_glob("$urpm->{configs_dir}/*.cfg")) { $urpm->{debug} and $urpm->{debug}("parsing: $conf_file"); my $conf = urpm::cfg::load_ini_config_file_raw($conf_file); foreach my $medium (map { _only_media_opts_read($_) } @$conf) { $medium->{conf_file} = $conf_file; push @media, $medium; } } add_existing_medium($urpm, $_) foreach @media; eval { require urpm::ldap; urpm::ldap::load_ldap_media($urpm) }; } #- if invalid, set {ignore} sub check_existing_medium { my ($urpm, $medium) = @_; my $err; if (!$medium->{url} && !$medium->{mirrorlist}) { $err = $medium->{virtual} ? N("virtual medium \"%s\" should have a clear url, medium ignored", $medium->{name}) : N("unable to access list file of \"%s\", medium ignored", $medium->{name}); } elsif (!$medium->{ignore} && !-r any_synthesis($urpm, $medium)) { if ($medium->{conf_file} && $< == 0) { # no pb, we create on the fly $medium->{force_auto_update} = 1; } else { $err = N("unable to access synthesis file of \"%s\", medium ignored", $medium->{name}); } } if ($err) { $medium->{ignore} = 1; $urpm->{error}($err); } } sub _migrate__with_synthesis { my ($medium, $with_synthesis) = @_; #- try to migrate to media_info_dir my $b = basename($with_synthesis); if ($b eq 'synthesis.hdlist.cz' || $b eq 'hdlist.cz') { $medium->{media_info_dir} = dirname($with_synthesis); } else { $with_synthesis =~ s/(synthesis\.)?(hdlist.*\.cz)$/synthesis.$2/; $medium->{with_synthesis} = $with_synthesis; } } #- probe medium to be used, take old medium into account too. sub add_existing_medium { my ($urpm, $medium) = @_; if (name2medium($urpm, $medium->{name})) { $urpm->{error}(N("trying to override existing medium \"%s\", skipping", $medium->{name})); return; } if ($medium->{with_hdlist}) { _migrate__with_synthesis($medium, delete $medium->{with_hdlist}); $urpm->{modified} = 1; } check_existing_medium($urpm, $medium); _migrate_removable_device($urpm, $medium); #- clear URLs for trailing /es. $medium->{url} and $medium->{url} =~ s|(.*?)/*$|$1|; push @{$urpm->{media}}, $medium; } sub file_from_file_url { my ($url) = @_; $url =~ m!^(?:file:/)?(/.*)! && $1; } sub _local_file { my ($medium) = @_; $medium->{url} && file_from_file_url($medium->{url}); } sub _is_local_virtual { my ($medium) = @_; $medium->{virtual} && _local_file($medium); } sub _is_remote_virtual { my ($medium) = @_; $medium->{virtual} && !_local_file($medium); } sub _url_with_synthesis_basename { my ($medium) = @_; $medium->{with_synthesis} ? basename($medium->{with_synthesis}) : 'synthesis.hdlist.cz'; } sub _synthesis_dir { my ($medium) = @_; $medium->{'no-media-info'} || $medium->{unknown_media_info} and return; my $base = file_from_local_medium($medium) || $medium->{url}; $medium->{with_synthesis} ? reduce_pathname("$base/$medium->{with_synthesis}/..") : $medium->{media_info_dir} && reduce_pathname("$base/$medium->{media_info_dir}"); } # the difference between _valid_synthesis_dir and _synthesis_dir # is only to handle upgrades from older urpmi.cfg where no {media_info_dir} # meant no-media-info sub _valid_synthesis_dir { my ($medium) = @_; my $dir = _synthesis_dir($medium); $dir && -d $dir; } sub _url_with_synthesis { my ($medium) = @_; my $base = file_from_local_medium($medium) || $medium->{url}; $medium->{with_synthesis} ? reduce_pathname("$base/$medium->{with_synthesis}") : _synthesis_dir($medium) . "/" . _url_with_synthesis_basename($medium); } sub synthesis { my ($medium) = @_; statedir_media_info_basename($medium, 'synthesis.hdlist', '.cz'); } sub statedir_media_info_basename { my ($medium, $prefix, $suffix) = @_; $medium->{name} && "$prefix.$medium->{name}$suffix"; } sub statedir_media_info_dir { my ($urpm, $medium) = @_; $medium->{name} && "$urpm->{statedir}/$medium->{name}"; } sub old_statedir_media_info_file { my ($urpm, $medium, $prefix, $suffix) = @_; $medium->{name} && "$urpm->{statedir}/" . statedir_media_info_basename($medium, $prefix, $suffix); } sub new_statedir_media_info_file { my ($urpm, $medium, $prefix, $suffix) = @_; my $dir = statedir_media_info_dir($urpm, $medium); $dir && "$dir/$prefix$suffix"; } sub statedir_media_info_file { my ($urpm, $medium, $prefix, $suffix) = @_; my $dir = statedir_media_info_dir($urpm, $medium); -d $dir ? "$dir/$prefix$suffix" : old_statedir_media_info_file($urpm, $medium, $prefix, $suffix); } sub statedir_synthesis { my ($urpm, $medium) = @_; statedir_media_info_file($urpm, $medium, 'synthesis.hdlist', '.cz'); } sub statedir_descriptions { my ($urpm, $medium) = @_; statedir_media_info_file($urpm, $medium, 'descriptions', ''); } sub statedir_names { my ($urpm, $medium) = @_; old_statedir_media_info_file($urpm, $medium, 'names', ''); } sub statedir_MD5SUM { my ($urpm, $medium) = @_; statedir_media_info_file($urpm, $medium, 'MD5SUM', ''); } sub statedir_hdlist { my ($urpm, $medium) = @_; statedir_media_info_file($urpm, $medium, 'hdlist', '.cz'); } sub statedir_xml_info { my ($urpm, $medium, $xml_info) = @_; statedir_media_info_file($urpm, $medium, $xml_info, '.xml.lzma'); } sub cachedir_with_synthesis { my ($urpm, $medium) = @_; _url_with_synthesis($medium) && "$urpm->{cachedir}/partial/" . _url_with_synthesis_basename($medium); } sub any_synthesis { my ($urpm, $medium) = @_; my $f = _is_local_virtual($medium) ? _url_with_synthesis($medium) : statedir_synthesis($urpm, $medium); -e $f && $f; } sub any_media_info_file { my ($urpm, $medium, $prefix, $suffix, $quiet, $o_callback) = @_; if (my $base = _local_file($medium)) { my $f = $medium->{with_synthesis} ? reduce_pathname("$base/$prefix." . _synthesis_suffix($medium) . $suffix) : _synthesis_dir($medium) . "/$prefix$suffix"; if (! -e $f) { # in some weird cases (iso on disk), the hdlist is not available where it should be, # but we can use the statedir copy $f = statedir_media_info_file($urpm, $medium, $prefix, $suffix); } -e $f && $f; } else { _any_media_info__or_download($urpm, $medium, $prefix, $suffix, $quiet, $o_callback); } } sub any_hdlist { my ($urpm, $medium, $quiet) = @_; any_media_info_file($urpm, $medium, 'hdlist', '.cz', $quiet, \&urpm::download::sync_logger); } sub any_xml_info { my ($urpm, $medium, $xml_info, $quiet, $o_callback) = @_; any_media_info_file($urpm, $medium, $xml_info, '.xml.lzma', $quiet, $o_callback || \&urpm::download::sync_logger); } sub name2medium { my ($urpm, $name) = @_; my ($medium) = grep { $_->{name} eq $name } @{$urpm->{media}}; $medium; } sub userdirs { my ($urpm) = @_; my $prefix = urpm::userdir_prefix($urpm); grep { m!^\Q$prefix\E\d+$! && -d $_ && ! -l $_ } glob("$prefix*"); } sub remove_user_media_info_files { my ($urpm, $medium) = @_; foreach my $dir (userdirs($urpm)) { require File::Glob; # we can't use perl's glob() because $medium->{name} can contain spaces my @files = map { File::Glob::bsd_glob("$dir/*.$medium->{name}.$_") } 'cz', 'xml.lzma' or next; $urpm->{log}("cleaning $dir"); foreach (@files) { unlink $_ or $urpm->{error}("removing $_ failed"); } } } #- probe device associated with a removable device. sub _migrate_removable_device { my ($urpm, $medium) = @_; $medium->{url} or return; # always drop {removable}, it is obsolete # (nb: for iso files, {removable} has already been renamed into {iso} internally) delete $medium->{removable}; if (my $url = _migrate_removable_url($medium->{url})) { $medium->{url} = $url; } else { $urpm->{error}(N("failed to migrate removable device, ignoring media")); $medium->{ignore} = 1; } } sub _migrate_removable_url { my ($url) = @_; if ($url =~ /^removable/) { $url =~ s!^removable(.*?)://!/!; if ($url =~ s!/(mnt|media)/cd\w+/?!cdrom://!i) { # success! } else { return; } } $url; } #- Writes the urpmi.cfg file. sub write_urpmi_cfg { my ($urpm) = @_; #- avoid trashing exiting configuration if it wasn't loaded $urpm->{media} or return; my %media_per_cfg; foreach (grep { !$_->{external} } @{$urpm->{media}}) { push @{$media_per_cfg{$_->{conf_file} || ''}}, _only_media_opts_write($_); } my $config = { #- global config options found in the config file, without the ones #- set from the command-line global => $urpm->{global_config}, media => delete $media_per_cfg{''}, }; remove_passwords_and_write_private_netrc($urpm, $config); urpm::cfg::dump_config($urpm->{config}, $config) or $urpm->{fatal}(6, N("unable to write config file [%s]", $urpm->{config})); $urpm->{log}(N("wrote config file [%s]", $urpm->{config})); foreach my $conf_file (sort keys %media_per_cfg) { urpm::cfg::write_ini_config($conf_file, $media_per_cfg{$conf_file}) or $urpm->{fatal}(6, N("unable to write config file [%s]", $conf_file)); $urpm->{log}(N("wrote config file [%s]", $conf_file)); } #- everything should be synced now. delete $urpm->{modified}; } sub write_config { my ($urpm) = @_; write_urpmi_cfg($urpm); } sub _tempignore { my ($medium, $ignore) = @_; $medium->{ignore} = $ignore; } #- read urpmi.cfg file as well as necessary synthesis files #- options : #- root (deprecated, set directly $urpm->{root}) #- cmdline_skiplist #- download_callback (used by add_existing_medium) #- #- callback (urpmf) #- nodepslist (for urpmq, urpmf: when we don't need the synthesis) #- no_skiplist (urpmf) #- #- synthesis (use this synthesis file, and only this synthesis file) #- #- parallel #- usedistrib (otherwise uses urpmi.cfg) #- media #- excludemedia #- sortmedia #- #- update #- searchmedia sub configure { my ($urpm, %options) = @_; clean($urpm); $options{parallel} && $options{usedistrib} and $urpm->{fatal}(1, N("Can't use parallel mode with use-distrib mode")); if ($options{parallel}) { require urpm::parallel; urpm::parallel::configure($urpm, $options{parallel}); if (!$options{media} && $urpm->{parallel_handler}{media}) { $options{media} = $urpm->{parallel_handler}{media}; $urpm->{log}->(N("using associated media for parallel mode: %s", $options{media})); } } else { #- nb: can't have both parallel and root $urpm->{root} = $options{root} if $options{root}; } if ($urpm->{root} && ! -c "$urpm->{root}/dev/null") { mkdir "$urpm->{root}/dev"; system("/bin/cp", "-a", '/dev/null', "$urpm->{root}/dev"); } if ($options{synthesis}) { if ($options{synthesis} ne 'none') { #- synthesis take precedence over media, update options. $options{media} || $options{excludemedia} || $options{sortmedia} || $options{update} || $options{usedistrib} || $options{parallel} and $urpm->{fatal}(1, N("--synthesis cannot be used with --media, --excludemedia, --sortmedia, --update, --use-distrib or --parallel")); my $synthesis = $options{synthesis}; if ($synthesis !~ m!^/!) { require Cwd; $synthesis = Cwd::getcwd() . '/' . $synthesis; } my ($url, $with) = $synthesis =~ m!(.*)/+(media_info/+synthesis\.hdlist\.cz)$! ? ($1, $2) : (dirname($synthesis), basename($synthesis)); $urpm->{media} = []; add_medium($urpm, 'Virtual', $url, $with, %options, virtual => 1); } } elsif ($options{usedistrib}) { $urpm->{media} = []; add_distrib_media($urpm, "Virtual", $options{usedistrib}, %options, 'virtual' => 1); } else { read_config($urpm); if (!$options{media} && $urpm->{options}{'default-media'}) { $options{media} = $urpm->{options}{'default-media'}; } } if ($options{media}) { delete $_->{modified} foreach @{$urpm->{media} || []}; select_media($urpm, split /,/, $options{media}); foreach (@{$urpm->{media} || []}) { _tempignore($_, !$_->{modified}); } } if ($options{searchmedia}) { foreach (select_media_by_name($urpm, [ split /,/, $options{searchmedia} ])) { #- Ensure this media is selected $_->{modified} = 1; _tempignore($_, 0); $_->{searchmedia} = 1; } } if ($options{excludemedia}) { delete $_->{modified} foreach @{$urpm->{media} || []}; foreach (select_media_by_name($urpm, [ split /,/, $options{excludemedia} ])) { $_->{modified} = 1; #- this is only a local ignore that will not be saved. _tempignore($_, 1); } } if ($options{sortmedia}) { my @sorted_media = map { select_media_by_name($urpm, [$_]) } split(/,/, $options{sortmedia}); my @remaining = difference2($urpm->{media}, \@sorted_media); $urpm->{media} = [ @sorted_media, @remaining ]; } _auto_update_media($urpm, %options) or return; _pick_mirror_if_needed($urpm, $_, '') foreach non_ignored_media($urpm, $options{update}); parse_media($urpm, \%options) if !$options{nodepslist}; #- determine package to withdraw (from skip.list file) only if something should be withdrawn. if (!$options{nodepslist}) { _compute_flags_for_skiplist($urpm, $options{cmdline_skiplist}) if !$options{no_skiplist}; _compute_flags_for_instlist($urpm); } } #- for remote "virtual" media #- options: download_callback, nomd5sum, quiet, nopubkey sub _auto_update_media { my ($urpm, %options) = @_; $options{callback} = delete $options{download_callback}; my $errors; foreach (grep { $_->{force_auto_update} || _is_remote_virtual($_) } non_ignored_media($urpm, $options{update})) { _update_medium($urpm, $_, %options) or $errors++; } !$errors; } sub non_ignored_media { my ($urpm, $b_only_marked_update) = @_; grep { !$_->{ignore} && (!$b_only_marked_update || $_->{update}) } @{$urpm->{media} || []}; } sub parse_media { my ($urpm, $options) = @_; foreach (non_ignored_media($urpm, $options->{update})) { delete @$_{qw(start end)}; _parse_synthesis_or_ignore($urpm, $_, $options->{callback}); if ($_->{searchmedia}) { $urpm->{searchmedia} = 1; $urpm->{log}(N("Search start: %s end: %s", $_->{start}, $_->{end})); } $< == 0 and _generate_medium_names($urpm, $_); } } sub _compute_flags_for_skiplist { my ($urpm, $cmdline_skiplist) = @_; my %uniq; $urpm->compute_flags( urpm::sys::get_packages_list($urpm->{skiplist}, $cmdline_skiplist), skip => 1, callback => sub { my ($urpm, $pkg) = @_; $pkg->is_arch_compat && ! exists $uniq{$pkg->fullname} or return; $uniq{$pkg->fullname} = undef; $urpm->{log}(N("skipping package %s", scalar($pkg->fullname))); }, ); } sub _compute_flags_for_instlist { my ($urpm) = @_; my %uniq; $urpm->compute_flags( urpm::sys::get_packages_list($urpm->{instlist}), disable_obsolete => 1, callback => sub { my ($urpm, $pkg) = @_; $pkg->is_arch_compat && ! exists $uniq{$pkg->fullname} or return; $uniq{$pkg->fullname} = undef; $urpm->{log}(N("would install instead of upgrade package %s", scalar($pkg->fullname))); }, ); } #- add a new medium, sync the config file accordingly. #- returns the new medium's name. (might be different from the requested #- name if index_name was specified) #- options: ignore, index_name, nolock, update, virtual, media_info_dir, mirrorlist, with-dir, xml-info sub add_medium { my ($urpm, $name, $url, $with_synthesis, %options) = @_; #- make sure configuration has been read. $urpm->{media} or die "caller should have used ->read_config or ->configure first"; #- if a medium with that name has already been found, we have to exit now if (defined $options{index_name}) { my ($i, $basename) = ($options{index_name}, $name); while (1) { ++$i; $name = $basename . ($i == 1 ? '' : $i); last if !name2medium($urpm, $name); } } else { name2medium($urpm, $name) and $urpm->{fatal}(5, N("medium \"%s\" already exists", $name)); } $url =~ s,/*$,,; #- clear URLs for trailing /es. #- creating the medium info. my $medium = { name => $name, url => $url, modified => !$options{ignore}, }; foreach (qw(downloader update ignore media_info_dir mirrorlist with-dir xml-info)) { $medium->{$_} = $options{$_} if exists $options{$_}; } #- those files must not be there (cf mdvbz#36267) _clean_statedir_medium_files($urpm, $medium); if (!($options{virtual} && _local_file($medium)) && !$urpm->{urpmi_root}) { # with --urpmi-root, we do not use statedir_media_info_file to allow compatibility with older urpmi mkdir statedir_media_info_dir($urpm, $medium), 0755; } if ($options{virtual}) { $medium->{virtual} = 1; } else { _migrate_removable_device($urpm, $medium); } if (!$medium->{url} && $options{mirrorlist}) { # forcing the standard media_info_dir if undefined $medium->{media_info_dir} ||= 'media_info'; # this is a little ugly since MD5SUM will be downloaded again later, but it's small enough... _download_MD5SUM_and_check($urpm, $medium) or return; } if ($with_synthesis) { _migrate__with_synthesis($medium, $with_synthesis); } elsif (!$medium->{media_info_dir}) { $medium->{unknown_media_info} = 1; } #- local media have priority, other are added at the end. my $inserted; my $ignore_text = $medium->{ignore} ? ' ' . N("(ignored by default)") : ''; if (_local_file($medium)) { #- insert before first remote medium @{$urpm->{media}} = map { if (!_local_file($_) && !$inserted) { $inserted = 1; $urpm->{info}(N("adding medium \"%s\" before remote medium \"%s\"", $name, $_->{name}) . $ignore_text); $medium, $_; } else { $_ } } @{$urpm->{media}}; } if (!$inserted) { $urpm->{info}(N("adding medium \"%s\"", $name) . $ignore_text); push @{$urpm->{media}}, $medium; } $urpm->{modified} = 1; $name; } #- add distribution media, according to url given. #- returns the list of names of added media. #- options : #- - initial_number : when adding several numbered media, start with this number #- - probe_with : force use of rpms instead of using synthesis #- - ask_media : callback to know whether each media should be added #- - only_updates : only add "update" media (used by rpmdrake) #- - mirrorlist #- other options are passed to add_medium(): ignore, nolock, virtual sub add_distrib_media { my ($urpm, $name, $url, %options) = @_; #- make sure configuration has been read. $urpm->{media} or die "caller should have used ->read_config or ->configure first"; my $distribconf; if ($url && urpm::is_local_url($url)) { $url = _migrate_removable_url($url) or return(); my $m = { url => $url }; urpm::removable::try_mounting_medium_($urpm, $m) or $urpm->{error}(N("directory %s does not exist", $url)); $distribconf = MDV::Distribconf->new(file_from_file_url($url) || $url, undef); $distribconf->settree('mandriva'); my $dir = file_from_local_medium($m); my $media_cfg = reduce_pathname("$dir/" . $distribconf->getpath(undef, 'infodir') . '/media.cfg'); $distribconf->parse_mediacfg($media_cfg) or $urpm->{error}(N("this location doesn't seem to contain any distribution")), return (); } else { unlink "$urpm->{cachedir}/partial/media.cfg"; if ($options{mirrorlist}) { $url and die "unexpected url $url together with mirrorlist $options{mirrorlist}\n"; } my $m = { mirrorlist => $options{mirrorlist}, url => $url }; my $parse_ok; try__maybe_mirrorlist($urpm, $m, sub { $distribconf = _new_distribconf_and_download($urpm, $m->{url}); $parse_ok = $distribconf && $distribconf->parse_mediacfg("$urpm->{cachedir}/partial/media.cfg"); $parse_ok; }); $url = $m->{url}; if ($distribconf) { $parse_ok or $urpm->{error}(N("unable to parse media.cfg")), return(); } else { $urpm->{error}(N("...retrieving failed: %s", $@)); $urpm->{error}(N("unable to access the distribution medium (no media.cfg file found)")); return (); } } #- cosmetic update of name if it contains spaces. $name =~ /\s/ and $name .= ' '; my @newnames; #- at this point, we have found a media.cfg file, so parse it #- and create all necessary media according to it. my $medium_index = $options{initial_number} || 1; foreach my $media ($distribconf->listmedia) { my $media_name = $distribconf->getvalue($media, 'name') || ''; if (my $media_arch = $distribconf->getvalue($media, 'arch')) { if (!URPM::archscore($media_arch)) { $urpm->{log}(N("skipping non compatible media `%s' (for %s)", $media, $media_arch)); next; } } my $add_by_default = !$distribconf->getvalue($media, 'noauto'); if ($options{ask_media}) { $options{ask_media}->($media_name, $add_by_default) or next; } else { my $simple_rpms = !$distribconf->getvalue($media, 'debug_for') && !$distribconf->getvalue($media, 'rpms'); $add_by_default || $simple_rpms or next; } my $is_update_media = $distribconf->getvalue($media, 'updates_for'); if ($options{only_updates}) { $is_update_media or next; } my $use_copied_synthesis = urpm::is_cdrom_url($url) || $urpm->{options}{use_copied_hdlist} || $distribconf->getvalue($media, 'use_copied_hdlist'); my $with_synthesis = $use_copied_synthesis && offset_pathname( $url, $distribconf->getpath($media, 'path'), ) . '/' . $distribconf->getpath($media, 'synthesis'); push @newnames, add_medium($urpm, $name ? "$media_name ($name$medium_index)" : $media_name, reduce_pathname($distribconf->getfullpath($media, 'path')), $with_synthesis, !$use_copied_synthesis ? (media_info_dir => 'media_info') : (), !$use_copied_synthesis && $options{probe_with} ? ($options{probe_with} => 1) : (), index_name => $name ? undef : 0, $add_by_default ? () : (ignore => 1), %options, # the following override %options $options{mirrorlist} ? ('with-dir' => $distribconf->getpath($media, 'path')) : (), update => $is_update_media ? 1 : undef, ); ++$medium_index; } return @newnames; } sub _new_distribconf_and_download { my ($urpm, $url) = @_; my $distribconf = MDV::Distribconf->new($url, undef); $distribconf->settree('mandriva'); $urpm->{log}(N("retrieving media.cfg file...")); urpm::download::sync($urpm, undef, [ reduce_pathname($distribconf->getfullpath(undef, 'infodir') . '/media.cfg') ], quiet => 1) or return; $distribconf; } #- deprecated, use select_media_by_name instead sub select_media { my $urpm = shift; my $options = {}; if (ref $_[0]) { $options = shift } foreach (select_media_by_name($urpm, [ @_ ], $options->{strict_match})) { #- select medium by setting the modified flag, do not check ignore. $_->{modified} = 1; } } sub select_media_by_name { my ($urpm, $names, $b_strict_match) = @_; my %wanted = map { $_ => 1 } @$names; #- first the exact matches my @l = grep { delete $wanted{$_->{name}} } @{$urpm->{media}}; #- check if some arguments don't correspond to the medium name. #- in such case, try to find the unique medium (or list candidate #- media found). foreach (keys %wanted) { my $q = quotemeta; my (@found, @foundi); my $regex = $b_strict_match ? qr/^$q$/ : qr/$q/; my $regexi = $b_strict_match ? qr/^$q$/i : qr/$q/i; foreach my $medium (@{$urpm->{media}}) { $medium->{name} =~ $regex and push @found, $medium; $medium->{name} =~ $regexi and push @foundi, $medium; } @found = @foundi if !@found; if (@found == 0) { $urpm->{error}(N("trying to select nonexistent medium \"%s\"", $_)); } else { if (@found > 1) { $urpm->{log}(N("selecting multiple media: %s", join(", ", map { qq("$_->{name}") } @found))); } #- changed behaviour to select all occurences by default. push @l, @found; } } @l; } #- deprecated, use remove_media instead sub remove_selected_media { my ($urpm) = @_; remove_media($urpm, [ grep { $_->{modified} } @{$urpm->{media}} ]); } sub remove_media { my ($urpm, $to_remove) = @_; foreach my $medium (@$to_remove) { $urpm->{info}(N("removing medium \"%s\"", $medium->{name})); #- mark to re-write configuration. $urpm->{modified} = 1; _clean_statedir_medium_files($urpm, $medium); #- remove proxy settings for this media urpm::download::remove_proxy_media($medium->{name}); } $urpm->{media} = [ difference2($urpm->{media}, $to_remove) ]; } sub _clean_statedir_medium_files { my ($urpm, $medium) = @_; #- remove files associated with this medium. unlink grep { $_ } map { old_statedir_media_info_file($urpm, $medium, $_->[0], $_->[1]) } @media_info_prefix_suffix; my $dir = statedir_media_info_dir($urpm, $medium); -d $dir and urpm::sys::clean_dir($dir); remove_user_media_info_files($urpm, $medium); } sub _probe_with_try_list { my ($urpm, $medium, $f) = @_; $medium->{mirrorlist} and die "_probe_with_try_list does not handle mirrorlist\n"; my @media_info_dirs = ('media_info', '.'); my $base = file_from_local_medium($medium) || $medium->{url}; foreach my $media_info_dir (@media_info_dirs) { my $url = reduce_pathname("$base/$media_info_dir") . '/synthesis.hdlist.cz'; if ($f->($url)) { $urpm->{debug} and $urpm->{debug}("found synthesis: $url"); $medium->{media_info_dir} = $media_info_dir; delete $medium->{unknown_media_info}; return 1; } } undef; } sub may_reconfig_urpmi { my ($urpm, $medium) = @_; $medium->{url} && !urpm::is_cdrom_url($medium->{url}) or return; # we should handle mirrorlist? my $f; if (my $dir = file_from_file_url($medium->{url})) { $f = reduce_pathname("$dir/reconfig.urpmi"); } else { unlink($f = "$urpm->{cachedir}/partial/reconfig.urpmi"); urpm::download::sync($urpm, $medium, [ reduce_pathname("$medium->{url}/reconfig.urpmi") ], quiet => 1); } if (-s $f) { reconfig_urpmi($urpm, $f, $medium); } unlink $f if !is_local_medium($medium); } #- read a reconfiguration file for urpmi, and reconfigure media accordingly #- $rfile is the reconfiguration file (local), $name is the media name #- #- the format is similar to the RewriteRule of mod_rewrite, so: #- PATTERN REPLACEMENT [FLAG] #- where FLAG can be L or N #- #- example of reconfig.urpmi: #- # this is an urpmi reconfiguration file #- /cooker /cooker/$ARCH sub reconfig_urpmi { my ($urpm, $rfile, $medium) = @_; -r $rfile or return; my ($magic, @lines) = cat_($rfile); #- the first line of reconfig.urpmi must be magic, to be sure it's not an error file $magic =~ /^# this is an urpmi reconfiguration file/ or return undef; $urpm->{log}(N("reconfiguring urpmi for media \"%s\"", $medium->{name})); my @replacements; foreach (@lines) { chomp; s/^\s*//; s/#.*$//; s/\s*$//; $_ or next; my ($p, $r, $f) = split /\s+/, $_, 3; push @replacements, [ quotemeta $p, $r, $f || 1 ]; } my $reconfigured = 0; my @reconfigurable = qw(url with_synthesis media_info_dir); my %orig = %$medium; URLS: foreach my $k (@reconfigurable) { foreach my $r (@replacements) { if ($medium->{$k} =~ s/$r->[0]/$r->[1]/) { $reconfigured = 1; #- Flags stolen from mod_rewrite: L(ast), N(ext) if ($r->[2] =~ /L/) { last; } elsif ($r->[2] =~ /N/) { #- dangerous option redo URLS; } } } #- check that the new url exists before committing changes (local mirrors) my $file = urpm::file_from_local_url($medium->{$k}); if ($file && !-e $file) { %$medium = %orig; $reconfigured = 0; $urpm->{log}(N("...reconfiguration failed")); return; } } if ($reconfigured) { $urpm->{log}(N("reconfiguration done")); $urpm->{modified} = 1; } $reconfigured; } #- names.<media_name> is used by external progs (namely for bash-completion) sub _generate_medium_names { my ($urpm, $medium) = @_; -e statedir_names($urpm, $medium) and return; my $fh = urpm::sys::open_safe($urpm, ">", statedir_names($urpm, $medium)) or return; foreach ($medium->{start} .. $medium->{end}) { my $pkg = $urpm->{depslist}[$_] or $urpm->{error}(N("Error generating names file: dependency %d not found", $_)), return; print $fh $pkg->name . "\n"; } } sub _guess_synthesis_suffix { my ($url) = @_; $url =~ m!\bmedia/(\w+)/*\Z! && $1; } sub _synthesis_suffix { my ($medium) = @_; $medium->{with_synthesis} =~ /synthesis\.hdlist(.*?)(?:\.src)?\.cz$/ ? $1 : ''; } sub _medium_is_up_to_date { my ($urpm, $medium) = @_; unlink cachedir_with_synthesis($urpm, $medium); $urpm->{info}(N("medium \"%s\" is up-to-date", $medium->{name})); #- the medium is now considered not modified. $medium->{modified} = 0; } sub _parse_synthesis { my ($urpm, $medium, $synthesis_file, $o_callback) = @_; -e $synthesis_file or return; $urpm->{log}(N("examining synthesis file [%s]", $synthesis_file)); ($medium->{start}, $medium->{end}) = $urpm->parse_synthesis($synthesis_file, $o_callback ? (callback => $o_callback) : @{[]}); } sub _parse_synthesis_or_ignore { my ($urpm, $medium, $o_callback) = @_; _parse_synthesis($urpm, $medium, any_synthesis($urpm, $medium), $o_callback) or _ignore_medium_on_parse_error($urpm, $medium); } sub is_valid_medium { my ($medium) = @_; defined $medium->{start} && defined $medium->{end}; } sub _ignore_medium_on_parse_error { my ($urpm, $medium) = @_; $urpm->{error}(N("problem reading synthesis file of medium \"%s\"", $medium->{name})); $medium->{ignore} = 1; } sub _copy_media_info_file { my ($urpm, $medium, $prefix, $suffix) = @_; my $name = "$prefix$suffix"; my $path = _synthesis_dir($medium) . "/$prefix" . _synthesis_suffix($medium) . $suffix; -e $path or $path = file_from_local_medium($medium) . "/media_info/$name"; my $result_file = "$urpm->{cachedir}/partial/$name"; if (-e $path) { $urpm->{log}(N("copying [%s] for medium \"%s\"...", $path, $medium->{name})); copy_and_own($path, $result_file) or $urpm->{error}(N("...copying failed")), return; } -s $result_file && $result_file; } sub _get_pubkey__local { my ($urpm, $medium) = @_; _copy_media_info_file($urpm, $medium, 'pubkey', ''); } sub _download_pubkey { my ($urpm, $medium) = @_; _download_media_info_file($urpm, $medium, 'pubkey', '', 1); } sub _download_media_info_file { my ($urpm, $medium, $prefix, $suffix, $quiet, $o_download_dir, $o_callback) = @_; my $download_dir = $o_download_dir || "$urpm->{cachedir}/partial"; my $name = "$prefix$suffix"; my $result_file = "$download_dir/$name"; my $found; if (_synthesis_suffix($medium)) { my $local_name = $prefix . _synthesis_suffix($medium) . $suffix; if (urpm::download::sync($urpm, $medium, [_synthesis_dir($medium) . "/$local_name"], dir => $download_dir, quiet => $quiet, callback => $o_callback)) { rename("$download_dir/$local_name", $result_file); $found = 1; } } if (!$found) { urpm::download::sync($urpm, $medium, [_synthesis_dir($medium) . "/$name"], dir => $download_dir, quiet => $quiet, callback => $o_callback) or unlink $result_file; } -s $result_file && $result_file; } sub get_descriptions_local { my ($urpm, $medium) = @_; unlink statedir_descriptions($urpm, $medium); my $dir = file_from_local_medium($medium); my $description_file = "$dir/media_info/descriptions"; #- new default location -e $description_file or $description_file = "$dir/../descriptions"; -e $description_file or return; $urpm->{log}(N("copying description file of \"%s\"...", $medium->{name})); if (copy_and_own($description_file, statedir_descriptions($urpm, $medium))) { $urpm->{log}(N("...copying done")); } else { $urpm->{error}(N("...copying failed")); $medium->{ignore} = 1; } } #- not handling different mirrors since the file is not always available sub get_descriptions_remote { my ($urpm, $medium) = @_; unlink "$urpm->{cachedir}/partial/descriptions"; if (-e statedir_descriptions($urpm, $medium)) { urpm::sys::move_or_die($urpm, statedir_descriptions($urpm, $medium), "$urpm->{cachedir}/partial/descriptions"); } urpm::download::sync($urpm, $medium, [ reduce_pathname("$medium->{url}/media_info/descriptions") ], quiet => 1) or #- try older location urpm::download::sync($urpm, $medium, [ reduce_pathname("$medium->{url}/../descriptions") ], quiet => 1); if (-e "$urpm->{cachedir}/partial/descriptions") { urpm::sys::move_or_die($urpm, "$urpm->{cachedir}/partial/descriptions", statedir_descriptions($urpm, $medium)); } } sub get_synthesis__local { my ($urpm, $medium, $callback) = @_; my $f = cachedir_with_synthesis($urpm, $medium); unlink $f; $urpm->{log}(N("copying [%s] for medium \"%s\"...", _url_with_synthesis($medium), $medium->{name})); $callback and $callback->('copy', $medium->{name}); if (copy_and_own(_url_with_synthesis($medium), $f)) { $callback and $callback->('done', $medium->{name}); $urpm->{log}(N("...copying done")); if (file_size($f) < 20) { $urpm->{error}(N("copy of [%s] failed (file is suspiciously small)", $f)); 0; } else { 1; } } else { $callback and $callback->('failed', $medium->{name}); #- force error, reported afterwards unlink $f; 0; } } sub get_synthesis__remote { my ($urpm, $medium, $callback, $quiet) = @_; my $ok = try__maybe_mirrorlist($urpm, $medium, sub { urpm::download::sync($urpm, $medium, [ _url_with_synthesis($medium) ], quiet => $quiet, callback => $callback) && _check_synthesis(cachedir_with_synthesis($urpm, $medium)); }); if (!$ok) { chomp(my $err = $@); $urpm->{error}(N("...retrieving failed: %s", $err)); } $ok; } sub _check_synthesis { my ($synthesis_file) = @_; file_size($synthesis_file) >= 20 or return; # check first 2 lines do not contain typical html code # this is useful for servers not returning a valid HTTP error (#39918) open(my $F, '<', $synthesis_file) or return; my $s = <$F>; $s .= <$F>; $s !~ /<html>|<!DOCTYPE\s/i; } #- check copied/downloaded file has right signature. sub check_synthesis_md5sum { my ($urpm, $medium) = @_; my $wanted_md5sum = urpm::md5sum::from_MD5SUM__or_warn($urpm, "$urpm->{cachedir}/partial/MD5SUM", 'synthesis.hdlist.cz'); if ($wanted_md5sum) { $urpm->{log}(N("computing md5sum of retrieved source synthesis")); urpm::md5sum::compute(cachedir_with_synthesis($urpm, $medium)) eq $wanted_md5sum or $urpm->{error}(N("retrieval of [%s] failed (md5sum mismatch)", _url_with_synthesis($medium))), return; } 1; } sub _call_genhdlist2 { my ($urpm, $medium) = @_; !$medium->{with_synthesis} or $urpm->{fatal}(1, 'with_synthesis not handled with --probe-rpms'); my $dir = file_from_local_medium($medium); system('genhdlist2', $urpm->{debug} ? '--verbose' : (), '--no-hdlist', '--media_info-dir', "$urpm->{cachedir}/partial", $dir) == 0 or $urpm->{error}(N("genhdlist2 failed on %s", $dir)), return; 1; } sub _is_statedir_MD5SUM_uptodate { my ($urpm, $medium, $new_MD5SUM) = @_; my $current_MD5SUM = statedir_MD5SUM($urpm, $medium); $urpm->{log}(N("comparing %s and %s", $new_MD5SUM, $current_MD5SUM)); cat_($new_MD5SUM) eq cat_($current_MD5SUM); } #- options: callback, force, nomd5sum, probe_with sub _update_medium__parse_if_unmodified__local { my ($urpm, $medium, $options) = @_; if ($options->{probe_with} ne 'rpms') { #- the directory given does not exist and may be accessible #- by mounting some other directory. Try to figure it out and mount #- everything that might be necessary. urpm::removable::try_mounting_medium($urpm, $medium) or return; } #- try to probe for possible with_synthesis parameter, unless #- it is already defined (and valid). if (!_valid_synthesis_dir($medium) && $options->{probe_with} ne 'rpms') { _probe_with_try_list($urpm, $medium, sub { my ($url) = @_; -e $url or return; if (file_size($url) >= 20) { 1; } else { $urpm->{error}(N("invalid hdlist file %s for medium \"%s\"", $url, $medium->{name})); 0; } }); } if (_is_local_virtual($medium)) { #- syncing a local virtual medium is very simple :) 1; } elsif ($options->{probe_with} eq 'rpms' || !_valid_synthesis_dir($medium)) { _call_genhdlist2($urpm, $medium) or return ''; if (!$medium->{'no-media-info'}) { $medium->{'no-media-info'} = 1; $urpm->{modified} = 1; } 1; } elsif (_valid_synthesis_dir($medium)) { my $new_MD5SUM = _synthesis_dir($medium) . '/MD5SUM'; unlink "$urpm->{cachedir}/partial/MD5SUM"; if (!$options->{nomd5sum} && file_size($new_MD5SUM) > 32) { if (!$options->{force} && _is_statedir_MD5SUM_uptodate($urpm, $medium, $new_MD5SUM)) { _medium_is_up_to_date($urpm, $medium); return 'unmodified'; } $urpm->{log}(N("copying MD5SUM file of \"%s\"...", $medium->{name})); copy_and_own($new_MD5SUM, "$urpm->{cachedir}/partial/MD5SUM"); } my $ok = get_synthesis__local($urpm, $medium, $options->{callback}); $ok &&= check_synthesis_md5sum($urpm, $medium) if !$options->{force} && !$options->{nomd5sum}; if ($ok) { 1; } elsif ($urpm->{options}{'build-hdlist-on-error'}) { #- if copying synthesis has failed, try to build it directly. _call_genhdlist2($urpm, $medium) or return ''; 1; } else { _ignore_medium_on_parse_error($urpm, $medium); ''; } } } sub _download_MD5SUM { my ($urpm, $medium) = @_; my $cachedir_MD5SUM = "$urpm->{cachedir}/partial/MD5SUM"; unlink $cachedir_MD5SUM; urpm::download::sync($urpm, $medium, [ reduce_pathname(_synthesis_dir($medium) . '/MD5SUM') ], quiet => 1) or return; $cachedir_MD5SUM; } sub _download_MD5SUM_and_check { my ($urpm, $medium) = @_; my ($err, $cachedir_MD5SUM); require urpm::mirrors; try__maybe_mirrorlist($urpm, $medium, sub { $cachedir_MD5SUM = _download_MD5SUM($urpm, $medium) or $err = $@; $cachedir_MD5SUM && urpm::md5sum::check_file($cachedir_MD5SUM); }) and return $cachedir_MD5SUM; if ($cachedir_MD5SUM) { $urpm->{error}(N("invalid MD5SUM file (downloaded from %s)", _synthesis_dir($medium))); } else { $urpm->{error}(N("...retrieving failed: %s", $err)); } undef; } #- options: callback, force, nomd5sum, probe_with, quiet sub _update_medium__parse_if_unmodified__remote { my ($urpm, $medium, $options) = @_; #- examine if a distant MD5SUM file is available. #- this will only be done if $with_synthesis is not empty in order to use #- an existing synthesis file, and to check if download was good. #- if no MD5SUM is available, do it as before... if (_synthesis_dir($medium)) { #- we can assume at this point a basename is existing, but it needs #- to be checked for being valid, nothing can be deduced if no MD5SUM #- file is present. if (!$options->{nomd5sum}) { my $new_MD5SUM = _download_MD5SUM_and_check($urpm, $medium) or return; if ($options->{force} < 2 && _is_statedir_MD5SUM_uptodate($urpm, $medium, $new_MD5SUM)) { _medium_is_up_to_date($urpm, $medium); return 'unmodified'; } } } #- try to probe for possible with_synthesis parameter, unless #- it is already defined (and valid). $urpm->{log}(N("retrieving source synthesis of \"%s\"...", $medium->{name})); $options->{callback} and $options->{callback}('retrieve', $medium->{name}); my $error = sub { my ($msg) = @_; $urpm->{error}($msg); unlink cachedir_with_synthesis($urpm, $medium); $options->{callback} and $options->{callback}('failed', $medium->{name}); }; my $ok = 1; if (!_synthesis_dir($medium)) { my $err; _probe_with_try_list($urpm, $medium, sub { my ($url) = @_; my $f = "$urpm->{cachedir}/partial/" . basename($url); $options->{force} and unlink $f; if (urpm::download::sync($urpm, $medium, [ $url ], quiet => $options->{quiet}, callback => $options->{callback}) && _check_synthesis($f)) { $urpm->{log}(N("found probed synthesis as %s", $url)); 1; } else { chomp($err = $@); 0; } }) or do { $error->(N("no synthesis file found for medium \"%s\"", $medium->{name})); $urpm->{error}(N("...retrieving failed: %s", $err)); return; }; $options->{nomd5sum} || _download_MD5SUM($urpm, $medium); } else { if ($options->{force}) { unlink cachedir_with_synthesis($urpm, $medium); } else { #- for rsync, try to sync (copy if needed) local copy after restored the previous one. my $previous_synthesis = statedir_synthesis($urpm, $medium); if (-e $previous_synthesis && urpm::protocol_from_url($medium->{url}) eq 'rsync') { copy_and_own( $previous_synthesis, cachedir_with_synthesis($urpm, $medium), ) or $error->(N("...copying failed")), return; } } $ok = get_synthesis__remote($urpm, $medium, $options->{callback}, $options->{quiet}); } $ok &&= check_synthesis_md5sum($urpm, $medium) if !$options->{force} && !$options->{nomd5sum}; $options->{callback} and $options->{callback}('done', $medium->{name}); if (!$ok) { _ignore_medium_on_parse_error($urpm, $medium); return; } 1; } sub _get_pubkey_and_descriptions { my ($urpm, $medium, $nopubkey) = @_; my $local = file_from_local_medium($medium); ($local ? \&get_descriptions_local : \&get_descriptions_remote)->($urpm, $medium); #- examine if a pubkey file is available. if (!$nopubkey && !$medium->{'key-ids'}) { ($local ? \&_get_pubkey__local : \&_download_pubkey)->($urpm, $medium); } } sub _read_cachedir_pubkey { my ($urpm, $medium, $b_wait_lock) = @_; -s "$urpm->{cachedir}/partial/pubkey" or return; $urpm->{log}(N("examining pubkey file of \"%s\"...", $medium->{name})); my $_rpm_lock = urpm::lock::rpm_db($urpm, 'exclusive', wait => $b_wait_lock); my $db = urpm::db_open_or_die_($urpm, 'rw'); my %key_ids; URPM::import_needed_pubkeys_from_file($db, "$urpm->{cachedir}/partial/pubkey", sub { my ($id, $imported) = @_; if ($id) { $key_ids{$id} = undef; $imported and $urpm->{log}(N("...imported key %s from pubkey file of \"%s\"", $id, $medium->{name})); $imported or $urpm->{debug}("pubkey $id already imported") if $urpm->{debug}; } else { $urpm->{error}(N("unable to import pubkey file of \"%s\"", $medium->{name})); } }); unlink "$urpm->{cachedir}/partial/pubkey"; join(',', keys %key_ids); } #- options: callback, force, nomd5sum, probe_with, quiet, nopubkey, wait_lock #- (from _update_medium__parse_if_unmodified__local and _update_medium__parse_if_unmodified__remote) sub _update_medium_ { my ($urpm, $medium, %options) = @_; #- always delete a remaining list file or pubkey file in cache. foreach (qw(list pubkey)) { unlink "$urpm->{cachedir}/partial/$_"; } _pick_mirror_if_needed($urpm, $medium, 'allow-cache-update'); #- check for a reconfig.urpmi file (if not already reconfigured) if (!$medium->{noreconfigure}) { may_reconfig_urpmi($urpm, $medium); } { my $rc = is_local_medium($medium) ? _update_medium__parse_if_unmodified__local($urpm, $medium, \%options) : _update_medium__parse_if_unmodified__remote($urpm, $medium, \%options); if (!$rc || $rc eq 'unmodified') { return $rc; } } my $is_updating = -e statedir_synthesis($urpm, $medium); if (!_is_local_virtual($medium)) { if (file_size(cachedir_with_synthesis($urpm, $medium)) < 20) { $urpm->{error}(N("no synthesis file found for medium \"%s\"", $medium->{name})); return; } #- use new files unlink statedir_synthesis($urpm, $medium); urpm::sys::move_or_die($urpm, cachedir_with_synthesis($urpm, $medium), statedir_synthesis($urpm, $medium)); unlink statedir_MD5SUM($urpm, $medium); if (!$medium->{with_synthesis}) { # no MD5SUM when using with_synthesis, urpmi.update will update everytime! urpm::sys::move_or_die($urpm, "$urpm->{cachedir}/partial/MD5SUM", statedir_MD5SUM($urpm, $medium)) if -e "$urpm->{cachedir}/partial/MD5SUM"; } # we never download hdlist by default. urpmf will download it via any_hdlist() if really needed unlink statedir_hdlist($urpm, $medium); remove_user_media_info_files($urpm, $medium); if (!_local_file($medium)) { _retrieve_xml_media_info_or_remove($urpm, $medium, $options{quiet}) or return; } } $medium->{modified} = 0; # generated on first _parse_media() unlink statedir_names($urpm, $medium); _get_pubkey_and_descriptions($urpm, $medium, $options{nopubkey}); $medium->{'key-ids'} ||= _read_cachedir_pubkey($urpm, $medium, $options{wait_lock}); $is_updating and $urpm->{info}(N("updated medium \"%s\"", $medium->{name})); 1; } sub _update_medium { my ($urpm, $medium, %options) = @_; my $rc = _update_medium_($urpm, $medium, %options); if (!$rc && !_is_local_virtual($medium)) { #- an error has occured for updating the medium, we have to remove temporary files. unlink(glob("$urpm->{cachedir}/partial/*")); } $rc; } sub _update_media__handle_some_flags { my ($urpm, $forcekey, $all) = @_; foreach my $medium (non_ignored_media($urpm)) { $forcekey and delete $medium->{'key-ids'}; if ($medium->{static}) { #- don't ever update static media $medium->{modified} = 0; } elsif ($all) { #- if we're rebuilding all media, mark them as modified (except removable ones) $medium->{modified} ||= !urpm::is_cdrom_url($medium->{url}) && !$medium->{iso}; } } } #- Update the urpmi database w.r.t. the current configuration. #- Takes care of modifications, and tries some tricks to bypass #- the recomputation of base files. #- Recognized options : #- all : all medias are being rebuilt #- callback : UI callback #- forcekey : force retrieval of pubkey #- force : try to force rebuilding base files #- nomd5sum : don't verify MD5SUM of retrieved files #- nopubkey : don't use rpm pubkeys #- probe_with : probe synthesis or rpms #- quiet : download synthesis quietly #- wait_lock : block until lock can be acquired sub update_media { my ($urpm, %options) = @_; $urpm->{media} or return; # verify that configuration has been read $options{nopubkey} ||= $urpm->{options}{nopubkey}; #- examine each medium to see if one of them needs to be updated. #- if this is the case and if not forced, try to use a pre-calculated #- synthesis file, else build it from rpm files. clean($urpm); _update_media__handle_some_flags($urpm, $options{forcekey}, $options{all}); my %updates_result; foreach my $medium (grep { $_->{modified} } non_ignored_media($urpm)) { my $rc = _update_medium($urpm, $medium, %options); $updates_result{$rc || 'error'}++; } $urpm->{debug} and $urpm->{debug}('update_medium: ' . join(' ', map { "$_=$updates_result{$_}" } keys %updates_result)); if ($updates_result{1} == 0) { #- only errors/unmodified, leave now #- (this ensures buggy added medium is not added to urpmi.cfg) return $updates_result{error} == 0; } if ($urpm->{modified}) { #- write config files in any case write_config($urpm); urpm::download::dump_proxy_config(); } $updates_result{error} == 0; } sub _maybe_in_statedir_MD5SUM { my ($urpm, $medium, $file) = @_; my $md5sum_file = statedir_MD5SUM($urpm, $medium); -e $md5sum_file && urpm::md5sum::parse($md5sum_file)->{$file}; } sub _retrieve_xml_media_info_or_remove { my ($urpm, $medium, $quiet) = @_; my $ok = 1; foreach my $xml_info (@xml_media_info) { my $f = statedir_xml_info($urpm, $medium, $xml_info); my $get_it = urpm::is_cdrom_url($medium->{url}) || get_medium_option($urpm, $medium, 'xml-info') eq 'always' || get_medium_option($urpm, $medium, 'xml-info') eq 'update-only' && -e $f; if ($get_it && _maybe_in_statedir_MD5SUM($urpm, $medium, "$xml_info.xml.lzma")) { $ok &&= _retrieve_media_info_file_and_check_MD5SUM($urpm, $medium, $xml_info, '.xml.lzma', $quiet); $ok = 1 if urpm::is_cdrom_url($medium->{url}); } else { #- "on-demand" unlink $f; } } $ok; } sub _retrieve_media_info_file_and_check_MD5SUM { my ($urpm, $medium, $prefix, $suffix, $quiet) = @_; my $name = "$prefix$suffix"; my $cachedir_file = is_local_medium($medium) ? _copy_media_info_file($urpm, $medium, $prefix, $suffix) : _download_media_info_file($urpm, $medium, $prefix, $suffix, $quiet) or $urpm->{error}(N("retrieval of [%s] failed", _synthesis_dir($medium) . "/$name")), return; my $wanted_md5sum = urpm::md5sum::from_MD5SUM__or_warn($urpm, statedir_MD5SUM($urpm, $medium), $name); if ($wanted_md5sum) { $urpm->{debug}("computing md5sum of retrieved $name") if $urpm->{debug}; urpm::md5sum::compute($cachedir_file) eq $wanted_md5sum or $urpm->{error}(N("retrieval of [%s] failed (md5sum mismatch)", _synthesis_dir($medium) . "/$name")), return; urpm::util::move($cachedir_file, statedir_media_info_file($urpm, $medium, $prefix, $suffix)) or return; } 1; } sub _any_media_info__or_download { my ($urpm, $medium, $prefix, $suffix, $quiet, $o_callback) = @_; my $f = statedir_media_info_file($urpm, $medium, $prefix, $suffix); -s $f and return $f; my $download_dir; if (my $userdir = urpm::userdir($urpm)) { $f = "$userdir/" . statedir_media_info_basename($medium, $prefix, $suffix); -s $f and return $f; $download_dir = "$userdir/partial"; mkdir $download_dir; } get_medium_option($urpm, $medium, 'xml-info') ne 'never' or return; _maybe_in_statedir_MD5SUM($urpm, $medium, "$prefix$suffix") or return; my $file_in_partial = _download_media_info_file($urpm, $medium, $prefix, $suffix, $quiet, $download_dir, $o_callback) or return; urpm::util::move($file_in_partial, $f) or return; $f; } #- side-effects: #- + those of urpm::mirrors::pick_one ($urpm->{mirrors_cache}, $medium->{url}) sub _pick_mirror_if_needed { my ($urpm, $medium, $allow_cache_update) = @_; $medium->{mirrorlist} && !$medium->{url} or return; require urpm::mirrors; urpm::mirrors::pick_one($urpm, $medium, $allow_cache_update); } #- side-effects: #- + those of urpm::mirrors::try ($urpm->{mirrors_cache}, $medium->{url}) sub try__maybe_mirrorlist { my ($urpm, $medium, $try) = @_; if ($medium->{mirrorlist}) { require urpm::mirrors; urpm::mirrors::try($urpm, $medium, $try); } else { $try->(); } } #- clean params and depslist computation zone. sub clean { my ($urpm) = @_; $urpm->{depslist} = []; $urpm->{provides} = {}; foreach (@{$urpm->{media} || []}) { delete $_->{start}; delete $_->{end}; } } 1;