summaryrefslogtreecommitdiffstats
path: root/perl-install/install_steps_interactive.pm
blob: 26781f2542431e3ef89495a30b2987a805ea5abc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
package install_steps_interactive;


use diagnostics;
use strict;
use vars qw(@ISA);

@ISA = qw(install_steps);

#-######################################################################################
#- misc imports
#-######################################################################################
use common qw(:common :file :functional :system);
use partition_table qw(:types);
use install_steps;
use install_any;
use detect_devices;
use run_program;
use commands;
use devices;
use fsedit;
use network;
use raid;
use mouse;
use modules;
use lang;
use services;
use loopback;
use keyboard;
use any;
use fs;
use log;

#-######################################################################################
#- In/Out Steps Functions
#-######################################################################################
sub errorInStep($$) {
    my ($o, $err) = @_;
    $err =~ s/ at .*?$/\./ unless $::testing; #- avoid error message.
    $o->ask_warn(_("Error"), [ _("An error occurred"), $err ]);
}

sub kill_action {
    my ($o) = @_;
    $o->kill;
}

#-######################################################################################
#- Steps Functions
#-######################################################################################
#------------------------------------------------------------------------------
sub selectLanguage($) {
    my ($o) = @_;

    $o->{lang} =
      lang::text2lang($o->ask_from_list("Language",
					_("Which language do you want?"),
					# the translation may be used for the help
					[ lang::list() ],
					lang::lang2text($o->{lang})));
    install_steps::selectLanguage($o);

#-    $o->{useless_thing_accepted} = $o->ask_from_list_('', 
#-"Warning no warranty", 
#-			 [ __("Accept"), __("Refuse") ], "Accept") eq "Accept" or _exit(1) unless $o->{useless_thing_accepted};
}
#------------------------------------------------------------------------------
sub selectKeyboard($) {
    my ($o) = @_;
    $o->{keyboard} =
      keyboard::text2keyboard($o->ask_from_list_(_("Keyboard"),
						 _("What is your keyboard layout?"),
						 [ keyboard::list() ],
						 keyboard::keyboard2text($o->{keyboard})));
    delete $o->{keyboard_unsafe};
    install_steps::selectKeyboard($o);


    if ($::expert) {
	my $langs = $o->ask_many_from_list('', 
		_("You can choose other languages that will be available after install"),
		[ lang::list() ]) or goto &selectLanguage if $::expert;
	$o->{langs} = [ $o->{lang}, grep_index { $langs->[$::i] } lang::list() ];
    }
}
#------------------------------------------------------------------------------
sub selectPath($) {
    my ($o) = @_;
    $o->{isUpgrade} =
      $o->ask_from_list_(_("Install/Upgrade"),
			 _("Is this an install or an upgrade?"),
			 [ __("Install"), __("Upgrade") ],
			 $o->{isUpgrade} ? "Upgrade" : "Install") eq "Upgrade";
    install_steps::selectPath($o);
}
#------------------------------------------------------------------------------
sub selectRootPartition($@) {
    my ($o, @parts) = @_;
    $o->{upgradeRootPartition} =
      $o->ask_from_list(_("Root Partition"),
			_("What is the root partition (/) of your system?"),
			[ @parts ], $o->{upgradeRootPartition});
#- TODO check choice, then mount partition in $o->{prefix} and autodetect.
#-    install_steps::selectRootPartition($o);
}
#------------------------------------------------------------------------------
sub selectInstallClass($@) {
    my ($o, @classes) = @_;
    my @c = qw(beginner specific expert);
    my %c = (
	     beginner  => _("Recommended"),
	     specific  => _("Customized"),
	     expert    => _("Expert"),
	    );
    my $installClass = ${{reverse %c}}{$o->ask_from_list(_("Install Class"),
							 _("What installation class do you want?"),
							 [ map { $c{$_} } @c ], $c{$o->{installClass}} || $c{beginner})};
    $::expert   = $installClass eq "expert";
    $::beginner = $installClass eq "beginner";

    if ($::beginner) {
	$o->{installClass} = "normal";
    } else {
	my %c = (
		 normal    => _("Normal"),
		 developer => _("Development"),
		 server    => _("Server"),
		);
	$o->{installClass} = ${{reverse %c}}{$o->ask_from_list(_("Install Class"),
							       _("What usage do you want?"),
							       [ values %c ], $c{$o->{installClass}})};
    }
    install_steps::selectInstallClass($o);
}

#------------------------------------------------------------------------------
sub selectMouse {
    my ($o, $force) = @_;

    my $name = $o->{mouse}{FULLNAME};
    if (!$name || $::expert || $force) {
	$name ||= "Generic Mouse (serial)";
	$name = $o->ask_from_list_('', _("What is the type of your mouse?"), [ mouse::names() ], $name);
	$o->{mouse} = mouse::name2mouse($name);
    }
    $o->{mouse}{XEMU3} = 'yes' if $o->{mouse}{nbuttons} < 3; #- if $o->{mouse}{nbuttons} < 3 && $o->ask_yesorno('', _("Emulate third button?"), 1);

    if ($o->{mouse}{device} eq "ttyS") {
	$o->set_help('selectSerialPort');
	$o->{mouse}{device} = mouse::serial_ports_names2dev(
	  $o->ask_from_list(_("Mouse Port"),
			    _("Which serial port is your mouse connected to?"),
			    [ mouse::serial_ports_names() ]));
    }

    $o->setup_thiskind('SERIAL_USB', !$::expert, 0) if $o->{mouse}{device} eq "usbmouse";

    $o->SUPER::selectMouse;
}
#------------------------------------------------------------------------------
sub setupSCSI { setup_thiskind($_[0], 'scsi', $_[1], $_[2]) }

sub ask_mntpoint_s {
    my ($o, $fstab) = @_;
    my @fstab = grep { isExt2($_) } @$fstab;
    @fstab = grep { isSwap($_) } @$fstab if @fstab == 0;
#    @fstab = @$fstab if @fstab == 0;
    die _("no available partitions") if @fstab == 0;

    my $msg = sub { "$_->{device} " . _("(%dMb)", $_->{size} / 1024 / 2) };
    
    if (@fstab == 1) {
	$fstab[0]->{mntpoint} = '/';
    } elsif ($::beginner) {
	my %l; $l{&$msg} = $_ foreach @fstab;
	my $e = $o->ask_from_list('', 
				  _("Which partition do you want to use as your root partition"), 
				  [ sort keys %l ]);
	(fsedit::get_root($fstab) || {})->{mntpoint} = '';
	$l{$e}{mntpoint} = '/';
    } else {
	$o->ask_from_entries_ref
	  ('', 
	   _("Choose the mount points"),
	   [ map { &$msg } @fstab ],
	   [ map { +{ val => \$_->{mntpoint}, 
		      list => [ '', fsedit::suggestions_mntpoint([]) ]
		    } } @fstab ]);
    }
    $o->SUPER::ask_mntpoint_s($fstab);
}

#------------------------------------------------------------------------------
sub rebootNeeded($) {
    my ($o) = @_;
    $o->ask_warn('', _("You need to reboot for the partition table modifications to take place"));

    install_steps::rebootNeeded($o);
}

#------------------------------------------------------------------------------
sub choosePartitionsToFormat($$) {
    my ($o, $fstab) = @_;

    $o->SUPER::choosePartitionsToFormat($fstab);

    my @l = grep { !$_->{isFormatted} && $_->{mntpoint} && !($::beginner && isSwap($_)) } @$fstab;
    $_->{toFormat} = 1 foreach grep {  $::beginner && isSwap($_) } @$fstab;

    return if $::beginner && 0 == grep { ! $_->{toFormat} } @l;

    $_->{toFormat} ||= $_->{toFormatUnsure} foreach @l;
    log::l("preparing to format $_->{mntpoint}") foreach grep { $_->{toFormat} } @l;

    my %label;
    $label{$_} = (isSwap($_) ? type2name($_->{type}) : $_->{mntpoint}) . "   ($_->{device})" foreach @l;

    $o->ask_many_from_list_ref('', _("Choose the partitions you want to format"),
			       [ map { $label{$_} } @l ],
			       [ map { \$_->{toFormat} } @l ]) or die "cancel";
    @l = grep { $_->{toFormat} && !isLoopback($_) } @l;
    $o->ask_many_from_list_ref('', _("Check bad blocks?"),
			       [ map { $label{$_} } @l ],
			       [ map { \$_->{toFormatCheck} } @l ]) or goto &choosePartitionsToFormat if $::expert;
}


sub formatMountPartitions {
    my ($o, $fstab) = @_;
    my $w = $o->wait_message('', _("Formatting partitions"));
    fs::formatMount_all($o->{raid}, $o->{fstab}, $o->{prefix}, sub {
	my ($part) = @_;
	$w->set(isLoopback($part) ?
		_("Creating and formatting loopback file %s", loopback::file($part)) :
		_("Formatting partition %s", $part->{device}));
    });
    die _("Not enough swap to fulfill installation, please add some") if availableMemory < 40 * 1024;
}

#------------------------------------------------------------------------------
sub setPackages {
    my ($o) = @_;
    my $w = $o->wait_message('', _("Looking for available packages"));
    $o->SUPER::setPackages;
}
#------------------------------------------------------------------------------
sub selectPackagesToUpgrade {
    my ($o) = @_;
    my $w = $o->wait_message('', _("Finding packages to upgrade"));
    $o->SUPER::selectPackagesToUpgrade();
}
#------------------------------------------------------------------------------
sub choosePackages {
    my ($o, $packages, $compss, $compssUsers, $compssUsersSorted, $first_time) = @_;

    require pkgs;
    unless ($o->{isUpgrade}) {
	my $available = pkgs::invCorrectSize(install_any::getAvailableSpace($o) / sqr(1024)) * sqr(1024);
	
	foreach (values %{$packages->[0]}) {
	    pkgs::packageSetFlagSkip($_, 0);
	    pkgs::packageSetFlagUnskip($_, 0);
	}
	pkgs::unselectAllPackages($packages);
	pkgs::selectPackage($o->{packages}, pkgs::packageByName($o->{packages}, $_) || next) foreach @{$o->{default_packages}};

	pkgs::setSelectedFromCompssList($o->{compssListLevels}, $packages, $::expert ? 90 : 80, $available, $o->{installClass});
	my $min_size = pkgs::selectedSize($packages);

	$o->chooseGroups($packages, $compssUsers, $compssUsersSorted);

	my $max_size = int (sum map { pkgs::packageSize($_) } values %{$packages->[0]});

	 if (!$::beginner && $max_size > $available) {
	     $o->ask_okcancel('', 
_("You need %dMB for a full install of the groups you selected.
You can go on anyway, but be warned that you won't get all packages", $max_size / sqr(1024)), 1) or goto &choosePackages
	 }

	 my $size2install = $::beginner ? $available * 0.7 : $o->chooseSizeToInstall($packages, $min_size, min($max_size, $available * 0.9)) or goto &choosePackages;

	 ($o->{packages_}{ind}) = 
	   pkgs::setSelectedFromCompssList($o->{compssListLevels}, $packages, 1, $size2install, $o->{installClass});
    }
    $o->choosePackagesTree($packages, $compss) if $::expert;
}

sub chooseSizeToInstall {
    my ($o, $packages, $min, $max) = @_;
    install_any::getAvailableSpace($o) * 0.7;
}
sub choosePackagesTree {}

sub chooseGroups {
    my ($o, $packages, $compssUsers, $compssUsersSorted) = @_;

    $o->ask_many_from_list_ref('',
			       _("Package Group Selection"),
			       [ @$compssUsersSorted, "Miscellaneous" ],
			       [ map { \$o->{compssUsersChoice}{$_} } @$compssUsersSorted, "Miscellaneous" ]
			       ) or goto &chooseGroups unless $::beginner;

    unless ($o->{compssUsersChoice}{Miscellaneous}) {
	my %l;
	$l{@{$compssUsers->{$_}}} = () foreach @$compssUsersSorted;
	exists $l{$_} or pkgs::packageSetFlagSkip(pkgs::packageByName($packages, $_), 1) foreach keys %$packages;
    }
    foreach (@$compssUsersSorted) {
	$o->{compssUsersChoice}{$_} or pkgs::skipSetWithProvides($packages, @{$compssUsers->{$_}});
    }
    foreach (@$compssUsersSorted) {
	$o->{compssUsersChoice}{$_} or next;
	foreach (@{$compssUsers->{$_}}) {
	    $_->{unskip} = 1;
	    delete $_->{skip};
	}
    }
}

#------------------------------------------------------------------------------
sub installPackages {
    my ($o, $packages) = @_;
    my ($current, $total) = 0;

    my $w = $o->wait_message(_("Installing"), _("Preparing installation"));

    my $old = \&pkgs::installCallback;
    local *pkgs::installCallback = sub {
	my $m = shift;
	if ($m =~ /^Starting installation/) {
	    $total = $_[1];
	} elsif ($m =~ /^Starting installing package/) {
	    my $name = $_[0];
	    $w->set(_("Installing package %s\n%d%%", $name, $total && 100 * $current / $total));
	    $current += pkgs::packageSize(pkgs::packageByName($o->{packages}, $name));
	} else { unshift @_, $m; goto $old }
    };
    $o->SUPER::installPackages($packages);
}

sub afterInstallPackages($) {
    my ($o) = @_;
    my $w = $o->wait_message('', _("Post install configuration"));
    $o->SUPER::afterInstallPackages($o);
}

#------------------------------------------------------------------------------
sub configureNetwork($) {
    my ($o, $first_time) = @_;
    local $_;
    if ($o->{intf} && $first_time) {
	my @l = (
		 __("Keep the current IP configuration"),
		 __("Reconfigure network now"),
		 __("Do not set up networking"),
		);
	$_ = $::beginner ? "Keep" : 
	  $o->ask_from_list_([ _("Network Configuration") ],
			       _("Local networking has already been configured. Do you want to:"),
			     [ @l ]) || "Do not";
    } else {
	$_ = $::beginner ? "Do not" :
	  $o->ask_from_list_([ _("Network Configuration") ],
			     _("Do you want to configure networking for your system?"),
			     [ __("Local LAN"), __("Dialup with modem"), __("Do not set up networking") ]);
    }
    if (/^Dialup/) {
	$o->pppConfig;
    } elsif (/^Do not/) {
	$o->{netc}{NETWORKING} = "false";
    } elsif (!/^Keep/) {
	$o->setup_thiskind('net', !$::expert, 1);
	my @l = detect_devices::getNet() or die _("no network card found");

	my $last; foreach ($::beginner ? $l[0] : @l) {
	    my $intf = network::findIntf($o->{intf} ||= [], $_);
	    add2hash($intf, $last);
	    add2hash($intf, { NETMASK => '255.255.255.0' });
	    $o->configureNetworkIntf($intf) or return;

	    $o->{netc} ||= {};
	    delete $o->{netc}{dnsServer};
	    delete $o->{netc}{GATEWAY};
	    $last = $intf;
	}
	#-	  {
	#-	      my $wait = $o->wait_message(_("Hostname"), _("Determining host name and domain..."));
	#-	      network::guessHostname($o->{prefix}, $o->{netc}, $o->{intf});
	#-	  }
	$last->{BOOTPROTO} =~ /^(dhcp|bootp)$/ ||
	  $o->configureNetworkNet($o->{netc}, $last ||= {}, @l) or return;
    }
    install_steps::configureNetwork($o);
}

sub configureNetworkIntf {
    my ($o, $intf) = @_;
    my $pump = $intf->{BOOTPROTO} =~ /^(dhcp|bootp)$/;
    delete $intf->{NETWORK};
    delete $intf->{BROADCAST};
    my @fields = qw(IPADDR NETMASK);
    $o->set_help('configureNetworkIP');
    $o->ask_from_entries_ref(_("Configuring network device %s", $intf->{DEVICE}),
($::isStandalone ? '' : _("Configuring network device %s", $intf->{DEVICE}) . "\n\n") .
_("Please enter the IP configuration for this machine.
Each item should be entered as an IP address in dotted-decimal
notation (for example, 1.2.3.4)."),
			     [ _("IP address:"), _("Netmask:"), _("Automatic IP") ],
			     [ \$intf->{IPADDR}, \$intf->{NETMASK}, { val => \$pump, type => "bool", text => _("(bootp/dhcp)") } ],
			     complete => sub {
				 $intf->{BOOTPROTO} = $pump ? "dhcp" : "static";
				 return 0 if $pump;
				 for (my $i = 0; $i < @fields; $i++) {
				     unless (network::is_ip($intf->{$fields[$i]})) {
					 $o->ask_warn('', _("IP address should be in format 1.2.3.4"));
					 return (1,$i);
				     }
				     return 0;
				 }
			     },
			     focus_out => sub {
				 $intf->{NETMASK} = network::netmask($intf->{IPADDR}) unless $_[0]
			     }
			    );
}

sub configureNetworkNet {
    my ($o, $netc, $intf, @devices) = @_;

    $netc->{dnsServer} ||= network::dns($intf->{IPADDR});
    $netc->{GATEWAY}   ||= network::gateway($intf->{IPADDR});

    $o->ask_from_entries_ref(_("Configuring network"),
_("Please enter your host name.
Your host name should be a fully-qualified host name,
such as ``mybox.mylab.myco.com''.
You may also enter the IP address of the gateway if you have one"),
			     [_("Host name:"), _("DNS server:"), _("Gateway:"), $::expert ? _("Gateway device:") : ()],
			     [(map { \$netc->{$_}} qw(HOSTNAME dnsServer GATEWAY)),
			      {val => \$netc->{GATEWAYDEV}, list => \@devices}]
			    );

    $o->miscellaneousNetwork();
}

#------------------------------------------------------------------------------
sub pppConfig {
    my ($o) = @_;
    my $m = $o->{modem} ||= {};

    unless ($m->{device} || $::expert && !$o->ask_yesorno('', _("Try to find a modem?"), 1)) {
	foreach (0..3) {
	    next if $o->{mouse}{device} =~ /ttyS$_/;
	    detect_devices::hasModem("$o->{prefix}/dev/ttyS$_")
		and $m->{device} = "ttyS$_", last;
	}
    }

    $m->{device} ||= $o->set_help('selectSerialPort') && 
                     mouse::serial_ports_names2dev(
	$o->ask_from_list('', _("Which serial port is your modem connected to?"),
			  [ mouse::serial_ports_names ]));

    $o->set_help('configureNetworkISP');
    install_steps::pppConfig($o) if $o->ask_from_entries_refH('',
							      _("Dialup options"), [
_("Connection name") => \$m->{connection},
_("Phone number") => \$m->{phone},
_("Login ID") => \$m->{login},
_("Password") => { val => \$m->{passwd}, hidden => 1 },
_("Authentication") => { val => \$m->{auth}, list => [ __("PAP"), __("CHAP"), __("Terminal-based"), __("Script-based") ] },
_("Domain name") => \$m->{domain},
_("First DNS Server") => \$m->{dns1},
_("Second DNS Server") => \$m->{dns2},
    ]);

    $o->miscellaneousNetwork();
}

#------------------------------------------------------------------------------
sub installCrypto {
    my ($o) = @_;
    my $u = $o->{crypto} ||= {};
    
    $::expert or return;
    if ($o->{intf} && $o->{netc}{NETWORKING} ne 'false') {
	my $w = $o->wait_message('', _("Bringing up the network"));
	network::up_it($o->{prefix}, $o->{intf});
    } elsif ($o->{modem}) {
	run_program::rooted($o->{prefix}, "ifup", "ppp0");
    } else {
	return;
    }
    
    is_empty_hash_ref($u) and $o->ask_yesorno('', 
_("You have now the possibility to download software aimed for encryption.

WARNING:

Due to different general requirements applicable to these software and imposed
by various jurisdictions, customer and/or end user of theses software should
ensure that the laws of his/their jurisdiction allow him/them to download, stock
and/or use these software.

In addition customer and/or end user shall particularly be aware to not infringe
the laws of his/their jurisdiction. Should customer and/or end user do not
respect the provision of these applicable laws, he/they will incur serious
sanctions.

In no event shall Mandrakesoft nor its manufacturers and/or suppliers be liable
for special, indirect or incidental damages whatsoever (including, but not
limited to loss of profits, business interruption, loss of commercial data and
other pecuniary losses, and eventual liabilities and indemnification to be paid
pursuant to a court decision) arising out of use, possession, or the sole
downloading of these software, to which customer and/or end user could
eventually have access after having sign up the present agreement.


For any queries relating to these agreement, please contact 
Mandrakesoft, Inc.
2400 N. Lincoln Avenue Suite 243
Altadena California 91001
USA")) || return;

    require crypto;
    eval {
      $u->{mirror} = crypto::text2mirror($o->ask_from_list('', _("Choose a mirror from which to get the packages"), [ crypto::mirrorstext() ], crypto::mirror2text($u->{mirror})));
    };
    return if $@;
    
    my @packages = do {
      my $w = $o->wait_message('', _("Contacting the mirror to get the list of available packages"));
      crypto::packages($u->{mirror});
    };

    $o->ask_many_from_list_ref('', _("Which packages do you want to install"), \@packages, [ map { \$u->{packages}{$_} } @packages ]) or return;

    my $w = $o->wait_message('', _("Downloading cryptographic packages"));
    install_steps::installCrypto($o);
}

#------------------------------------------------------------------------------
sub timeConfig {
    my ($o, $f, $clicked) = @_;

    require timezone;
    $o->{timezone}{timezone} ||= timezone::bestTimezone(lang::lang2text($o->{lang}));
    $o->{timezone}{timezone} = $o->ask_from_treelist('', _("Which is your timezone?"), '/', [ timezone::getTimeZones($::g_auto_install ? '' : $o->{prefix}) ], $o->{timezone}{timezone});
    $o->{timezone}{UTC} = $o->ask_yesorno('', _("Is your hardware clock set to GMT?"), $o->{timezone}{UTC}) if $::expert || $clicked;
    install_steps::timeConfig($o,$f);
}

#------------------------------------------------------------------------------
sub servicesConfig { 
    my ($o) = @_;
    services::drakxservices($o, $o->{prefix});
}

#------------------------------------------------------------------------------
sub printerConfig($) {
    my ($o) = @_;

    require printer;
    eval { add2hash($o->{printer} ||= {}, printer::getinfo($o->{prefix})) };
    require printerdrake;
    printerdrake::main($o->{printer}, $o, sub { install_any::pkg_install($o, $_[0]) });
}

#------------------------------------------------------------------------------
sub setRootPassword($) {
    my ($o, $clicked) = @_;
    my $sup = $o->{superuser} ||= {};
    $sup->{password2} ||= $sup->{password} ||= "";

    return if $o->{security} < 1 && !$clicked;

    $o->set_help("setRootPassword", 
		 $o->{installClass} eq "server" || $::expert ? "setRootPasswordMd5" : (),
		 $::beginner ? () : "setRootPasswordNIS");

    $o->ask_from_entries_refH([_("Set root password"), _("Ok"), $o->{security} > 2 ? () : _("No password")],
			 _("Set root password"), [
_("Password") => { val => \$sup->{password},  hidden => 1 },
_("Password (again)") => { val => \$sup->{password2}, hidden => 1 },
  $o->{installClass} eq "server" || $::expert ? (
_("Use shadow file") => { val => \$o->{authentication}{shadow}, type => 'bool', text => _("shadow") },
_("Use MD5 passwords") => { val => \$o->{authentication}{md5}, type => 'bool', text => _("MD5") },
  ) : (), $::beginner ? () : (
_("Use NIS") => { val => \$o->{authentication}{NIS}, type => 'bool', text => _("yellow pages") },
  )
			 ],
			 complete => sub {
			     $sup->{password} eq $sup->{password2} or $o->ask_warn('', [ _("The passwords do not match"), _("Please try again") ]), return (1,1);
			     length $sup->{password} < 2 * $o->{security}
			       and $o->ask_warn('', _("This password is too simple (must be at least %d characters long)", 2 * $o->{security})), return (1,0);
			     return 0
			 }
    ) or return;

    if ($o->{authentication}{NIS}) {
	$o->ask_from_entries_ref('',
				 _("Authentification NIS"),
				 [ _("NIS Domain"), _("NIS Server") ],
				 [ \ ($o->{netc}{NISDOMAIN} ||= $o->{netc}{DOMAINNAME}),
				   { val => \$o->{authentication}{NIS_server}, list => ["broadcast"] },
				 ]);
    }
    install_steps::setRootPassword($o);
}

#------------------------------------------------------------------------------
#-addUser
#------------------------------------------------------------------------------
sub addUser($) {
    my ($o, $clicked) = @_;
    my $u = $o->{user} ||= $o->{security} < 1 ? { name => "mandrake", realname => "default" } : {};
    $u->{password2} ||= $u->{password} ||= "";
    $u->{shell} ||= "/bin/bash";
    $u->{icon} ||= translate('default');
    my @fields = qw(realname name password password2);
    my @shells = install_any::shells($o);

    if ($o->{security} < 2 && !$clicked || $o->ask_from_entries_refH(
        [ _("Add user"), _("Accept user"), $o->{security} >= 4 && !@{$o->{users}} ? () : _("Done") ],
        _("Enter a user\n%s", $o->{users} ? _("(already added %s)", join(", ", map { $_->{realname} || $_->{name} } @{$o->{users}})) : ''),
        [ 
	 _("Real name") => \$u->{realname},
	 _("User name") => \$u->{name},
	   $o->{security} < 2 ? () : (
         _("Password") => {val => \$u->{password}, hidden => 1},
         _("Password (again)") => {val => \$u->{password2}, hidden => 1},
	   ), $::beginner ? () : (
         _("Shell") => {val => \$u->{shell}, list => \@shells, not_edit => !$::expert} 
	   ), $o->{security} > 3 || $::beginner ? () : (
	 _("Icon") => {val => \$u->{icon}, list => [ map { translate($_) } @any::users ], not_edit => 1 },
	   ),
        ],
        focus_out => sub {
	    if ($_[0] eq 0) {
		$u->{name} ||= lc first($u->{realname} =~ /((\w|-)+)/);
	    }
	},
        complete => sub {
	    $u->{password} eq $u->{password2} or $o->ask_warn('', [ _("The passwords do not match"), _("Please try again") ]), return (1,3);
	    $o->{security} > 3 && length($u->{password}) < 6 and $o->ask_warn('', _("This password is too simple")), return (1,2);
	    $u->{name} or $o->ask_warn('', _("Please give a user name")), return (1,0);
	    $u->{name} =~ /^[a-z0-9_-]+$/ or $o->ask_warn('', _("The user name must contain only lower cased letters, numbers, `-' and `_'")), return (1,0);
	    member($u->{name}, map { $_->{name} } @{$o->{users}}) and $o->ask_warn('', _("This user name is already added")), return (1,0);
	    $u->{icon} = untranslate($u->{icon}, @any::users);
	    return 0;
	},
    )) {
	push @{$o->{users}}, $o->{user};
	$o->{user} = {};
	goto &addUser unless $o->{security} < 2 && !$clicked; #- INFO_TO_DEL: bad security level may cause deadlocks...
    }
    install_steps::addUser($o);
}




#------------------------------------------------------------------------------
sub createBootdisk {
    my ($o, $first_time) = @_;
    my @l = detect_devices::floppies();
    my %l = (
	     'fd0'  => __("First floppy drive"),
	     'fd1'  => __("Second floppy drive"),
	     'Skip' => __("Skip"),
	    );
    $l{$_} ||= $_ foreach @l;

    if ($first_time || @l == 1) {
	$o->ask_yesorno('',
			_("A custom bootdisk provides a way of booting into your Linux system without
depending on the normal bootloader. This is useful if you don't want to install
LILO on your system, or another operating system removes LILO, or LILO doesn't
work with your hardware configuration. A custom bootdisk can also be used with
the Mandrake rescue image, making it much easier to recover from severe system
failures. Would you like to create a bootdisk for your system?"), 
			$o->{mkbootdisk}) or return $o->{mkbootdisk} = '';
	$o->{mkbootdisk} = $l[0] if !$o->{mkbootdisk} || $o->{mkbootdisk} eq "1";
    } else {
	@l or die _("Sorry, no floppy drive available");

	$o->{mkbootdisk} = ${{reverse %l}}{$o->ask_from_list_('',
							      _("Choose the floppy drive you want to use to make the bootdisk"),
							      [ @l{@l, "Skip"} ], $o->{mkbootdisk})};
	return $o->{mkbootdisk} = '' if $o->{mkbootdisk} eq 'Skip';
    }

    log::l(">>>> mkbootdisk $o->{mkbootdisk}, $l{$o->{mkbootdisk}}");
    $o->ask_warn('', _("Insert a floppy in drive %s", $l{$o->{mkbootdisk}}));
    my $w = $o->wait_message('', _("Creating bootdisk"));
    install_steps::createBootdisk($o);
}

#------------------------------------------------------------------------------
sub setupLILO {
    my ($o, $more) = @_;
    my $b = $o->{bootloader};

    $more++ if $b->{bootUnsafe};

    if ($::beginner && $more == 1) {
	my @l = (__("First sector of drive (MBR)"), __("First sector of boot partition"));

	$o->set_help('setupBootloaderBeginner');
	my $boot = $o->{hds}[0]{device};
	my $onmbr = "/dev/$boot" eq $b->{boot};
	$b->{boot} = "/dev/" . ($o->ask_from_list_(_("LILO Installation"),
					_("Where do you want to install the bootloader?"),
					\@l, $l[!$onmbr]) eq $l[0] 
					  ? $boot : fsedit::get_root($o->{fstab}, 'boot')->{device});
    } elsif ($more || !$::beginner) {
	$o->set_help("setupBootloaderGeneral");

	$::expert and $o->ask_yesorno('', _("Do you want to use LILO?"), 1) || return;

	my @l = (
_("Boot device") => { val => \$b->{boot}, list => [ map { "/dev/$_" } (map { $_->{device} } @{$o->{hds}}, @{$o->{fstab}}), detect_devices::floppies ], not_edit => !$::expert },
_("LBA (doesn't work on old BIOSes)") => { val => \$b->{lba32}, type => "bool", text => "lba" },
_("Compact") => { val => \$b->{compact}, type => "bool", text => _("compact") },
_("Delay before booting default image") => \$b->{timeout},
_("Video mode") => { val => \$b->{vga}, list => [ keys %lilo::vga_modes ], not_edit => $::beginner },
$o->{security} < 4 ? () : (
_("Password") => { val => \$b->{password}, hidden => 1 },
_("Password (again)") => { val => \$b->{password2}, hidden => 1 },
_("Restrict command line options") => { val => \$b->{restricted}, type => "bool", text => _("restrict") },
)
	);
	@l = @l[0..3] unless $::expert;

	$b->{vga} ||= 'Normal';
	$o->ask_from_entries_refH('', _("LILO main options"), \@l,
				 complete => sub {
#-				     $o->{security} > 4 && length($b->{password}) < 6 and $o->ask_warn('', _("At this level of security, a password (and a good one) in lilo is requested")), return 1;
				     $b->{restricted} && !$b->{password} and $o->ask_warn('', _("Option ``Restrict command line options'' is of no use without a password")), return 1;
				     $b->{password} eq $b->{password2} or !$b->{restricted} or $o->ask_warn('', [ _("The passwords do not match"), _("Please try again") ]), return 1;
				     0;
				 }
				) or return;
	$b->{vga} = $lilo::vga_modes{$b->{vga}} || $b->{vga};
    }

    until ($::beginner && $more <= 1) {
	$o->set_help('setupBootloaderAddEntry');
	my $c = $o->ask_from_list_([''], 
_("Here are the following entries in LILO.
You can add some more or change the existing ones."),
		[ (sort @{[map_each { "$::b->{label} ($::a)" . ($b->{default} eq $::b->{label} && "  *") } %{$b->{entries}}]}), __("Add"), __("Done") ],
	);
	$c eq "Done" and last;

	my ($e, $name);

	if ($c eq "Add") {
	    my @labels = map { $_->{label} } values %{$b->{entries}};
	    my $prefix;
	    if ($o->ask_from_list_('', _("Which type of entry do you want to add"), [ __("Linux"), __("Other OS (windows...)") ]) eq "Linux") {
		$e = { type => 'image' };
		$prefix = "linux";
	    } else {
		$e = { type => 'other' };
		$prefix = "windows";
	    }
	    $e->{label} = $prefix;
	    for (my $nb = 0; member($e->{label}, @labels); $nb++) { $e->{label} = "$prefix-$nb" }
	} else {
	    ($name) = $c =~ /\((.*?)\)/;
	    $e = $b->{entries}{$name};
	}
	my $old_name = $name;
	my %old_e = %$e;
	my $default = my $old_default = $e->{label} eq $b->{default};
	    
	my @l;
	if ($e->{type} eq "image") { 
	    @l = (
_("Image") => { val => \$name, list => [ eval { glob_("/boot/vmlinuz*") } ] },
_("Root") => { val => \$e->{root}, list => [ map { "/dev/$_->{device}" } @{$o->{fstab}} ], not_edit => !$::expert },
_("Append") => \$e->{append},
_("Initrd") => { val => \$e->{initrd}, list => [ eval { glob_("/boot/initrd*") } ] },
_("Read-write") => { val => \$e->{'read-write'}, type => 'bool' }
	    );
	    @l = @l[0..5] unless $::expert;
	} else {
	    @l = ( 
_("Root") => { val => \$name, list => [ map { "/dev/$_->{device}" } @{$o->{fstab}} ], not_edit => !$::expert },
_("Table") => { val => \$e->{table}, list => [ '', map { "/dev/$_->{device}" } @{$o->{hds}} ], not_edit => !$::expert },
_("Unsafe") => { val => \$e->{unsafe}, type => 'bool' }
	    );
	    @l = @l[0..1] unless $::expert;
	}
	@l = (
_("Label") => \$e->{label},
@l,
_("Default") => { val => \$default, type => 'bool' },
	);

	if ($o->ask_from_entries_refH($c eq "Add" ? '' : ['', _("Ok"), _("Remove entry")], 
	    '', \@l,
	    complete => sub {
		$e->{label} or $o->ask_warn('', _("Empty label not allowed")), return 1;
		member($e->{label}, map { $_->{label} } grep { $_ != $e } values %{$b->{entries}}) and $o->ask_warn('', _("This label is already in use")), return 1;
			    $name ne $old_name && $b->{entries}{$name} and $o->ask_warn('', _("A entry %s already exists", $name)), return 1;
			   }
		)) {
	    $b->{default} = $old_default || $default ? $default && $e->{label} : $b->{default};
	    
	    delete $b->{entries}{$old_name};
	    $b->{entries}{$name} = $e;
	} else {
	    delete $b->{entries}{$old_name};	    
	}
    }
    eval { $o->SUPER::setupBootloader };
    if ($@) {
	$o->ask_warn('', 
		     [ _("Installation of LILO failed. The following error occured:"),
		       grep { !/^Warning:/ } cat_("$o->{prefix}/tmp/.error") ]);
	unlink "$o->{prefix}/tmp/.error";
	die "already displayed";
    }
}

#------------------------------------------------------------------------------
sub setupSILO {
    my ($o, $more) = @_;
    my $b = $o->{bootloader};

    #- assume this default parameters.
    $b->{root} = "/dev/" . fsedit::get_root($o->{fstab})->{device};
    $b->{partition} = ($b->{root} =~ /\D*(\d*)/)[0] || '1';

    if ($::beginner && $more == 1) {
	#- nothing more to do here.
    } elsif ($more || !$::beginner) {
	$o->set_help("setupBootloaderGeneral");

	$::expert and $o->ask_yesorno('', _("Do you want to use SILO?"), 1) || return;

	my @l = (
_("Delay before booting default image") => \$b->{timeout},
$o->{security} < 4 ? () : (
_("Password") => { val => \$b->{password}, hidden => 1 },
_("Password (again)") => { val => \$b->{password2}, hidden => 1 },
_("Restrict command line options") => { val => \$b->{restricted}, type => "bool", text => _("restrict") },
)
	);

	$o->ask_from_entries_refH('', _("SILO main options"), \@l,
				 complete => sub {
#-				     $o->{security} > 4 && length($b->{password}) < 6 and $o->ask_warn('', _("At this level of security, a password (and a good one) in silo is requested")), return 1;
				     $b->{restricted} && !$b->{password} and $o->ask_warn('', _("Option ``Restrict command line options'' is of no use without a password")), return 1;
				     $b->{password} eq $b->{password2} or !$b->{restricted} or $o->ask_warn('', [ _("The passwords do not match"), _("Please try again") ]), return 1;
				     0;
				 }
				) or return;
    }

    until ($::beginner && $more <= 1) {
	$o->set_help('setupBootloaderAddEntry');
	my $c = $o->ask_from_list_([''], 
_("Here are the following entries in SILO.
You can add some more or change the existing ones."),
		[ (sort @{[map_each { "$::b->{label} ($::a)" . ($b->{default} eq $::b->{label} && "  *") } %{$b->{entries}}]}), __("Add"), __("Done") ],
	);
	$c eq "Done" and last;

	my ($e, $name);

	if ($c eq "Add") {
	    my @labels = map { $_->{label} } values %{$b->{entries}};
	    my $prefix;

	    $e = { type => 'image' };
	    $prefix = "linux";

	    $e->{label} = $prefix;
	    for (my $nb = 0; member($e->{label}, @labels); $nb++) { $e->{label} = "$prefix-$nb" }
	} else {
	    ($name) = $c =~ /\((.*?)\)/;
	    $e = $b->{entries}{$name};
	}
	my $old_name = $name;
	my %old_e = %$e;
	my $default = my $old_default = $e->{label} eq $b->{default};
	    
	my @l;
	if ($e->{type} eq "image") { 
	    @l = (
_("Image") => { val => \$name, list => [ eval { glob_("/boot/vmlinuz*") } ] },
_("Partition") => { val => \$e->{partition}, list => [ map { ("/dev/$_->{device}" =~ /\D*(\d*)/)[0] || 1} @{$o->{fstab}} ], not_edit => !$::expert },
_("Root") => { val => \$e->{root}, list => [ map { "/dev/$_->{device}" } @{$o->{fstab}} ], not_edit => !$::expert },
_("Append") => \$e->{append},
_("Initrd") => { val => \$e->{initrd}, list => [ eval { glob_("/boot/initrd*") } ] },
_("Read-write") => { val => \$e->{'read-write'}, type => 'bool' }
	    );
	    @l = @l[0..7] unless $::expert;
	} else {
	    die "Other SILO entries not supported at the moment";
	}
	@l = (
_("Label") => \$e->{label},
@l,
_("Default") => { val => \$default, type => 'bool' },
	);

	if ($o->ask_from_entries_refH($c eq "Add" ? '' : ['', _("Ok"), _("Remove entry")], 
	    '', \@l,
	    complete => sub {
		$e->{label} or $o->ask_warn('', _("Empty label not allowed")), return 1;
		member($e->{label}, map { $_->{label} } grep { $_ != $e } values %{$b->{entries}}) and $o->ask_warn('', _("This label is already in use")), return 1;
			    $name ne $old_name && $b->{entries}{$name} and $o->ask_warn('', _("A entry %s already exists", $name)), return 1;
			   }
		)) {
	    $b->{default} = $old_default || $default ? $default && $e->{label} : $b->{default};
	    
	    delete $b->{entries}{$old_name};
	    $b->{entries}{$name} = $e;
	} else {
	    delete $b->{entries}{$old_name};	    
	}
    }
    eval { $o->SUPER::setupBootloader };
    if ($@) {
	$o->ask_warn('', 
		     [ _("Installation of SILO failed. The following error occured:"),
		       grep { !/^Warning:/ } cat_("$o->{prefix}/tmp/.error") ]);
	unlink "$o->{prefix}/tmp/.error";
	die "already displayed";
    }
}

#------------------------------------------------------------------------------
sub setupBootloaderBefore {
    my ($o) = @_;
    my $w = $o->wait_message('', _("Preparing bootloader"));
    $o->SUPER::setupBootloaderBefore($o);
}

#------------------------------------------------------------------------------
sub setupBootloader {
    my ($o) = @_;
    if (arch() =~ /^alpha/) {
	$o->ask_yesorno('', _("Do you want to use aboot?"), 1) or return;
	$o->SUPER::setupBootloader;	
    } elsif (arch() =~ /^sparc/) {
	&setupSILO;
    } else {
	&setupLILO;
    }
}

#------------------------------------------------------------------------------
sub miscellaneousNetwork {
    my ($o, $clicked) = @_;
    my $u = $o->{miscellaneous} ||= {};

    $o->set_help('configureNetworkProxy');
    !$::beginner || $clicked and $o->ask_from_entries_ref('',
       _("Proxies configuration"),
       [ _("HTTP proxy"),
         _("FTP proxy"),
       ],
       [ \$u->{http_proxy},
         \$u->{ftp_proxy},
       ],
       complete => sub {
	   $u->{http_proxy} =~ m,^($|http://), or $o->ask_warn('', _("Proxy should be http://...")), return 1,3;
	   $u->{ftp_proxy} =~ m,^($|ftp://), or $o->ask_warn('', _("Proxy should be ftp://...")), return 1,4;
	   0;
       }
    ) || return;
}

#------------------------------------------------------------------------------
sub miscellaneous {
    my ($o, $clicked) = @_;
    my %l = (
	0 => _("Welcome To Crackers"),
	1 => _("Poor"),
	2 => _("Low"),
	3 => _("Medium"),
	4 => _("High"),
	5 => _("Paranoid"),
    );
    delete @l{0,1,5} unless $::expert;

    install_steps::miscellaneous($o);
    my $u = $o->{miscellaneous} ||= {};
    exists $u->{LAPTOP} or $u->{LAPTOP} = 1;
    my $s = $o->{security};

    add2hash_ $o, { useSupermount => $s < 4 };
    $s = $l{$s} || $s;

    !$::beginner || $clicked and $o->ask_from_entries_refH('',
	_("Miscellaneous questions"), [
_("Use hard drive optimisations?") => { val => \$u->{HDPARM}, type => 'bool', text => _("(may cause data corruption)") },
_("Choose security level") => { val => \$s, list => [ map { $l{$_} } ikeys %l ], not_edit => 1 },
_("Precise RAM size if needed (found %d MB)", availableRam / 1024 + 3) => \$u->{memsize}, #- add three for correction.
_("Removable media automounting") => { val => \$o->{useSupermount}, type => 'bool', text => 'supermount' },
     $::expert ? (
_("Clean /tmp at each boot") => { val => \$u->{CLEAN_TMP}, type => 'bool' },
     ) : (),
     $u->{numlock} ? (
_("Enable num lock at startup") => { val => \$u->{numlock}, type => 'bool' },
     ) : (),
     ], complete => sub {
	    !$u->{memsize} || $u->{memsize} =~ s/^(\d+)M?$/$1M/i or $o->ask_warn('', _("Give the ram size in Mb")), return 1;
	    my %m = reverse %l; $ENV{SECURE_LEVEL} = $o->{security} = $m{$s};
	    $o->{useSupermount} && $o->{security} > 3 and $o->ask_warn('', _("Can't use supermount in high security level")), return 1;
	    0;
	}
    ) || return;
}

#------------------------------------------------------------------------------
sub setupXfree {
    my ($o) = @_;
    $o->setupXfreeBefore;

    require Xconfig;
    require Xconfigurator;
    #- by default do not use existing configuration, so new card will be detected.
    if ($o->{isUpgrade} && -r "$o->{prefix}/etc/X11/XF86Config") {
	if ($::beginner || $o->ask_yesorno('', _("Use existing configuration for X11?"), 1)) {
	    Xconfig::getinfoFromXF86Config($o->{X}, $o->{prefix});
	}
    }
    #- strange, xfs must not be started twice...
    #- trying to stop and restart it does nothing good too...
    my $xfs_started if 0;
    run_program::rooted($o->{prefix}, "/etc/rc.d/init.d/xfs", "start") unless $xfs_started;
    $xfs_started = 1;

    { local $::testing = 0; #- unset testing
      local $::auto = $::beginner;
      local $::noauto = $::expert && !$o->ask_yesorno('', _("Try to find PCI devices?"), 1);
      $::noauto = $::noauto; #- no warning

      Xconfigurator::main($o->{prefix}, $o->{X}, $o, $o->{allowFB}, bool($o->{pcmcia}), sub {
	  install_any::pkg_install($o, "XFree86-$_[0]");
      });
    }
    $o->setupXfreeAfter;
}

#------------------------------------------------------------------------------
sub exitInstall {
    my ($o, $alldone) = @_;

    return $o->{step} = '' unless $alldone || $o->ask_yesorno('', 
_("Some steps are not completed.

Do you really want to quit now?"), 0);

    install_any::unlockCdrom;

    $o->ask_warn('',
_("Congratulations, installation is complete.
Remove the boot media and press return to reboot.

For information on fixes which are available for this release of Linux-Mandrake,
consult the Errata available from http://www.linux-mandrake.com/.

Information on configuring your system is available in the post
install chapter of the Official Linux-Mandrake User's Guide.")) if $alldone && !$::g_auto_install;

    $::global_wait = $o->wait_message('', _("Shutting down"));
}


#-######################################################################################
#- Misc Steps Functions
#-######################################################################################

#--------------------------------------------------------------------------------
sub wait_load_module {
    my ($o, $type, $text, $module) = @_;
    $o->wait_message('',
		     [ _("Installing driver for %s card %s", $type, $text),
		       $::beginner ? () : _("(module %s)", $module)
		     ]);
}


sub load_module {
    my ($o, $type) = @_;
    my @options;

    my $l = $o->ask_from_list('',
			      _("Which %s driver should I try?", $type),
			      [ modules::text_of_type($type) ]) or return;
    my $m = modules::text2driver($l);

    require modparm;
    my @names = modparm::get_options_name($m);

    if ((@names != 0) && $o->ask_from_list_('',
_("In some cases, the %s driver needs to have extra information to work
properly, although it normally works fine without. Would you like to specify
extra options for it or allow the driver to probe your machine for the
information it needs? Occasionally, probing will hang a computer, but it should
not cause any damage.", $l),
			      [ __("Autoprobe"), __("Specify options") ], "Autoprobe") ne "Autoprobe") {
      ASK:
	if (@names >= 0) {
	    my @l = $o->ask_from_entries('',
_("You may now provide its options to module %s.", $l),
					 \@names) or return;
	    @options = modparm::get_options_result($m, @l);
	} else {
	    @options = split ' ',
	      $o->ask_from_entry('',
_("You may now provide its options to module %s.
Options are in format ``name=value name2=value2 ...''.
For instance, ``io=0x300 irq=7''", $l),
				 _("Module options:"),
				);
	}
    }
    eval { 
	my $w = wait_load_module($o, $type, $l, $m);
	modules::load($m, $type, @options);
    };
    if ($@) {
	$o->ask_yesorno('',
_("Loading module %s failed.
Do you want to try again with other parameters?", $l), 1) or return;
	goto ASK;
    }
    $l, $m;
}

#------------------------------------------------------------------------------
sub load_thiskind {
    my ($o, $type) = @_;
    my $w; #- needed to make the wait_message stay alive
    my $pcmcia = $o->{pcmcia}
      unless !$::beginner && modules::pcmcia_need_config($o->{pcmcia}) && 
	     !$o->ask_yesorno('', _("Try to find PCMCIA cards?"), 1);
    $w = $o->wait_message(_("PCMCIA"), _("Configuring PCMCIA cards...")) if modules::pcmcia_need_config($pcmcia);

    if ($type =~ /scsi/i) {
	#- hey, we're allowed to pci probe :)   let's do a lot of probing!
	install_any::ultra66($o);

	require pci_probing::main;
	if (my ($c) = pci_probing::main::probe('AUDIO')) {
	    modules::add_alias("sound", $c->[1]) if pci_probing::main::check($c->[1]);
	}
    }
    modules::load_thiskind($type, sub { $w = wait_load_module($o, $type, @_) }, $pcmcia);
}

#------------------------------------------------------------------------------
sub setup_thiskind {
    my ($o, $type, $auto, $at_least_one) = @_;

    my @l;
    if (!$::expert || $o->ask_yesorno('', _("Try to find PCI devices?"), 1)) {
	eval { @l = $o->load_thiskind($type) };
	if ($@) {
	    $o->errorInStep($@);
	} else {
	    return if $auto && (@l || !$at_least_one);
	}
    }
    while (1) {
	my $msg = @l ?
	  [ _("Found %s %s interfaces", join(", ", map { $_->[0] } @l), $type),
	    _("Do you have another one?") ] :
	  _("Do you have any %s interface?", $type);

	my $opt = [ __("Yes"), __("No") ];
	push @$opt, __("See hardware info") if $::expert;
	my $r = "Yes";
	$r = $o->ask_from_list_('', $msg, $opt, "No") unless $at_least_one && @l == 0;
	if ($r eq "No") { return }
	elsif ($r eq "Yes") {
	    my @r = $o->load_module($type) or return;
	    push @l, \@r;
	} else {
	    #-eval { commands::modprobe("isapnp") };
	    require pci_probing::main;
	    $o->ask_warn('', [ pci_probing::main::list() ]); #-, scalar cat_("/proc/isapnp") ]);
	}
    }
}


#-######################################################################################
#- Wonderful perl :(
#-######################################################################################
1;
%s" #: ../urpm/signature.pm:62 #, c-format msgid "Invalid signature (%s)" msgstr "Semnătură incorectă (%s)" #: ../urpm/signature.pm:77 #, fuzzy, c-format msgid "SECURITY: The following package is _NOT_ signed (%s): %s" msgstr "Următoarele pachete conțin %s: %s" #: ../urpm/signature.pm:83 #, c-format msgid "SECURITY: NOT checking package \"%s\" (due to configuration)" msgstr "" #: ../urpm/signature.pm:102 #, c-format msgid "Invalid Key ID (%s)" msgstr "ID cheie invalid (%s)" #: ../urpm/signature.pm:104 #, c-format msgid "Missing signature (%s)" msgstr "Semnătură absentă (%s)" #: ../urpm/signature.pm:107 #, c-format msgid "SECURITY: Medium \"%s\" has no key (%s)!" msgstr "" #: ../urpm/signature.pm:109 #, c-format msgid "Medium without key (%s)" msgstr "" #: ../urpm/sys.pm:213 #, c-format msgid "system" msgstr "sistemul" #: ../urpm/sys.pm:250 #, c-format msgid "You should restart your computer for %s" msgstr "Trebuie să reporniți calculatorul pentru %s" #: ../urpm/sys.pm:252 #, c-format msgid "You should restart your session for %s" msgstr "Trebuie să reporniți sesiunea pentru %s" #: ../urpm/sys.pm:254 #, c-format msgid "You should restart %s for %s" msgstr "Trebuie să reporniți %s pentru %s" #: ../urpm/sys.pm:392 #, c-format msgid "Can't write file" msgstr "Nu se poate scrie fișierul" #: ../urpm/sys.pm:392 #, c-format msgid "Can't open file" msgstr "Nu se poate deschide fișierul" #: ../urpm/sys.pm:405 #, c-format msgid "Can't move file %s to %s" msgstr "Nu se poate muta fișierul %s la %s" #: ../urpme:43 #, c-format msgid " --auto - automatically select a package in choices.\n" msgstr " --auto - selectează automată un pachet printre opțiuni.\n" #: ../urpme:44 #, c-format msgid " --auto-orphans - remove orphans\n" msgstr " --auto-orphans - înlătură pachetele orfane\n" #: ../urpme:45 #, c-format msgid " --test - verify if the removal can be achieved correctly.\n" msgstr "" " --test - verifică dacă înlăturarea poate fi îndeplinită corect.\n" #: ../urpme:47 ../urpmi:104 ../urpmq:66 #, c-format msgid " --parallel - distributed urpmi across machines of alias.\n" msgstr " --parallel - urpmi distribuit între mașinile de alias.\n" #: ../urpme:48 #, c-format msgid " --root - use another root for rpm removal.\n" msgstr "" " --root - utilizează alt administrator pentru înlăturarea " "pachetelor.\n" #: ../urpme:49 ../urpmf:35 ../urpmi:106 ../urpmi.addmedia:73 #: ../urpmi.removemedia:45 ../urpmi.update:48 ../urpmq:68 #, c-format msgid " --urpmi-root - use another root for urpmi db & rpm installation.\n" msgstr "" " --urpmi-root - utilizează alt administrator pentru urpmi db și " "instalarea de pachete.\n" #: ../urpme:50 ../urpmi:96 #, c-format msgid " --justdb - update only the rpm db, not the filesystem.\n" msgstr "" " --justdb - se actualizează doar rpm db, nu și sistemul de fișiere.\n" #: ../urpme:51 #, c-format msgid " --noscripts - do not execute package scriptlet(s).\n" msgstr "" " --noscripts - nu se execută scripturile suplimentare ale pachetului.\n" #: ../urpme:52 #, 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 - configurează din mers urpme dintr-un arbore de " "distribuție, utilă\n" " pentru (dez)instalarea chroot cu opțiunea --root .\n" #: ../urpme:54 ../urpmi:148 ../urpmq:87 #, c-format msgid " --verbose, -v - verbose mode.\n" msgstr " --verbose , -v - mod detaliat.\n" #: ../urpme:55 #, c-format msgid " -a - select all packages matching expression.\n" msgstr "" " -a - selectează toate pachetele ce se potrivesc cu expresia.\n" #: ../urpme:70 #, c-format msgid "Only superuser is allowed to remove packages" msgstr "Doar administratorul poate înlătura pachete" #: ../urpme:103 #, c-format msgid "unknown packages" msgstr "pachete necunoscute " #: ../urpme:103 #, c-format msgid "unknown package" msgstr "pachet necunoscut " #: ../urpme:118 #, c-format msgid "Removing the following package will break your system:" msgid_plural "Removing the following packages will break your system:" msgstr[0] "Înlăturarea următorului pachet va corupe sistemul:" msgstr[1] "Înlăturarea următoarelor pachete va corupe sistemul:" msgstr[2] "Înlăturarea următoarelor pachete va corupe sistemul:" #: ../urpme:123 #, c-format msgid "Nothing to remove" msgstr "Nimic de înlăturat" #: ../urpme:140 #, c-format msgid "No orphans to remove" msgstr "Nu sînt pachete orfane de înlăturat" #: ../urpme:146 #, 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] "Pentru satisfacerea dependențelor, pachetul următor va fi înlăturat" msgstr[1] "" "Pentru satisfacerea dependențelor, următoarele pachete %d vor fi înlăturate" msgstr[2] "" "Pentru satisfacerea dependențelor, următoarele pachete %d vor fi înlăturate" #: ../urpme:151 #, c-format msgid "(orphan package)" msgid_plural "(orphan packages)" msgstr[0] "(pachet orfan)" msgstr[1] "(pachete orfane)" msgstr[2] "(pachete orfane)" #: ../urpme:158 #, c-format msgid "Remove %d package?" msgid_plural "Remove %d packages?" msgstr[0] "Se înlătură pachetul %d?" msgstr[1] "Se înlătură pachetele %d?" msgstr[2] "Se înlătură pachetele %d?" #: ../urpme:163 #, c-format msgid "testing removal of %s" msgstr "se testează înlăturarea lui %s" #: ../urpme:180 #, c-format msgid "Removal failed" msgstr "Înlăturare eșuată" #: ../urpme:182 #, c-format msgid "Removal is possible" msgstr "Înlăturarea este posibilă" #: ../urpmf:31 #, c-format msgid " --version - print this tool's version number.\n" msgstr " --version - afișează versiunea acestui utilitar.\n" #: ../urpmf:32 ../urpmi:128 ../urpmq:78 #, c-format msgid " --env - use specific environment (typically a bug report).\n" msgstr "" " --env - utilizează un mediu specificat (de obicei un raport de " "erori).\n" #: ../urpmf:33 ../urpmi:69 ../urpmq:45 #, c-format msgid " --excludemedia - do not use the given media, separated by comma.\n" msgstr "" " --excludemedia - nu utilizează mediile date, separate prin virgulă.\n" #: ../urpmf:34 #, c-format msgid "" " --literal, -l - don't match patterns, use argument as a literal string.\n" msgstr "" " --literal, -l - nu se potrivesc modelele, se utilizează argumentul ca șir " "literal.\n" #: ../urpmf:37 ../urpmi:72 ../urpmq:46 #, c-format msgid "" " --sortmedia - sort media according to substrings separated by comma.\n" msgstr "" " --sortmedia - sortează mediile conform subșirurilor separate prin " "virgulă.\n" #: ../urpmf:38 #, c-format msgid " --use-distrib - use the given path to access media\n" msgstr " --use-distrib - se utilizează calea indicată către mediu\n" #: ../urpmf:39 ../urpmi:73 ../urpmq:47 #, c-format msgid " --synthesis - use the given synthesis instead of urpmi db.\n" msgstr "" " --synthesis - utilizează fișierul synthesis dat în loc de urpmi db.\n" #: ../urpmf:40 #, c-format msgid " --uniq - do not print identical lines twice.\n" msgstr " --uniq - nu afișează liniile identice de două ori.\n" #: ../urpmf:41 ../urpmi:70 ../urpmq:42 #, c-format msgid " --update - use only update media.\n" msgstr " --update - utilizează numai mediile de actualizare.\n" #: ../urpmf:42 #, c-format msgid " --verbose - verbose mode.\n" msgstr " --verbose - mod detaliat.\n" #: ../urpmf:43 #, c-format msgid " -i - ignore case distinctions in patterns.\n" msgstr " -i - ignoră sensibilitatea la majuscule în modele.\n" #: ../urpmf:44 #, c-format msgid " -I - honor case distinctions in patterns (default).\n" msgstr "" " -I - respectă sensibilitatea la majuscule în modele " "(implicit).\n" #: ../urpmf:45 #, c-format msgid " -F<str> - change field separator (defaults to ':').\n" msgstr " -F<str> - schimbă cîmpul separator (implicit „:”).\n" #: ../urpmf:46 #, c-format msgid "Pattern expressions:\n" msgstr "Expresii regulate:\n" #: ../urpmf:47 #, c-format msgid " text - any text is parsed as a regexp, unless -l is used.\n" msgstr "" " text - orice text este analizat ca regexp, cu excepția utilizării " "lui -l.\n" #: ../urpmf:48 #, c-format msgid " -e - include perl code directly as perl -e.\n" msgstr " -e - include codul perl direct ca perl -e.\n" #: ../urpmf:49 #, c-format msgid " -a - binary AND operator.\n" msgstr " -a - operatorul binar ȘI.\n" #: ../urpmf:50 #, c-format msgid " -o - binary OR operator.\n" msgstr " -o - operatorul binar SAU.\n" #: ../urpmf:51 #, c-format msgid " ! - unary NOT.\n" msgstr " ! - negarea unară NU.\n" #: ../urpmf:52 #, c-format msgid " ( ) - left and right parentheses.\n" msgstr " ( ) - parantezele stînga și dreapta.\n" #: ../urpmf:53 #, c-format msgid "List of tags:\n" msgstr "Lista de etichete:\n" #: ../urpmf:54 #, c-format msgid " --qf - specify a printf-like output format\n" msgstr " --qf - se specifică un format de ieșire tip printf\n" #: ../urpmf:55 #, c-format msgid " example: '%%name:%%files'\n" msgstr " exemplu: „%%nume:%%fișiere”\n" #: ../urpmf:56 #, c-format msgid " --arch - architecture\n" msgstr " --arch - arhitectură\n" #: ../urpmf:57 #, c-format msgid " --buildhost - build host\n" msgstr " --buildhost - gazda pe care se compilează\n" #: ../urpmf:58 #, c-format msgid " --buildtime - build time\n" msgstr " --buildtime - data compilării\n" #: ../urpmf:59 #, c-format msgid " --conffiles - configuration files\n" msgstr " --conffiles - fișiere de configurare\n" #: ../urpmf:60 #, c-format msgid " --conflicts - conflict tags\n" msgstr " --conflicts - etichete de conflict\n" #: ../urpmf:61 #, c-format msgid " --description - package description\n" msgstr " --description - descrierea pachetului\n" #: ../urpmf:62 #, c-format msgid " --distribution - distribution\n" msgstr " --distribution - distribuție\n" #: ../urpmf:63 #, c-format msgid " --epoch - epoch\n" msgstr " --epoch - epocă\n" #: ../urpmf:64 #, c-format msgid " --filename - filename of the package\n" msgstr " --filename - denumirea fișierului pachetului\n" #: ../urpmf:65 #, c-format msgid " --files - list of files contained in the package\n" msgstr " --files - lista fișierelor conținute în pachet\n" #: ../urpmf:66 #, c-format msgid " --group - group\n" msgstr " --group - grup\n" #: ../urpmf:67 #, c-format msgid " --license - license\n" msgstr " --license - licență\n" #: ../urpmf:68 #, c-format msgid " --name - package name\n" msgstr " --name - numele pachetului\n" #: ../urpmf:69 #, c-format msgid " --obsoletes - obsoletes tags\n" msgstr " --obsoletes - listează toate fișierele învechite\n" #: ../urpmf:70 #, c-format msgid " --packager - packager\n" msgstr " --packager - creator\n" #: ../urpmf:71 #, c-format msgid " --provides - provides tags\n" msgstr " --provides - furnizează lista pachetelor\n" #: ../urpmf:72 #, c-format msgid " --requires - requires tags\n" msgstr " --requires - lista pachetelor necesare\n" #: ../urpmf:73 #, c-format msgid " --size - installed size\n" msgstr " --size - spațiul instalat ocupat\n" #: ../urpmf:74 #, c-format msgid " --sourcerpm - source rpm name\n" msgstr " --sourcerpm - numele pachetului sursă\n" #: ../urpmf:75 #, c-format msgid " --suggests - suggests tags\n" msgstr " --suggests - lista de sugestii\n" #: ../urpmf:76 #, c-format msgid " --summary - summary\n" msgstr " --summary - sumar\n" #: ../urpmf:77 #, c-format msgid " --url - url\n" msgstr " --url - URL\n" #: ../urpmf:78 #, c-format msgid " --vendor - vendor\n" msgstr " --vendor - fabricant\n" #: ../urpmf:79 #, c-format msgid " -m - the media in which the package was found\n" msgstr " -m - mediul în care a fost găsit pachetul\n" #: ../urpmf:80 ../urpmq:97 #, c-format msgid " -f - print version, release and arch with name.\n" msgstr "" " -f - afișează versiunea, ediția și arhitectura cu nume.\n" #: ../urpmf:148 #, c-format msgid "unterminated expression (%s)" msgstr "expresie nedeterminată (%s)" #: ../urpmf:193 #, c-format msgid "Incorrect format: you may use only one multi-valued tag" msgstr "" "Format incorect: puteți utiliza numai o singură etichetă cu valori multiple" #: ../urpmf:286 #, c-format msgid "no hdlist available for medium \"%s\"" msgstr "nu este disponibil un hdlist pentru mediul „%s”" #: ../urpmf:293 #, c-format msgid "no synthesis available for medium \"%s\"" msgstr "nu este disponibil un synthesis pentru mediul „%s”" #: ../urpmf:302 #, c-format msgid "no xml-info available for medium \"%s\"" msgstr "nu sînt disponibile informațiile XML pentru mediul „%s”" #: ../urpmi:76 #, c-format msgid " --auto-update - update media then upgrade the system.\n" msgstr " --auto-update - actualizează mediile, apoi actualizează sistemul.\n" #: ../urpmi:77 #, c-format msgid " --no-md5sum - disable MD5SUM file checking.\n" msgstr " --no-md5sum - dezactivează verificarea fișierelor cu MD5SUM.\n" #: ../urpmi:78 #, c-format msgid " --force-key - force update of gpg key.\n" msgstr " --force-key - forțează actualizarea cheii gpg.\n" #: ../urpmi:79 #, c-format msgid " --auto-orphans - remove orphans without asking\n" msgstr " --auto-orphans - înlătură pachetele orfane fără confirmare\n" #: ../urpmi:80 ../urpmq:52 #, c-format msgid " --no-suggests - do not auto select \"suggested\" packages.\n" msgstr " --no-suggests - nu se selectează automat pachetele „sugerate”.\n" #: ../urpmi:81 #, c-format msgid "" " --no-uninstall - never ask to uninstall a package, abort the " "installation.\n" msgstr "" " --no-uninstall - nu întreba pentru dezinstalarea unui pachet, abandonează " "instalarea.\n" #: ../urpmi:82 #, c-format msgid " --no-install - don't install packages (only download)\n" msgstr " --no-install - nu se instalează pachetele (se descarcă doar)\n" #: ../urpmi:83 ../urpmq:54 #, c-format msgid "" " --keep - keep existing packages if possible, reject requested\n" " packages that lead to removals.\n" msgstr "" " --keep - păstrează pachetele existente dacă este posibil, refuză\n" " pachetele cerute dacă duc la înlăturări.\n" #: ../urpmi:85 #, 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 - împarte în tranzacții mai mici dacă se vor instala\n" " sau actualiza mai multe pachete decît cele date,\n" " valoarea implicită este %d.\n" #: ../urpmi:89 #, c-format msgid " --split-length - small transaction length, default is %d.\n" msgstr "" " --split-length - lungimea tranzacțiilor mici, valoarea implicită este %d.\n" #: ../urpmi:91 #, c-format msgid " --fuzzy, -y - impose fuzzy search.\n" msgstr " --fuzzy, -y - impune căutarea aproximativă.\n" #: ../urpmi:92 #, c-format msgid " --buildrequires - install the buildrequires of the packages\n" msgstr " --buildrequires - instalează cerințele de compilare ale pachetelor\n" #: ../urpmi:93 #, c-format msgid " --install-src - install only source package (no binaries).\n" msgstr " --install-src - instalează numai pachetele sursă (fără binare).\n" #: ../urpmi:94 #, c-format msgid " --clean - remove rpm from cache before anything else.\n" msgstr "" " --clean - șterge pachetele din pretampon înainte de orice altceva.\n" #: ../urpmi:95 #, c-format msgid " --noclean - don't clean rpms from cache.\n" msgstr " --noclean - nu se șterg pachetele din pretampon.\n" #: ../urpmi:97 #, c-format msgid "" " --replacepkgs - force installing packages which are already installed.\n" msgstr " --replacepkgs - forțează reinstalarea pachetelor deja instalate.\n" #: ../urpmi:99 #, c-format msgid "" " --allow-nodeps - allow asking user to install packages without\n" " dependencies checking.\n" msgstr "" " --allow-nodeps - permite interogarea utilizatorului la instalarea " "pachetelor fără\n" " verificarea dependențelor\n" #: ../urpmi:101 #, c-format msgid "" " --allow-force - allow asking user to install packages without\n" " dependencies checking and integrity.\n" msgstr "" " --allow-force - permite interogarea utilizatorului pentru instalarea\n" " pachetelor fără verificarea dependențelor și a " "integrității.\n" #: ../urpmi:103 #, c-format msgid " --allow-suggests - auto select \"suggested\" packages.\n" msgstr " --allow-suggests - selectare automată a pachetelor „sugerate”.\n" #: ../urpmi:107 #, 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 - configurează din mers urpmi dintr-un arbore de " "distribuție, utilă\n" " pentru instalarea unui chroot cu opțiunea --root .\n" #: ../urpmi:109 ../urpmi.addmedia:60 ../urpmi.update:37 #, c-format msgid " --metalink - generate and use a local metalink.\n" msgstr " --metalink - generează și utilizează o metalegătură locală.\n" #: ../urpmi:110 #, c-format msgid "" " --download-all - download all needed packages before trying to install " "them\n" msgstr "" " --download-all - descarcă toate pachetele necesare înainte de a încerca " "instalarea lor\n" #: ../urpmi:111 #, c-format msgid "" " --downloader - program to use to retrieve distant files. \n" " known programs: %s\n" msgstr "" " --downloader - programul utilizat pentru descărcarea fișierelor " "distante. \n" " programe cunoscute: %s\n" #: ../urpmi:114 #, c-format msgid " --curl-options - additional options to pass to curl\n" msgstr " --curl-options - opțiuni adiționale de plasat lui curl\n" #: ../urpmi:115 #, c-format msgid " --rsync-options- additional options to pass to rsync\n" msgstr " --rsync-options- opțiuni adiționale de plasat lui rsync\n" #: ../urpmi:116 #, c-format msgid " --wget-options - additional options to pass to wget\n" msgstr " --wget-options - opțiuni adiționale de plasat lui wget\n" #: ../urpmi:117 #, c-format msgid " --prozilla-options - additional options to pass to prozilla\n" msgstr " --prozilla-options - opțiuni adiționale de plasat lui prozilla\n" #: ../urpmi:118 #, c-format msgid " --aria2-options - additional options to pass to aria2\n" msgstr " --aria2-options - opțiuni adiționale de plasat lui aria2\n" #: ../urpmi:119 ../urpmi.addmedia:61 ../urpmi.update:38 #, c-format msgid " --limit-rate - limit the download speed.\n" msgstr " --limit-rate - limitează viteza de descărcare.\n" #: ../urpmi:120 #, c-format msgid "" " --resume - resume transfer of partially-downloaded files\n" " (--no-resume disables it, default is disabled).\n" msgstr "" " --resume - reia transferul fișierelor descărcate parțial.\n" " (--no-resume o dezactivează, implicit este dezactivată).\n" #: ../urpmi:122 ../urpmi.addmedia:62 ../urpmi.update:39 ../urpmq:74 #, c-format msgid "" " --proxy - use specified HTTP proxy, the port number is assumed\n" " to be 1080 by default (format is <proxyhost[:port]>).\n" msgstr "" " --proxy - utilizează proxyul HTTP specificat, numărul portului este " "considerat a fi\n" " implicit 1080 (formatul este <gazdăproxy[:port]>).\n" #: ../urpmi:124 ../urpmi.addmedia:64 ../urpmi.update:41 ../urpmq:76 #, c-format msgid "" " --proxy-user - specify user and password to use for proxy\n" " authentication (format is <user:password>).\n" msgstr "" " --proxy-user - specificați utilizatorul și parola pentru autentificarea " "pe proxy\n" " (formatul este <utilizator:parolă>).\n" #: ../urpmi:126 #, c-format msgid "" " --bug - output a bug report in directory indicated by\n" " next arg.\n" msgstr "" " --bug - produce un raport de erori în directorul indicat de \n" " argumentul următor.\n" #: ../urpmi:132 #, c-format msgid " --excludepath - exclude path separated by comma.\n" msgstr " --excludepath - exclude calea separată prin virgulă.\n" #: ../urpmi:133 #, c-format msgid " --excludedocs - exclude doc files.\n" msgstr " --excludedocs - exclude fișierele de documentație.\n" #: ../urpmi:134 #, c-format msgid " --ignoresize - don't verify disk space before installation.\n" msgstr "" " --ignoresize - nu se verifică spațiul pe disc înaintea instalării.\n" #: ../urpmi:135 #, c-format msgid " --ignorearch - allow to install rpms for unmatched architectures.\n" msgstr "" " --ignorearch - permite instalarea pachetelor pentru o altă arhitectură.\n" #: ../urpmi:136 #, c-format msgid " --noscripts - do not execute package scriptlet(s)\n" msgstr "" " --noscripts - nu se execută scripturile suplimentare ale pachetului\n" #: ../urpmi:137 #, c-format msgid " --replacefiles - ignore file conflicts\n" msgstr " --replacefiles - ignoră conflictele de fișiere\n" #: ../urpmi:138 #, c-format msgid " --skip - packages which installation should be skipped\n" msgstr " --skip - pachete a căror instalare ar trebui omisă\n" #: ../urpmi:139 #, c-format msgid " --prefer - packages which should be preferred\n" msgstr " --prefer - pachete care ar trebui preferate\n" #: ../urpmi:140 #, c-format msgid "" " --more-choices - when several packages are found, propose more choices\n" " than the default.\n" msgstr "" " --more-choices - cînd sînt găsite mai multe pachete, se propun mai multe " "opțiuni\n" " decît în mod implicit.\n" #: ../urpmi:142 #, c-format msgid " --nolock - don't lock rpm db.\n" msgstr " --nolock - nu se blochează rpm db.\n" #: ../urpmi:143 #, c-format msgid " --strict-arch - upgrade only packages with the same architecture.\n" msgstr "" " --strict-arch - actualizează numai pachetele pentru aceeași arhitectură.\n" #: ../urpmi:144 ../urpmq:95 #, c-format msgid " -a - select all matches on command line.\n" msgstr "" " -a - selectează toate potrivirile din linia de comandă.\n" #: ../urpmi:147 #, c-format msgid " --quiet, -q - quiet mode.\n" msgstr " --quiet, -q - mod silențios.\n" #: ../urpmi:149 #, c-format msgid " --debug - very verbose mode.\n" msgstr " --debug - mod detaliat.\n" #: ../urpmi:150 #, c-format msgid " names or rpm files given on command line will be installed.\n" msgstr "" " numele sau fișierele rpm date în linia de comandă vor fi instalate.\n" #: ../urpmi:178 #, c-format msgid "Error: can't use --auto-select along with package list.\n" msgstr "" "Eroare: nu se poate utiliza --auto-select împreună cu lista de pachete.\n" #: ../urpmi:185 #, c-format msgid "" "Error: To generate a bug report, specify the usual command-line arguments\n" "along with --bug.\n" msgstr "" "Eroare: Pentru raportarea unei erori, specificați argumentele uzuale din " "consolă\n" "împreună cu --bug.\n" #: ../urpmi:215 #, c-format msgid "You can't install binary rpm files when using --install-src" msgstr "Nu se pot instala fișierele rpm binare cînd se folosește --install-src" #: ../urpmi:216 #, c-format msgid "You can't install spec files" msgstr "Nu puteți instala fișierele spec" #: ../urpmi:223 #, c-format msgid "defaulting to --buildrequires" msgstr "revenire implicită la --buildrequires" #: ../urpmi:228 #, c-format msgid "" "please use --buildrequires or --install-src, defaulting to --buildrequires" msgstr "" "utilizați --buildrequires sau --install-src, revenire implicită la --" "buildrequires" #: ../urpmi:248 #, c-format msgid "" "Directory [%s] already exists, please use another directory for bug report " "or delete it" msgstr "" "Directorul [%s] există deja, utilizați un alt director pentru raportarea " "erorilor sau ștergeți-l" #: ../urpmi:249 #, c-format msgid "Unable to create directory [%s] for bug report" msgstr "Nu se poate crea directorul [%s] pentru raportul de erori" #: ../urpmi:270 #, c-format msgid "" "Error: %s appears to be mounted read-only.\n" "Use --allow-force to force operation." msgstr "" "Eroare: %s pare să nu permită scrierea.\n" "Utilizați --allow-force pentru forțarea operației." #. -PO: here format is "<package_name>: <summary> (to upgrade)" #: ../urpmi:424 #, c-format msgid "%s: %s (to upgrade)" msgstr "%s: %s (de actualizat)" #. -PO: here format is "<package_name> (to upgrade)" #: ../urpmi:426 #, c-format msgid "%s (to upgrade)" msgstr "%s (de actualizat)" #. -PO: here format is "<package_name>: <summary> (to install)" #: ../urpmi:430 #, c-format msgid "%s: %s (to install)" msgstr "%s: %s (de instalat)" #. -PO: here format is "<package_name> (to install)" #: ../urpmi:432 #, c-format msgid "%s (to install)" msgstr "%s (de instalat)" #: ../urpmi:438 #, c-format msgid "" "In order to satisfy the '%s' dependency, one of the following packages is " "needed:" msgstr "" "Pentru satisfacerea dependențelor lui „%s”, unul din pachetele următoare " "este necesar: " #: ../urpmi:441 #, c-format msgid "What is your choice? (1-%d) " msgstr "Ce alegeți? (1-%d) " #: ../urpmi:483 #, 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 "" "Acest pachet nu s-a putut instala deoarece depinde de pachete\n" "mai vechi decît cele instalate:\n" "%s" #: ../urpmi:485 #, 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 "" "Aceste pachete nu s-au putut instala deoarece depind de pachete\n" "mai vechi decît cele instalate:\n" "%s" #: ../urpmi:491 ../urpmi:509 #, c-format msgid "" "\n" "Continue installation anyway?" msgstr "" "\n" "Continuați totuși instalarea?" #: ../urpmi:492 ../urpmi:510 ../urpmi:625 ../urpmi.addmedia:136 #, c-format msgid " (Y/n) " msgstr " (D/n) " #: ../urpmi:503 #, c-format msgid "" "A requested package cannot be installed:\n" "%s" msgstr "" "Un pachet cerut nu poate fi instalat:\n" "%s" #: ../urpmi:524 #, c-format msgid "removing package %s will break your system" msgstr "înlăturarea pachetului %s va corupe sistemul" #: ../urpmi:532 #, 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 "" "Instalarea nu poate continua deoarece următorul pachet\n" "trebuie înlăturat pentru ca celelalte să fie actualizate:\n" "%s\n" #: ../urpmi:534 #, 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 "" "Instalarea nu poate continua deoarece pachetele următoare\n" "trebuiesc înlăturate pentru ca celelalte să fie actualizate:\n" "%s\n" #: ../urpmi:542 #, c-format msgid "(test only, removal will not be actually done)" msgstr "(doar test, fără înlăturare de pachete)" #: ../urpmi:561 #, c-format msgid "" "You must first call urpmi with --buildrequires to install the following " "dependencies:\n" "%s\n" msgstr "" "Trebuie să rulați urpmi cu --buildrequires pentru instalarea următoarelor " "dependențe:\n" "%s\n" #: ../urpmi:571 #, c-format msgid "The following orphan package will be removed." msgid_plural "The following orphan packages will be removed." msgstr[0] "Următorul pachet orfan va fi înlăturat." msgstr[1] "Următoarele pachete orfane vor fi înlăturate." msgstr[2] "Următoarele pachete orfane vor fi înlăturate." #: ../urpmi:595 #, c-format msgid "WARNING: %s option is in use. Some strange problems may happen" msgstr "ATENȚIE: Opțiunea %s este activă. Se pot produce probleme ciudate" #: ../urpmi:607 #, c-format msgid "(test only, installation will not be actually done)" msgstr "(doar test, fără instalare de pachete)" #: ../urpmi:613 #, c-format msgid "%s of additional disk space will be used." msgstr "Vor fi utilizați %s adiționali din spațiul de pe disc." #: ../urpmi:614 #, c-format msgid "%s of disk space will be freed." msgstr "Vor fi eliberați %s din spațiul de pe disc." #: ../urpmi:615 #, c-format msgid "%s of packages will be retrieved." msgstr "%s de pachete vor fi preluați." #: ../urpmi:616 #, c-format msgid "Proceed with the installation of one package?" msgid_plural "Proceed with the installation of the %d packages?" msgstr[0] "Continuați cu instalarea pachetului?" msgstr[1] "Continuați cu instalarea celor %d pachete?" msgstr[2] "Continuați cu instalarea celor %d de pachete?" #: ../urpmi:638 #, c-format msgid "Press Enter when mounted..." msgstr "Apăsați „Enter” după montare..." #. -PO: The URI types strings 'file:', 'ftp:', 'http:', and 'cdrom:' must not be translated! #. -PO: neither the ``with''. Only what is between <brackets> can be translated. #: ../urpmi.addmedia:36 #, c-format msgid "" "usage: urpmi.addmedia [options] <name> <url>\n" "where <url> is one of\n" " [file:/]/<path>\n" " ftp://<login>:<password>@<host>/<path>\n" " ftp://<host>/<path>\n" " http://<host>/<path>\n" " cdrom://<path>\n" "\n" "usage: urpmi.addmedia [options] --distrib --mirrorlist <url>\n" "usage: urpmi.addmedia [options] --mirrorlist <url> <name> <relative path>\n" "\n" "examples:\n" "\n" " urpmi.addmedia --distrib --mirrorlist '$MIRRORLIST'\n" " urpmi.addmedia --mirrorlist '$MIRRORLIST' backports media/main/backports\n" " urpmi.addmedia --distrib --zeroconf\n" "\n" "\n" "and [options] are from\n" msgstr "" "utilizare: urpmi.addmedia [opțiuni] <nume> <url>\n" "unde <url> este una din\n" " [file:/]/<cale>\n" " ftp://<autentificare>:<parolă>@<gazdă>/<cale>\n" " ftp://<gazdă>/<cale>\n" " http://<gazdă>/<cale>\n" " cdrom://<cale>\n" "\n" "utilizare: urpmi.addmedia [opțiuni] --distrib --mirrorlist <url>\n" "utilizare: urpmi.addmedia [opțiuni] --mirrorlist <url> <nume> <cale " "relativă>\n" "\n" "exemple:\n" "\n" " urpmi.addmedia --distrib --mirrorlist '$MIRRORLIST'\n" " urpmi.addmedia --mirrorlist '$MIRRORLIST' backports media/main/backports\n" " urpmi.addmedia --distrib --zeroconf\n" "\n" "\n" "și [opțiunile] sînt din \n" #: ../urpmi.addmedia:56 ../urpmi.update:33 ../urpmq:71 #, c-format msgid " --wget - use wget to retrieve distant files.\n" msgstr "" " --wget - utilizează wget pentru preluarea fișierelor distante.\n" #: ../urpmi.addmedia:57 ../urpmi.update:34 ../urpmq:72 #, c-format msgid " --curl - use curl to retrieve distant files.\n" msgstr "" " --curl - utilizează curl pentru preluarea fișierelor distante.\n" #: ../urpmi.addmedia:58 ../urpmi.update:35 ../urpmq:73 #, c-format msgid " --prozilla - use prozilla to retrieve distant files.\n" msgstr "" " --prozilla - utilizează prozilla pentru preluarea fișierelor " "distante.\n" #: ../urpmi.addmedia:59 ../urpmi.update:36 #, c-format msgid " --aria2 - use aria2 to retrieve distant files.\n" msgstr "" " --aria2 - utilizează aria2 pentru preluarea fișierelor distante.\n" #: ../urpmi.addmedia:66 #, c-format msgid "" " --update - create an update medium, \n" " or discard non-update media (when used with --distrib)\n" msgstr "" " --update - creează un mediu de actualizare, \n" " sau anulează un mediu non-actualizare (cînd este utilizat " "cu --distrib)\n" #: ../urpmi.addmedia:68 #, 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 - alegeți metoda pentru descărcarea fișierelor xml\n" " una din: niciodată, la cerere, numai la actualizări, " "întotdeauna. cf urpmi.cfg(5)\n" #: ../urpmi.addmedia:70 #, c-format msgid " --probe-synthesis - use synthesis file.\n" msgstr " --probe-synthesis - utilizează fișierul synthesis.\n" #: ../urpmi.addmedia:71 #, c-format msgid " --probe-rpms - use rpm files (instead of synthesis).\n" msgstr " --probe-rpms - utilizează fișiere rpm (în loc de synthesis).\n" #: ../urpmi.addmedia:72 #, c-format msgid " --no-probe - do not try to find any synthesis file.\n" msgstr " -no-probe - nu se încearcă găsirea fișierului synthesis.\n" #: ../urpmi.addmedia:74 #, c-format msgid "" " --distrib - automatically create all media from an installation\n" " medium.\n" msgstr "" " --distrib - creează automat toate mediile de pe un mediu\n" " de instalare.\n" #: ../urpmi.addmedia:76 #, c-format msgid " --interactive - with --distrib, ask confirmation for each media\n" msgstr "" " --interactive - cu --distrib, se cere confirmarea pentru fiecare mediu\n" #: ../urpmi.addmedia:77 #, c-format msgid " --all-media - with --distrib, add every listed media\n" msgstr " --all-media - cu --distrib, se adaugă toate mediile listate\n" #: ../urpmi.addmedia:78 #, c-format msgid " --virtual - create virtual media wich are always up-to-date.\n" msgstr "" " --virtual - creează un mediu virtual ce este actualizat permanent.\n" #: ../urpmi.addmedia:79 ../urpmi.update:44 #, c-format msgid " --no-md5sum - disable MD5SUM file checking.\n" msgstr " --no-md5sum - dezactivează verificarea fișierelor cu MD5SUM.\n" #: ../urpmi.addmedia:80 #, c-format msgid " --nopubkey - don't import pubkey of added media\n" msgstr " --nopubkey - nu se importă cheia publică a mediului adăugat\n" #: ../urpmi.addmedia:81 #, c-format msgid " --raw - add the media in config, but don't update it.\n" msgstr "" " --raw - adaugă mediul în configurare, dar nu-l actualizează.\n" #: ../urpmi.addmedia:82 ../urpmi.removemedia:43 ../urpmi.update:53 #, c-format msgid " -q - quiet mode.\n" msgstr " -q - mod silențios.\n" #: ../urpmi.addmedia:83 ../urpmi.removemedia:44 ../urpmi.update:54 #, c-format msgid " -v - verbose mode.\n" msgstr " -v - mod detaliat.\n" #: ../urpmi.addmedia:96 #, c-format msgid "known xml-info policies are %s" msgstr "politicile xml-info cunoscute sînt %s " #: ../urpmi.addmedia:107 #, c-format msgid "no argument needed for --distrib --mirrorlist <url>" msgstr "nu sînt necesare argumente pentru --distrib --mirrorlist <url>" #: ../urpmi.addmedia:112 #, c-format msgid "bad <url> (for local directory, the path must be absolute)" msgstr "" "<url> greșit (pentru directoarele locale, calea trebuie să fie absolută)" #: ../urpmi.addmedia:116 #, c-format msgid "Only superuser is allowed to add media" msgstr "Doar administratorul poate adăuga un mediu" #: ../urpmi.addmedia:119 #, c-format msgid "creating config file [%s]" msgstr "se creează fișierul de configurare [%s]" #: ../urpmi.addmedia:120 #, c-format msgid "Can't create config file [%s]" msgstr "Nu se poate crea fișierul de configurare [%s]" #: ../urpmi.addmedia:128 #, c-format msgid "no need to give <relative path of synthesis> with --distrib" msgstr "nu este nevoie să dați <calea relativă pentru synthesis> cu --distrib" #: ../urpmi.addmedia:136 #, c-format msgid "" "\n" "Do you want to add media '%s'?" msgstr "" "\n" "Doriți să adăugați mediul „%s”?" #: ../urpmi.addmedia:156 ../urpmi.addmedia:181 #, c-format msgid "unable to add medium" msgstr "nu se poate adăuga mediul" #: ../urpmi.addmedia:164 #, c-format msgid "<relative path of synthesis> missing\n" msgstr "lipsește <calea relativă pentru synthesis>\n" #: ../urpmi.addmedia:167 #, c-format msgid "Can't use %s with remote medium" msgstr "Nu se poate utiliza %s cu mediul distant" #: ../urpmi.removemedia:38 #, c-format msgid "" "usage: urpmi.removemedia (-a | <name> ...)\n" "where <name> is a medium name to remove.\n" msgstr "" "Utilizare: urpmi.removemedia (-a | <nume>...)\n" "unde <nume> este numele mediului de înlăturat.\n" #: ../urpmi.removemedia:41 #, c-format msgid " -a - select all media.\n" msgstr " -a - selectează toate mediile.\n" #: ../urpmi.removemedia:42 #, c-format msgid " -y - fuzzy match on media names.\n" msgstr " -y - căutare aproximativă în numele mediilor.\n" #: ../urpmi.removemedia:59 #, c-format msgid "Only superuser is allowed to remove media" msgstr "Doar administratorul poate înlătura mediile" #: ../urpmi.removemedia:71 #, c-format msgid "nothing to remove (use urpmi.addmedia to add a media)\n" msgstr "" "nimic de înlăturat (folosiți urpmi.addmedia pentru a adăuga un mediu)\n" #: ../urpmi.removemedia:77 #, c-format msgid "" "the entry to remove is missing\n" "(one of %s)\n" msgstr "" "intrarea de înlăturat lipsește\n" "(una din %s)\n" #: ../urpmi.update:30 #, c-format msgid "" "usage: urpmi.update [options] <name> ...\n" "where <name> is a medium name to update.\n" msgstr "" "utilizare: urpmi.update [opțiuni] <nume>...\n" "unde <nume> este numele mediului de actualizat.\n" #: ../urpmi.update:43 #, c-format msgid " --update - update only update media.\n" msgstr " --update - actualizează numai mediile de actualizare.\n" #: ../urpmi.update:45 #, c-format msgid " --force-key - force update of gpg key.\n" msgstr " --force-key - forțează actualizarea cheii gpg.\n" #: ../urpmi.update:46 #, c-format msgid " --ignore - don't update, mark the media as ignored.\n" msgstr "" " --ignore - nu se actualizează, se marchează mediul ca fiind " "ignorat.\n" #: ../urpmi.update:47 #, c-format msgid " --no-ignore - don't update, mark the media as enabled.\n" msgstr " --no-ignore - fără actualizare, se marchează mediul ca activat.\n" #: ../urpmi.update:49 #, c-format msgid " --probe-rpms - do not use synthesis, use rpm files directly\n" msgstr "" " --probe-rpms - nu se utilizează synthesis, se utilizeză direct fișierele " "rpm\n" #: ../urpmi.update:50 #, c-format msgid " -a - select all enabled non-removable media.\n" msgstr " -a - selectează toate mediile non-amovibile activate.\n" #: ../urpmi.update:51 #, c-format msgid " -f - force updating synthesis\n" msgstr " -f - se forțează actualizarea lui synthesis\n" #: ../urpmi.update:52 #, c-format msgid " -ff - really force updating synthesis\n" msgstr " -ff - se forțează realmente actualizarea lui synthesis\n" #: ../urpmi.update:69 #, c-format msgid "Only superuser is allowed to update media" msgstr "Doar administratorul poate actualiza mediile" #: ../urpmi.update:86 #, c-format msgid "nothing to update (use urpmi.addmedia to add a media)\n" msgstr "" "nimic de actualizat (folosiți urpmi.addmedia pentru a adăuga un mediu)\n" #: ../urpmi.update:87 #, c-format msgid "" "the entry to update is missing\n" "(one of %s)\n" msgstr "" "intrarea de actualizat lipsește\n" "(una din %s)\n" #: ../urpmi.update:98 #, c-format msgid "\"%s\"" msgstr "„%s”" #: ../urpmi.update:99 #, c-format msgid "ignoring media %s" msgstr "se ignoră %s" #: ../urpmi.update:99 #, c-format msgid "enabling media %s" msgstr "se activează %s" #: ../urpmq:44 #, c-format msgid "" " --searchmedia - use only the given media to search requested (or updated) " "packages.\n" msgstr "" " --searchmedia - utilizează numai mediul indicat pentru căutarea " "pachetelor cerute (sau actualizate).\n" #: ../urpmq:49 #, c-format msgid " --auto-orphans - list orphans\n" msgstr " --auto-orphans - listează pachetele orfane\n" #: ../urpmq:50 #, c-format msgid "" " --not-available\n" " - list installed packages not available on any media.\n" msgstr "" " --not-available\n" " - listează pachetele instalate ce nu se găsesc pe nici un " "mediu.\n" #: ../urpmq:53 #, c-format msgid " --fuzzy - impose fuzzy search (same as -y).\n" msgstr "" " --fuzzy - impune căutarea aproximativă (identic cu -y).\n" #: ../urpmq:56 #, c-format msgid " --list - list available packages.\n" msgstr " --list - listează pachetele disponibile.\n" #: ../urpmq:57 #, c-format msgid " --list-media - list available media.\n" msgstr " --list-media - listează mediile disponibile.\n" #: ../urpmq:58 #, c-format msgid " --list-url - list available media and their url.\n" msgstr " --list-url - listează mediile disponibile și adresele lor URL.\n" #: ../urpmq:59 #, c-format msgid " --list-nodes - list available nodes when using --parallel.\n" msgstr "" " --list-nodes - listează nodurile disponibile cînd se utilizează --" "parallel.\n" #: ../urpmq:60 #, c-format msgid " --list-aliases - list available parallel aliases.\n" msgstr " --list-aliases - listează aliasurile paralele disponibile.\n" #: ../urpmq:61 #, c-format msgid "" " --dump-config - dump the config in form of urpmi.addmedia argument.\n" msgstr "" " --dump-config - afișează configurarea in formatul argumentului urpmi." "addmedia.\n" #: ../urpmq:62 #, c-format msgid " --src - next package is a source package (same as -s).\n" msgstr "" " --src - pachetul următor este un pachet sursă (identic cu -s).\n" #: ../urpmq:63 #, c-format msgid " --sources - print source URLs of selected packages\n" msgstr "" " --sources - afișează adresele URL sursă ale pachetului selectat.\n" #: ../urpmq:65 #, c-format msgid " --ignorearch - allow to query rpms for unmatched architectures.\n" msgstr "" " --ignorearch - permite căutarea pachetelor pentru arhitecturile " "necorespunzătoare.\n" #: ../urpmq:69 #, 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 - configurează din mers urpmi dintr-un arbore de " "distribuție.\n" " Aceasta permite interogarea unei distribuții.\n" #: ../urpmq:79 #, c-format msgid " --changelog - print changelog.\n" msgstr " --changelog - afișează jurnalul modificărilor\n" #: ../urpmq:80 #, c-format msgid " --conflicts - print conflicts.\n" msgstr " --conflicts - afișează conflictele.\n" #: ../urpmq:81 #, c-format msgid " --obsoletes - print obsoletes.\n" msgstr " --obsoletes - afișează pachetele învechite.\n" #: ../urpmq:82 #, c-format msgid " --provides - print provides.\n" msgstr " --provides - afișează furnizorii de pachete.\n" #: ../urpmq:83 #, c-format msgid " --requires - print requires.\n" msgstr " --requires - afișează pachetele necesare.\n" #: ../urpmq:84 #, c-format msgid " --suggests - print suggests.\n" msgstr " --suggests - afișează pachetele sugerate.\n" #: ../urpmq:85 #, c-format msgid " --sourcerpm - print sourcerpm.\n" msgstr " --sourcerpm - afișează numele pachetului sursă.\n" #: ../urpmq:86 #, c-format msgid " --summary, -S - print summary.\n" msgstr " --summary, -S - afișează sumarul.\n" #: ../urpmq:88 #, c-format msgid "" " --requires-recursive, -d\n" " - query package dependencies.\n" msgstr "" " --requires-recursive, -d\n" " - interoghează dependențele pachetelor.\n" #: ../urpmq:90 #, c-format msgid " --whatrequires - reverse search to what requires package.\n" msgstr "" " --whatrequires - căutare inversă în lista de dependențe a pachetului.\n" #: ../urpmq:91 #, c-format msgid "" " --whatrequires-recursive\n" " - extended reverse search (includes virtual packages).\n" msgstr "" " --whatrequires-recursive\n" " - căutare inversă extinsă (include pachetele virtuale).\n" #: ../urpmq:93 #, c-format msgid "" " --whatprovides, -p\n" " - search in provides to find package.\n" msgstr "" " --whatprovides, -p\n" " - caută în furnizorii de pachete pentru găsirea " "pachetului.\n" #: ../urpmq:96 #, c-format msgid " -c - complete output with package to be removed.\n" msgstr "" " -c - afișare în linia de comandă a pachetelor ce vor fi " "înlăturate.\n" #: ../urpmq:98 #, c-format msgid " -g - print groups with name also.\n" msgstr " -g - afișează grupurile și cu nume.\n" #: ../urpmq:99 #, c-format msgid " -i - print useful information in human readable form.\n" msgstr " -i - afișează informațiile utile într-un mod uman.\n" #: ../urpmq:100 #, c-format msgid " -l - list files in package.\n" msgstr " -l - listează fișierele din pachet.\n" #: ../urpmq:101 #, c-format msgid " -m - equivalent to -du\n" msgstr " -m - echivalent cu -du\n" #: ../urpmq:102 #, c-format msgid " -r - print version and release with name also.\n" msgstr " -r - afișează versiunea și ediția și cu nume.\n" #: ../urpmq:103 #, c-format msgid " -s - next package is a source package (same as --src).\n" msgstr "" " -s - pachetul următor este un pachet sursă (identic cu -src).\n" #: ../urpmq:104 #, c-format msgid "" " -u - remove package if a more recent version is already " "installed.\n" msgstr "" " -u - înlătură pachetul dacă o versiune mai recentă este deja " "instalată.\n" #: ../urpmq:105 #, c-format msgid " -y - impose fuzzy search (same as --fuzzy).\n" msgstr "" " -y - impune căutarea aproximativă (identic cu --fuzzy).\n" #: ../urpmq:106 #, c-format msgid " -Y - like -y, but forces to match case-insensitively.\n" msgstr " -Y - ca și -y, dar insensibil la majuscule.\n" #: ../urpmq:107 #, c-format msgid " names or rpm files given on command line are queried.\n" msgstr " numele sau fișierele rpm date în linia de comandă sînt interogate.\n" #: ../urpmq:154 #, c-format msgid "usage: \"urpmq --auto-orphans\" with no argument" msgstr "utilizare: „urpmq --auto-orphans” fără argumente" #: ../urpmq:207 #, c-format msgid "--list-nodes can only be used with --parallel" msgstr "--list-nodes poate fi folosit numai cu --parallel" #: ../urpmq:231 #, c-format msgid "use -l to list files" msgstr "utilizați -l pentru afișarea fișierelor" #: ../urpmq:415 #, c-format msgid "no xml info for medium \"%s\", only partial result for package %s" msgstr "" "nu sînt informații XML pentru mediul „%s”, numai rezultate parțiale pentru " "pachetul %s" #: ../urpmq:416 #, c-format msgid "no xml info for medium \"%s\", only partial result for packages %s" msgstr "" "nu sînt informații XML pentru mediul „%s”, numai rezultate parțiale pentru " "pachetele %s" #: ../urpmq:419 #, c-format msgid "" "no xml info for medium \"%s\", unable to return any result for package %s" msgstr "" "nu sînt informații XML pentru mediul „%s”, nu se poate întoarce nici un " "rezultat pentru pachetul %s" #: ../urpmq:420 #, c-format msgid "" "no xml info for medium \"%s\", unable to return any result for packages %s" msgstr "" "nu sînt informații XML pentru mediul „%s”, nu se poate întoarce nici un " "rezultat pentru pachetele %s" #: ../urpmq:487 #, c-format msgid "No changelog found\n" msgstr "Nu s-a gasit jurnalul de modificări\n" #: ../gurpmi.desktop.in.h:1 msgid "Software Installer" msgstr "Instalator de programe" #: ../gurpmi.desktop.in.h:2 msgid "Graphical front end to install RPM files" msgstr "Interfața grafică pentru instalarea fișierelor RPM" #~ msgid "curl failed: upload canceled\n" #~ msgstr "curl a eșuat: încărcare anulată\n" #~ msgid " --repackage - Re-package the files before erasing\n" #~ msgstr " --repackage - reîmpachetează fișierele înaintea ștergerii\n" #~ msgid " --checkpoint - set repackaging start now\n" #~ msgstr "" #~ " --checkpoint - stabilirea punctului începerii acum a reîmpachetării \n" #~ msgid " --noclean - don't clean repackage directory on checkpoint\n" #~ msgstr "" #~ " --noclean - nu se curăță directorul de reîmpachetare la marcaj\n" #~ msgid "" #~ " --list - list transactions since provided date/duration " #~ "argument\n" #~ msgstr "" #~ " --list - afișați tranzacțiile corespunzătoare parametrului dată/" #~ "durată\n" #~ msgid " --list-all - list all transactions in rpmdb (long)\n" #~ msgstr "" #~ " --list-all - afișarea tuturor tranzacțiilor din rpmdb (lungă)\n" #~ msgid " --list-safe - list transactions since checkpoint\n" #~ msgstr " --list-safe - afișarea tranzacțiilor de la marcaj\n" #~ msgid "" #~ " --rollback - rollback until specified date,\n" #~ " or rollback the specified number of transactions\n" #~ msgstr "" #~ " --rollback - revenire pînă la data specificată,\n" #~ " sau revenire cu un număr specificat de tranzacții\n" #~ msgid " --disable - turn off repackaging\n" #~ msgstr " --disable - dezactivare reîmpachetare\n" #~ msgid "Invalid date or duration [%s]\n" #~ msgstr "Dată sau durată nevalide [%s]\n" #~ msgid "Repackage directory not defined\n" #~ msgstr "Directorul de reîmpachetare nu este definit\n" #~ msgid "Can't write to repackage directory [%s]\n" #~ msgstr "Nu se poate scrie în directorul de reîmpachetare [%s]\n" #~ msgid "Cleaning up repackage directory [%s]...\n" #~ msgstr "Se curăță directorul de reîmpachetare [%s]...\n" #~ msgid "%d file removed\n" #~ msgid_plural "%d files removed\n" #~ msgstr[0] "fișierul %d este șters\n" #~ msgstr[1] "fișierele %d sînt șterse\n" #~ msgstr[2] "fișierele %d sînt șterse\n" #~ msgid "Spurious command-line arguments [%s]\n" #~ msgstr "Argumente linie comandă incorecte [%s]\n" #~ msgid "You can't specify --checkpoint and --rollback at the same time\n" #~ msgstr "Nu puteți specifica --checkpoint și --rollback simultan\n" #~ msgid "You can't specify --checkpoint and --list at the same time\n" #~ msgstr "Nu puteți specifica --checkpoint și --list simultan\n" #~ msgid "You can't specify --rollback and --list at the same time\n" #~ msgstr "Nu puteți specifica --rollback și --list simultan\n" #~ msgid "You can't specify --disable along with another option" #~ msgstr "Nu puteți specifica --disable cu o altă opțiune" #~ msgid "No transaction found since %s\n" #~ msgstr "Nu sînt tranzacții începînd cu %s\n" #~ msgid "You must be superuser to do this" #~ msgstr "Trebuie să fiți admistrator pentru această operație" #~ msgid "Writing rpm macros file [%s]...\n" #~ msgstr "Scriere fișier script rpm [%s]...\n" #~ msgid "No rollback date found\n" #~ msgstr "Nu s-a găsit data restaurării\n" #~ msgid "Rollback until %s...\n" #~ msgstr "Restaurare pînă la %s...\n" #~ msgid "Disabling repackaging\n" #~ msgstr "Reîmpachetare dezactivată\n" #~ msgid "" #~ "urpme version %s\n" #~ "%s\n" #~ "This is free software and may be redistributed under the terms of the GNU " #~ "GPL.\n" #~ "\n" #~ "usage:\n" #~ msgstr "" #~ "urpme versiunea %s\n" #~ "%s\n" #~ "Acesta este un program liber și poate fi redistribuit sub termenii " #~ "licenței GNU GPL.\n" #~ "\n" #~ "utilizare:\n" #~ msgid "" #~ "urpmf version %s\n" #~ "%s\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 versiunea %s\n" #~ "%s\n" #~ "Acesta este un program liber și poate fi redistribuit în termenii " #~ "licenței GNU GPL.\n" #~ "\n" #~ "utilizare: urpmf [opțiuni] model-expresie\n" #~ msgid "" #~ "urpmi.recover version %s\n" #~ "%s\n" #~ "This is free software and may be redistributed under the terms of the GNU " #~ "GPL.\n" #~ "\n" #~ "usage:\n" #~ msgstr "" #~ "urpmi.recover versiunea %s\n" #~ "%s\n" #~ "Acesta este un program liber și poate fi redistribuit sub termenii " #~ "licenței GNU GPL.\n" #~ "\n" #~ "utilizare:\n" #~ msgid "" #~ "urpmq version %s\n" #~ "%s\n" #~ "This is free software and may be redistributed under the terms of the GNU " #~ "GPL.\n" #~ "\n" #~ "usage:\n" #~ msgstr "" #~ "urpmq versiunea %s\n" #~ "%s\n" #~ "Acesta este un program liber și poate fi redistribuit sub termenii " #~ "licenței GNU GPL.\n" #~ "\n" #~ "utilizare:\n" #~ msgid "" #~ "Installation failed, some files are missing:\n" #~ "%s\n" #~ "You may want to update your urpmi database" #~ msgstr "" #~ "Instalare eșuată, lipsesc cîteva fișiere.\n" #~ "%s\n" #~ "Probabil ar trebui să actualizați baza de date urpmi" #~ msgid "Cancel" #~ msgstr "Anulează" #, fuzzy #~ msgid "" #~ "# Here are logs of your DUDF uploads.\n" #~ "# Line format is : <date time of generation> <uid>\n" #~ "# You can use uids to see the content of your uploads at this url :\n" #~ "# %s" #~ msgstr "" #~ "# Aici vă sînt jurnalele încărcărilor DUDF.\n" #~ "# Formatul liniei este : <data generării> <uid>\n" #~ "# Puteți folosi UID-ul să vizualizați încărcările voastre la adresa URL:\n" #~ "# http://dudf.forge.mandriva.com/" #~ msgid "curl is missing, cannot upload DUDF file.\n" #~ msgstr "curl lipsește, nu se poate încărca fișierul DUDF.\n" #~ msgid "Compressing DUDF data... " #~ msgstr "Se compresează datele DUDF..." #~ msgid "NOT OK\n" #~ msgstr "EROARE\n" #~ msgid "OK\n" #~ msgstr "OK\n" #~ msgid "Uploading DUDF data:\n" #~ msgstr "Se încarcă datele DUDF:\n" #~ msgid "" #~ "\n" #~ "You can see your DUDF report at the following URL :\n" #~ "\t" #~ msgstr "" #~ "\n" #~ "Vă puteți consulta raportul DUDF la următoarea adresă URL:\n" #~ "\t" #~ msgid "" #~ "You can access a log of your uploads in\n" #~ "\t" #~ msgstr "" #~ "Vă puteți accesa jurnalul încărcărilor în\n" #~ "\t" #~ msgid "" #~ "A problem has been encountered. You can help Mandriva to improve package\n" #~ "installation by uploading a DUDF report file.\n" #~ "This is a part of the Mancoosi european research project.\n" #~ "More at http://www.mancoosi.org\n" #~ msgstr "" #~ "S-a întîlnit o problemă. Puteți ajuta Mandriva să-și amelioreze " #~ "instalarea\n" #~ "pachetelor prin trimiterea unui fișier de raport DUDF.\n" #~ "Aceasta este o parte din proiectul european de cercetare Mancoosi.\n" #~ "Mai multe la http://www.mancoosi.org\n" #~ msgid "Do you want to upload a DUDF report to Mandriva?" #~ msgstr "Doriți să trimiteți un raport DUDF la Mandriva?" #~ msgid "" #~ "\n" #~ "Generating DUDF... " #~ msgstr "" #~ "\n" #~ "Generare DUDF..." #~ msgid "Cannot write DUDF file.\n" #~ msgstr "Nu se poate crea fișierul DUDF.\n" #~ msgid "" #~ " --sources - give all source packages before downloading (root " #~ "only).\n" #~ msgstr "" #~ " --sources - dă toate pachetele sursă înainte de descărcare (doar " #~ "administrator).\n" #~ msgid "due to already installed %s" #~ msgstr "%s este deja instalat" #~ msgid "" #~ " --from - use specified url for list of mirrors, the default is\n" #~ " %s\n" #~ msgstr "" #~ " --from - folosește adresa URL specificată pentru lista " #~ "serverelor alternative, implicit este \n" #~ " %s\n"