summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--urpm.pm2
-rwxr-xr-xurpmi84
-rw-r--r--urpmi.spec9
3 files changed, 68 insertions, 27 deletions
diff --git a/urpm.pm b/urpm.pm
index fecec1e6..8f882ba4 100644
--- a/urpm.pm
+++ b/urpm.pm
@@ -332,7 +332,7 @@ sub read_config {
/^update\s*$/ and $medium->{update} = 1, next;
/^ignore\s*$/ and $medium->{ignore} = 1, next;
/^synthesis\s*$/ and $medium->{synthesis} = 1, next;
- /^modified\s*$/ and $medium->{modified} = 1, next;
+ /^modified\s*$/ and next; # IGNORED TO AVOID EXCESIVE REMOVE $medium->{modified} = 1, next;
$_ eq '}' and last;
$_ and $urpm->{error}(_("syntax error in config file at line %s", $.));
}
diff --git a/urpmi b/urpmi
index 76a4dd38..e621dd7a 100755
--- a/urpmi
+++ b/urpmi
@@ -31,7 +31,6 @@ my $auto_select = 0;
my $force = 0;
my $allow_nodeps = 0;
my $allow_force = 0;
-my $force = 0;
my $sync = undef;
my $X = 0;
my $WID = 0;
@@ -46,6 +45,7 @@ my $root = '';
my $bug = '';
my $env = '';
my $log = '';
+my $verify_rpm = '';
my $uid;
my @files;
@@ -87,6 +87,7 @@ usage:
") . _(" --X - use X interface.
") . _(" --best-output - choose best interface according to the environment:
X or text mode.
+") . _(" --verify-rpm - verify rpm signature before installation.
") . _(" -a - select all matches on command line.
") . _(" -p - allow search in provides to find package.
") . _(" -P - do not search in provides to find package.
@@ -141,6 +142,7 @@ while (defined($_ = shift @ARGV)) {
/^--WID$/ and do { push @nextargv, \$WID; next };
/^--best-output$/ and do { $X ||= $ENV{DISPLAY} && -x "/usr/sbin/grpmi" && system('/usr/X11R6/bin/xtest', '') == 0;
next };
+ /^--verify-rpm$/ and do { $verify_rpm = 1; next };
/^--comment$/ and do { push @nextargv, undef; next };
/^--root$/ and do { push @nextargv, \$root; next };
/^-(.*)$/ and do { foreach (split //, $1) {
@@ -366,32 +368,36 @@ sub ask_choice {
}
if (%{$state->{ask_unselect} || {}}) {
- my $list = join "\n", map { scalar $urpm->{depslist}[$_]->fullname } keys %{$state->{ask_unselect}};
- my $msg = _("Some package requested cannot be installed:\n%s\ndo you agree ?", $list);
- if ($X) {
- my $ok = _("Ok");
- my $cancel = _("Cancel");
- `gmessage -default $ok -buttons "$ok:0,$cancel:2" "$msg"`;
- $? and exit 0;
- } else {
- $noexpr = _("Nn");
- $yesexpr = _("Yy");
- message_input($msg . _(" (Y/n) ")) =~ /[$noexpr]/ and exit 0;
- delete @{$state->{selected}}{keys %{$state->{ask_unselect}}};
+ unless ($auto) {
+ my $list = join "\n", map { scalar $urpm->{depslist}[$_]->fullname } keys %{$state->{ask_unselect}};
+ my $msg = _("Some package requested cannot be installed:\n%s\ndo you agree ?", $list);
+ if ($X) {
+ my $ok = _("Ok");
+ my $cancel = _("Cancel");
+ `gmessage -default $ok -buttons "$ok:0,$cancel:2" "$msg"`;
+ $? and exit 0;
+ } else {
+ $noexpr = _("Nn");
+ $yesexpr = _("Yy");
+ message_input($msg . _(" (Y/n) ")) =~ /[$noexpr]/ and exit 0;
+ }
}
+ delete @{$state->{selected}}{keys %{$state->{ask_unselect}}};
}
if (%{$state->{ask_remove} || {}}) {
- my $list = join "\n", sort { $a cmp $b } keys %{$state->{ask_remove}};
- my $msg = _("The following packages have to be removed for others to be upgraded:\n%s\ndo you agree ?", $list);
- if ($X) {
- my $ok = _("Ok");
- my $cancel = _("Cancel");
- `gmessage -default $ok -buttons "$ok:0,$cancel:2" "$msg"`;
- $? and exit 0;
- } else {
- $noexpr = _("Nn");
- $yesexpr = _("Yy");
- message_input($msg . _(" (Y/n) ")) =~ /[$noexpr]/ and exit 0;
+ unless ($auto) {
+ my $list = join "\n", sort { $a cmp $b } keys %{$state->{ask_remove}};
+ my $msg = _("The following packages have to be removed for others to be upgraded:\n%s\ndo you agree ?", $list);
+ if ($X) {
+ my $ok = _("Ok");
+ my $cancel = _("Cancel");
+ `gmessage -default $ok -buttons "$ok:0,$cancel:2" "$msg"`;
+ $? and exit 0;
+ } else {
+ $noexpr = _("Nn");
+ $yesexpr = _("Yy");
+ message_input($msg . _(" (Y/n) ")) =~ /[$noexpr]/ and exit 0;
+ }
}
}
@@ -471,8 +477,36 @@ my %sources = $urpm->download_source_packages($local_sources, $list, ($X ? '' :
});
my %sources_install = %{$urpm->extract_packages_to_install(\%sources) || {}};
-
if (%sources_install || %sources) {
+ if ($verify_rpm) {
+ my @invalid_sources;
+
+ foreach (values %sources_install, values %sources) {
+ URPM::verify_rpm($_) =~ /NOT OK/ and push @invalid_sources, $_;
+ }
+
+ if (@invalid_sources) {
+ my $msg = _("The following packages have bad signatures");
+ my $msg2 = _("Do you want to continue installation ?");
+ my $p = join "\n", @invalid_sources;
+ if ($auto) {
+ message("$msg:\n$p\n", 'noX');
+ exit 1;
+ } else {
+ if ($X) {
+ my $ok = _("Ok");
+ my $cancel = _("Cancel");
+ `gmessage -default $cancel -buttons "$ok:0,$cancel:2" "$msg:\n$p\n\n$msg2"`;
+ $? and exit 1;
+ } else {
+ $noexpr = _("Nn");
+ $yesexpr = _("Yy");
+ message_input("$msg:\n$p\n$msg2" . _(" (y/N) ")) =~ /[$yesexpr]/ or exit 1;
+ }
+ }
+ }
+ }
+
message(_("installing %s\n", join(' ', values %sources_install, values %sources)));
log_it(scalar localtime, " ", join(' ', values %sources_install, values %sources), "\n");
#- check for local files.
diff --git a/urpmi.spec b/urpmi.spec
index f6c707cf..c66e6f9c 100644
--- a/urpmi.spec
+++ b/urpmi.spec
@@ -2,7 +2,7 @@
Name: urpmi
Version: 3.9
-Release: 6mdk
+Release: 7mdk
License: GPL
Source0: %{name}.tar.bz2
Source1: %{name}.logrotate
@@ -144,6 +144,13 @@ fi
%changelog
+* Mon Aug 12 2002 François Pons <fpons@mandrakesoft.com> 3.9-7mdk
+- fixed --auto not taken into account for removing or unselecting
+ packages in urpmi.
+- fixed modified flag ignored in urpmi.cfg (may cause side effects
+ as remove media not asked next time urpmi.removemedia is called).
+- added --verify-rpm to urpmi in order to check rpm signature.
+
* Tue Aug 6 2002 François Pons <fpons@mandrakesoft.com> 3.9-6mdk
- added --allow-nodeps and --allow-force option to urpmi.
- globing multiple media name select them all instead of error.