From a7d8af5f49a599f4eecdd157586722e6414dbd96 Mon Sep 17 00:00:00 2001 From: Francois Pons Date: Thu, 5 Jul 2001 14:55:55 +0000 Subject: fixed wrong dependencies resolution on local rpm. improved urpmf. updated man pages. --- urpm.pm | 13 +++++++---- urpmf | 62 ++++++++++++++++++++++++++++++++++++++++++----------- urpmf.8 | 39 ++++++++++++++++++++++++++++++--- urpmi | 2 +- urpmi.8 | 11 +++++++--- urpmi.addmedia.8 | 13 ++++++----- urpmi.removemedia.8 | 4 ++-- urpmi.spec | 10 +++++++-- urpmi.update.8 | 4 ++-- urpmq.8 | 11 +++++++--- 10 files changed, 131 insertions(+), 38 deletions(-) diff --git a/urpm.pm b/urpm.pm index ee7bf9d5..1be92fc4 100644 --- a/urpm.pm +++ b/urpm.pm @@ -897,7 +897,7 @@ sub relocate_depslist { #- register local packages for being installed, keep track of source. sub register_local_packages { - my ($urpm, @files) = @_; + my ($urpm, $minimal, @files) = @_; my ($error, @names); #- examine each rpm and build the depslist for them using current @@ -920,8 +920,13 @@ sub register_local_packages { } $error and $urpm->{fatal}(1, _("error registering local packages")); - #- compute depslist associated. - $urpm->{params}->compute_depslist; + #- compute id or depslist associated. + #- minimal mode says dependencies will be resolved in a cleaner way. + if ($minimal) { + $urpm->{params}->compute_id; + } else { + $urpm->{params}->compute_depslist; + } #- return package names... @names; @@ -1495,7 +1500,7 @@ sub get_source_packages { $urpm->{error}(_("there are multiples packages with the same rpm filename \"%s\""), $1); next; } elsif (keys(%{$file2fullnames{$1} || {}}) == 1) { - my ($fullname) = keys(%{$file2fullnames{$2} || {}}); + my ($fullname) = keys(%{$file2fullnames{$1} || {}}); if (defined delete $fullname2id{$fullname}) { push @local_sources, "$urpm->{cachedir}/rpms/$1.rpm"; } else { diff --git a/urpmf b/urpmf index 4101df4f..dc1e471f 100755 --- a/urpmf +++ b/urpmf @@ -7,19 +7,55 @@ ECHO=`which gettext 2> /dev/null` [ -z "$ECHO" ] && ECHO="echo" || ECHO="$ECHO -s" TEXTDOMAIN="urpmi" - -if [ "$#" -gt 1 ] || [ "$1" = "-h" ] || [ "$1" = "--help" ]; then - $ECHO "usage: rpmf []" - exit 1 -fi +export TEXTDOMAIN dir="/var/lib/urpmi" +options= - -if /bin/ls $dir/hdlist.* >/dev/null 2>/dev/null; then - parsehdlist --files --quiet $dir/hdlist.* | grep -E "$1" -else - $ECHO "urpmi is not installed" - exit 1 -fi - +while true +do + case $1 in + -h|--help) + $ECHO "urpmf version" `rpm -q rpmtools --qf '%{VERSION}'` + $ECHO "Copyright (C) 1999,2000,2001 MandrakeSoft." + $ECHO "This is free software and may be redistributed under the terms of the GNU GPL." + echo + $ECHO "usage: urpmf [options] " + $ECHO " --quiet - do not print tag name (default if no tag given on command" + $ECHO " line, incompatible with interactive mode)." + $ECHO " --all - print all tags." + $ECHO " --name - print tag name: rpm filename (assumed if no tag given on" + $ECHO " command line but without package name)." + $ECHO " --group - print tag group: group." + $ECHO " --size - print tag size: size." + $ECHO " --serial - print tag serial: serial." + $ECHO " --summary - print tag summary: summary." + $ECHO " --description - print tag description: description." + $ECHO " --provides - print tag provides: all provides (mutliple lines)." + $ECHO " --requires - print tag requires: all requires (multiple lines)." + $ECHO " --files - print tag files: all files (multiple lines)." + $ECHO " --conflicts - print tag conflicts: all conflicts (multiple lines)." + $ECHO " --obsoletes - print tag obsoletes: all obsoletes (multiple lines)." + $ECHO " --prereqs - print tag prereqs: all prereqs (multiple lines)." + exit 1 + ;; + --*) + options="$1 $options" + shift + ;; + *) + if [ $# -gt 1 ]; then + $ECHO "usage: urpmf [options] " + $ECHO "try urpmf --help for more options" + exit 1 + fi + if /bin/ls $dir/hdlist.* >/dev/null 2>/dev/null; then + parsehdlist ${options:---files --quiet} $dir/hdlist.* | grep -E "$1" + exit $? + else + $ECHO "urpmi is not installed" + exit 1 + fi + ;; + esac +done diff --git a/urpmf.8 b/urpmf.8 index 265566ae..8b49d6ad 100644 --- a/urpmf.8 +++ b/urpmf.8 @@ -1,18 +1,51 @@ -.TH urpmf 8 "10 Apr 2001" "Mandrakesoft" "Linux-Mandrake" +.TH urpmf 8 "05 Jul 2001" "MandrakeSoft" "Mandrake Linux" .IX urpmf .SH NAME urpmf \- RPMFind - Finds the RPM package providing the specified file .SH SYNOPSIS -.B urpmf [<\fIFile\fP>] +.B urpmf [\fIoptions\fP] <\fIfile\fP> .SH DESCRIPTION urpmf outputs a list of packages providing the file specified as an argument. .PP -<\fIFile\fP> is the name of the file you wish to know the package providing +<\fIfile\fP> is the name of the file you wish to know the package providing it. Note that you may type just a substring of the file you are looking for, \fBurpmf\fP will then print a list of matching files with their corresponding packages. .PP urpmf searches through installed and uninstalled packages. +.SH OPTIONS +.IP "\fB\--help\fP" +print an help message and exit. +.IP "\fB\--quiet\fP" +do not print tag name (default if no tag given on command line, incompatible +with interactive mode). +.IP "\fB\--all\fP" +print all tags. +.IP "\fB\--name\fP" +print tag name: rpm filename (assumed if no tag given on command line but +without package name). +.IP "\fB\--group\fP" +print tag group: group. +.IP "\fB\--size\fP" +print tag size: size. +.IP "\fB\--serial\fP" +print tag serial: serial. +.IP "\fB\--summary\fP" +print tag summary: summary. +.IP "\fB\--description\fP" +print tag description: description. +.IP "\fB\--provides\fP" +print tag provides: all provides (mutliple lines). +.IP "\fB\--requires\fP" +print tag requires: all requires (multiple lines). +.IP "\fB\--files\fP" +print tag files: all files (multiple lines). +.IP "\fB\--conflicts\fP" +print tag conflicts: all conflicts (multiple lines). +.IP "\fB\--obsoletes\fP" +print tag obsoletes: all obsoletes (multiple lines). +.IP "\fB\--prereqs\fP" +print tag prereqs: all prereqs (multiple lines). .SH FILES /usr/bin/urpmf .br diff --git a/urpmi b/urpmi index 3e01be08..c3b8f2ae 100755 --- a/urpmi +++ b/urpmi @@ -151,7 +151,7 @@ if (@files) { $use_provides or $urpm->read_provides; #- build closure with local package and return list of names. - push @names, $urpm->register_local_packages(@files); + push @names, $urpm->register_local_packages($minimal, @files); } #- reparse whole internal depslist to match against newer packages only. diff --git a/urpmi.8 b/urpmi.8 index f2549ab3..d9bb9326 100644 --- a/urpmi.8 +++ b/urpmi.8 @@ -1,9 +1,9 @@ -.TH urpmi 8 "10 Apr 2001" "Mandrakesoft" "Linux-Mandrake" +.TH urpmi 8 "05 Jul 2001" "MandrakeSoft" "Mandrake Linux" .IX urpmi .SH NAME urpmi \- rpm wrapper making installs easier for the user .SH SYNOPSIS -.B urpmi [options] [package_names|rpm_files...] +.B urpmi [\fIoptions\fP] [\fIpackage_names\fP | \fIrpm_files...\fP] .SH DESCRIPTION urpmi enables non-superuser install of rpms. In fact, it only authorizes well-known rpms to be installed. If you want to install local rpm file, you @@ -41,9 +41,12 @@ to launch, use autoirpm. .br To install all available menu entries of all known packages, use autoirpm-icons. -.SH OPTION +.SH OPTIONS .IP "\fB\--help\fP" print an help message and exit. +.IP "\fB\--update\fP" +use only update media. This means \fBurpmi\fP will search and resolve +dependencies only in media marked as update. .IP "\fB\--auto\fP" installs all required dependencies without asking. .IP "\fB\--auto-select\fP" @@ -69,6 +72,8 @@ upgrade all requires if they can be upgraded. if maximal closure is used, assume that a package listed mey have wrong or not up-to-date dependancies. This cause more package to be upgraded and may correct unresolved dependancies on the rpm database. +.IP "\fB\-p\fP" +allow search in provides to find package. .IP "\fB\-q\fP" proposes a quiet mode when calling rpm where no upgrade status are printed. .IP "\fB\-v\fP" diff --git a/urpmi.addmedia.8 b/urpmi.addmedia.8 index 5d751249..57e6de26 100644 --- a/urpmi.addmedia.8 +++ b/urpmi.addmedia.8 @@ -1,9 +1,9 @@ -.TH urpmi.addmedia 8 "10 Apr 2001" "Mandrakesoft" "Linux-Mandrake" +.TH urpmi.addmedia 8 "05 Jul 2001" "MandrakeSoft" "Mandrake Linux" .IX urpmi.addmedia .SH NAME urpmi.addmedia \- adds a new rpms media for use with urpmi .SH SYNOPSIS -.B urpmi.addmedia <\fIname\fP> <\fIurl\fP> +.B urpmi.addmedia [\fIoptions\fP] <\fIname\fP> <\fIurl\fP> .SH DESCRIPTION urpmi.addmedia tells urpmi that he can find new rpms at the specified location. Currently supported medias are: local drives, removable drives @@ -38,21 +38,24 @@ eg: urpmi.addmedia ftp ftp://a:a@leia//export/Mandrake/RPMS with ../base/hdlist .PP Local drive or NFS: .br -.IP "\fB urpmi.addmedia <\fIname\fP> file://<\fIpath\fP>\fP" +.IP "\fB urpmi.addmedia <\fIname\fP> file://<\fIpath\fP>\fP with <\fIrelative path of hdlist\fP>\fP" Where <\fIname\fP> is your reference for the media (e.g. Myrpms). .br <\fIpath\fP> is the location of the rpm directory on your machine. .PP Removable device: .br -.IP "\fB urpmi.addmedia removable_<\fIdevice\fP>://<\fIpath\fP>\fP" +.IP "\fB urpmi.addmedia removable_<\fIdevice\fP>://<\fIpath\fP>\fP with <\fIrelative path of hdlist\fP>\fP" <\fIdevice\fP> is the name of your media as specified in the /dev/ directory (e.g. cdrom, floppy, zip, ...). .br <\fIpath\fP> is the location of the rpm directory on your machine when media is mounted. .PP - +.SH OPTIONS +.IP "\fB\--update\fP" +add a medium which will be taken into account when updating only update media by +\fBurpmi\fP. .SH FILES /usr/bin/urpmi .br diff --git a/urpmi.removemedia.8 b/urpmi.removemedia.8 index e7aa7d84..6b348f44 100644 --- a/urpmi.removemedia.8 +++ b/urpmi.removemedia.8 @@ -1,4 +1,4 @@ -.TH urpmi.removemedia 8 "10 Apr 2001" "Mandrakesoft" "Linux-Mandrake" +.TH urpmi.removemedia 8 "05 Jul 2001" "MandrakeSoft" "Mandrake Linux" .IX urpmi.removemedia .SH NAME urpmi.removemedia \- remove a rpms media from the known medias of urpmi @@ -10,7 +10,7 @@ the named media and to rpms from that media. .PP <\fInames\fP> is a list of names you first told to urpmi.addmedia -.SH OPTION +.SH OPTIONS .IP "\fB\-a\fP" Select all media to remove them. .SH FILES diff --git a/urpmi.spec b/urpmi.spec index 58634d21..fe82ef49 100644 --- a/urpmi.spec +++ b/urpmi.spec @@ -2,12 +2,12 @@ Name: urpmi Version: 1.6 -Release: 11mdk +Release: 12mdk License: GPL Source0: %{name}.tar.bz2 Summary: User mode rpm install Requires: eject, wget -PreReq: perl-gettext, rpmtools >= 3.0-7mdk +PreReq: perl-gettext, rpmtools >= 3.0-8mdk BuildRequires: libbzip2-devel rpm-devel BuildRoot: %{_tmppath}/%{name}-buildroot @@ -106,6 +106,12 @@ rm -f /var/lib/urpmi/depslist %changelog +* Thu Jul 5 2001 François Pons 1.6-12mdk +- fixed wrong dependencies resolution for local packages + in minimal mode. +- improved urpmf. +- updated man pages. + * Thu Jul 5 2001 François Pons 1.6-11mdk - take care of local packages. diff --git a/urpmi.update.8 b/urpmi.update.8 index c6efcb8b..ef28a86f 100644 --- a/urpmi.update.8 +++ b/urpmi.update.8 @@ -1,4 +1,4 @@ -.TH urpmi.update 8 "10 Apr 2001" "Mandrakesoft" "Linux-Mandrake" +.TH urpmi.update 8 "05 Jul 2001" "MandrakeSoft" "Mandrake Linux" .IX urpmi.update .SH NAME urpmi.update \- Updates packages list for specified medias @@ -10,7 +10,7 @@ Usefull for ftp location for example. .PP <\fInames\fP> is a list of name you first told to urpmi.addmedia -.SH OPTION +.SH OPTIONS .IP "\fB\-a\fP" Select all media that are not using a removable device to update them. .IP "\fB\-c\fP" diff --git a/urpmq.8 b/urpmq.8 index c56d45ee..b347f2e9 100644 --- a/urpmq.8 +++ b/urpmq.8 @@ -1,9 +1,9 @@ -.TH urpmq 8 "10 Apr 2001" "Mandrakesoft" "Linux-Mandrake" +.TH urpmq 8 "05 Jul 2001" "MandrakeSoft" "Mandrake Linux" .IX urpmq .SH NAME urpmq \- urpmi database query tool. .SH SYNOPSIS -.B urpmq [options] [package_names | rpm_files...] +.B urpmq [\fIoptions\fP] [\fIpackage_names\fP | \fIrpm_files...\fP] .SH DESCRIPTION urpmq allows querying the urpmi database. It is for you if want to list available packages in the various media of urpmi, or list dependancies of @@ -12,9 +12,12 @@ packages or packages that will be installed if you start urpmi. Output format of urpmq is the following according to command line options: .IP [group/]package_name[-version][-release] -.SH OPTION +.SH OPTIONS .IP "\fB\--help\fP" print an help message and exit. +.IP "\fB\--update\fP" +use only update media. This means \fBurpmq\fP will search and resolve +dependencies only in media marked as update. .IP "\fB\--auto-select\fP" automatically select all packages that have to be upgraded according to already installed packages and packages listed in various media registered. @@ -42,6 +45,8 @@ mode of \fBurpmi\fP. if maximal closure is used, assume that a package listed mey have wrong or not up-to-date dependancies. This cause more package to be upgraded and may correct unresolved dependancies on the rpm database. +.IP "\fB\-p\fP" +allow search in provides to find package. .IP "\fB\-g\fP" print group of each packages listed. .IP "\fB\-r\fP" -- cgit v1.2.1