Hello community,
here is the log from the commit of package rpmorphan for openSUSE:Factory checked in at 2018-12-04 20:55:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rpmorphan (Old)
and /work/SRC/openSUSE:Factory/.rpmorphan.new.19453 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rpmorphan"
Tue Dec 4 20:55:09 2018 rev:20 rq:653537 version:1.19
Changes:
--------
--- /work/SRC/openSUSE:Factory/rpmorphan/rpmorphan.changes 2018-02-06 16:49:45.902353313 +0100
+++ /work/SRC/openSUSE:Factory/.rpmorphan.new.19453/rpmorphan.changes 2018-12-04 20:55:21.560784072 +0100
@@ -1,0 +2,14 @@
+Sun Dec 2 20:53:42 UTC 2018 - Asterios Dramis
+
+- Update to 1.19:
+ improvement :
+ * (rpmorphan) add recommends option
+ * (rpmdep) add recommends/suggests option
+ * (rpmdep) handle require with if syntax (redhat-rpm-config)
+ * (rpmextra) add repoquery method
+ * (rpmextra) can force method using env RPMEXTRA_METHOD
+ bugfix :
+ * (rpmdep) remove warnings
+ * (rpmextra) fix problem with yum/dnf wrapping
+
+-------------------------------------------------------------------
Old:
----
rpmorphan-1.18.tar.gz
New:
----
rpmorphan-1.19.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rpmorphan.spec ++++++
--- /var/tmp/diff_new_pack.YaRyty/_old 2018-12-04 20:55:22.676782829 +0100
+++ /var/tmp/diff_new_pack.YaRyty/_new 2018-12-04 20:55:22.728782771 +0100
@@ -12,17 +12,17 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: rpmorphan
-Version: 1.18
+Version: 1.19
Release: 0
Summary: List the orphaned RPM packages
-License: GPL-2.0+
+License: GPL-2.0-or-later
Group: System/Packages
-Url: http://rpmorphan.sourceforge.net/
+URL: http://rpmorphan.sourceforge.net/
Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz
Requires: rpm
Recommends: logrotate
@@ -47,6 +47,8 @@
sed -i '/^#\!/d' rpmorphan-curses-lib.pl
sed -i '/^#\!/d' rpmorphan-lib.pl
sed -i '/^#\!/d' rpmorphan-tk-lib.pl
+# Fix rpmlint error "env-script-interpreter"
+sed -i 's/^#\!\/usr\/bin\/env\ perl/#\!\/usr\/bin\/perl/' *.pl
%build
@@ -54,7 +56,8 @@
%make_install
%files
-%doc Authors COPYING Changelog NEWS Readme Readme.fr Todo rpmorphan.lsm
+%doc Authors Changelog NEWS Readme Readme.fr Todo rpmorphan.lsm
+%license COPYING
%config(noreplace) %{_sysconfdir}/logrotate.d/rpmorphan
%config(noreplace) %{_sysconfdir}/rpmorphanrc
%{_bindir}/grpmorphan
@@ -68,11 +71,11 @@
%{_bindir}/rpmorphan.pl
%{_bindir}/rpmusage
%{_bindir}/rpmusage.pl
-%{_mandir}/man1/rpmdep.1%{ext_man}
-%{_mandir}/man1/rpmduplicates.1%{ext_man}
-%{_mandir}/man1/rpmextra.1%{ext_man}
-%{_mandir}/man1/rpmorphan.1%{ext_man}
-%{_mandir}/man1/rpmusage.1%{ext_man}
+%{_mandir}/man1/rpmdep.1%{?ext_man}
+%{_mandir}/man1/rpmduplicates.1%{?ext_man}
+%{_mandir}/man1/rpmextra.1%{?ext_man}
+%{_mandir}/man1/rpmorphan.1%{?ext_man}
+%{_mandir}/man1/rpmusage.1%{?ext_man}
%{_libexecdir}/rpmorphan/
%dir %{_localstatedir}/lib/rpmorphan
%{_localstatedir}/lib/rpmorphan/keep
++++++ rpmorphan-1.18.tar.gz -> rpmorphan-1.19.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmorphan-1.18/Changelog new/rpmorphan-1.19/Changelog
--- old/rpmorphan-1.18/Changelog 2017-12-15 12:46:37.000000000 +0100
+++ new/rpmorphan-1.19/Changelog 2018-09-14 17:43:32.000000000 +0200
@@ -1,3 +1,12 @@
+2018-09-14 Eric Gerbier 1.19
+ * (rpmorphan) add recommends option
+ * (rpmdep) add recommends/suggests option
+ * (rpmdep) remove warnings
+ * (rpmdep) handle require with if syntax (redhat-rpm-config)
+ * (rpmextra) fix problem with yum/dnf wrapping
+ * (rpmextra) add repoquery method
+ * (rpmextra) can force method using env RPMEXTRA_METHOD
+
2017-12-22 Eric Gerbier 1.18
* (rpmorphan curses) fix error on line 860/862 rpmorphan-lib.pl (undefined value)
* (rpmorphan curses) block q key on info display
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmorphan-1.18/Makefile new/rpmorphan-1.19/Makefile
--- old/rpmorphan-1.18/Makefile 2017-12-22 09:31:31.000000000 +0100
+++ new/rpmorphan-1.19/Makefile 2018-09-14 17:45:29.000000000 +0200
@@ -1,4 +1,4 @@
-# $Id: rpmorphan-1.18 | Makefile | Fri Apr 22 15:46:36 2016 +0200 | Eric Gerbier $
+# $Id: rpmorphan-1.19 | Makefile | Fri Apr 22 15:46:36 2016 +0200 | Eric Gerbier $
# recommanded by debian install guide
DESTDIR =
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmorphan-1.18/NEWS new/rpmorphan-1.19/NEWS
--- old/rpmorphan-1.18/NEWS 2017-12-15 12:47:02.000000000 +0100
+++ new/rpmorphan-1.19/NEWS 2018-09-14 17:43:32.000000000 +0200
@@ -1,3 +1,16 @@
+ 1.19 version
+
+improvement :
+* (rpmorphan) add recommends option
+* (rpmdep) add recommends/suggests option
+* (rpmdep) handle require with if syntax (redhat-rpm-config)
+* (rpmextra) add repoquery method
+* (rpmextra) can force method using env RPMEXTRA_METHOD
+
+bugfix :
+* (rpmdep) remove warnings
+ * (rpmextra) fix problem with yum/dnf wrapping
+-------------------------------------------------------------------------------
1.18 version
bugfix :
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmorphan-1.18/Readme new/rpmorphan-1.19/Readme
--- old/rpmorphan-1.18/Readme 2017-12-22 09:31:31.000000000 +0100
+++ new/rpmorphan-1.19/Readme 2018-09-14 17:45:29.000000000 +0200
@@ -45,4 +45,4 @@
--
Eric Gerbier
-$Id: rpmorphan-1.18 | Readme | Thu Mar 31 16:11:08 2016 +0200 | Eric Gerbier $
+$Id: rpmorphan-1.19 | Readme | Thu Mar 31 16:11:08 2016 +0200 | Eric Gerbier $
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmorphan-1.18/Readme.fr new/rpmorphan-1.19/Readme.fr
--- old/rpmorphan-1.18/Readme.fr 2017-12-22 09:31:31.000000000 +0100
+++ new/rpmorphan-1.19/Readme.fr 2018-09-14 17:45:29.000000000 +0200
@@ -40,4 +40,4 @@
--
Eric Gerbier
-$Id: rpmorphan-1.18 | Readme.fr | Thu Mar 31 16:11:08 2016 +0200 | Eric Gerbier $
+$Id: rpmorphan-1.19 | Readme.fr | Thu Mar 31 16:11:08 2016 +0200 | Eric Gerbier $
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmorphan-1.18/rpmdep.1 new/rpmorphan-1.19/rpmdep.1
--- old/rpmorphan-1.18/rpmdep.1 2017-12-22 09:31:31.000000000 +0100
+++ new/rpmorphan-1.19/rpmdep.1 2018-09-14 17:45:29.000000000 +0200
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -54,16 +54,20 @@
.\" Avoid warning from groff about undefined register 'F'.
.de IX
..
-.if !\nF .nr F 0
-.if \nF>0 \{\
-. de IX
-. tm Index:\\$1\t\\n%\t"\\$2"
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+. if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
..
-. if !\nF==2 \{\
-. nr % 0
-. nr F 2
+. if !\nF==2 \{\
+. nr % 0
+. nr F 2
+. \}
. \}
.\}
+.rr rF
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear. Run. Save yourself. No user-serviceable parts.
@@ -129,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RPMDEP 1"
-.TH RPMDEP 1 "2017-12-22" "perl v5.26.1" "User Contributed Perl Documentation"
+.TH RPMDEP 1 "2018-09-13" "perl v5.26.2" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -159,6 +163,8 @@
\& \-debug debug mode
\& \-dot dotfile build a dot file for graphviz
\& \-depending instead of dependencies, display dependings
+\& \-suggests also show very weak dependencies : suggests
+\& \-recommends also show weak dependencies : recommends
\& \-all works on all installed packages
.Ve
.SH "REQUIRED ARGUMENTS"
@@ -202,6 +208,12 @@
instead of showing package dependencies (rpm \-qR),
display packages wich are depending upon the given argument :
it then act as an improved 'rpm \-q \-\-whatrequires' command
+.IP "\fB\-\-suggests\fR" 8
+.IX Item "--suggests"
+add to \*(L"required\*(R" dependencies, very weak dependencies
+.IP "\fB\-\-recommends\fR" 8
+.IX Item "--recommends"
+add to \*(L"required\*(R" dependencies, weak dependencies
.IP "\fB\-\-all\fR" 8
.IX Item "--all"
rpmdep will then work on all installed packages, and display the results
@@ -250,6 +262,12 @@
.Vb 1
\& rpmdep.pl \-a \-\-depending \-\-dot alldep.dot
.Ve
+.PP
+get all dependencies of rpmrebuild package
+.PP
+.Vb 1
+\& rpmdep.pl \-suggests \-\-recommends rpmrebuild
+.Ve
.SH "FILES"
.IX Header "FILES"
the program can use the /tmp/rpmorphan.cache file
@@ -283,7 +301,7 @@
nothing
.SH "DEPENDENCIES"
.IX Header "DEPENDENCIES"
-you should use graphviz to build graph from
+you should use graphviz to build graph from dot files
.SH "INCOMPATIBILITIES"
.IX Header "INCOMPATIBILITIES"
not known
@@ -291,9 +309,11 @@
.IX Header "BUGS AND LIMITATIONS"
the program does not work well on program installed
in several versions
+.PP
+the code does not use the following rpm tags : Supplements, Enhances
.SH "NOTES"
.IX Header "NOTES"
-this program can be used as \*(L"normal\*(R" user
+this program can be used as \*(L"normal\*(R" (unpriviledge) user
.SH "SEE ALSO"
.IX Header "SEE ALSO"
\fIrpm\fR\|(1) for rpm call
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmorphan-1.18/rpmdep.pl new/rpmorphan-1.19/rpmdep.pl
--- old/rpmorphan-1.18/rpmdep.pl 2017-12-22 09:31:31.000000000 +0100
+++ new/rpmorphan-1.19/rpmdep.pl 2018-09-14 17:45:29.000000000 +0200
@@ -4,7 +4,7 @@
#
# Copyright (C) 2006 by Eric Gerbier
# Bug reports to: gerbier@users.sourceforge.net
-# $Id: rpmorphan-1.18 | rpmdep.pl | Tue Jul 11 13:10:43 2017 +0200 | Eric Gerbier $
+# $Id: rpmorphan-1.19 | rpmdep.pl | Thu Sep 13 18:50:59 2018 +0200 | Eric Gerbier $
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -70,13 +70,24 @@
}
#########################################################
# convert a name to a package name
-sub name2pac($$$) {
+# prototype because recursive
+sub name2pac($$$$);
+
+sub name2pac($$$$) {
my $name = shift @_; # object name
my $rh_is_provided = shift @_; # general provide hash
my $rh_provides = shift @_; # general provide hash
+ my $flag_opt = shift @_; # optional packages (suggests, recommends)
+
+ # debug("name2pac on $name");
my $pac;
- if ( is_package( $name, $rh_provides ) ) {
+ ## no critic (ProhibitCascadingIfElse)
+ if ( ( !$name ) or ( $name =~ m/^\s*$/ ) ) {
+ $pac = undef;
+ debug('name2pac) catch empty name');
+ }
+ elsif ( is_package( $name, $rh_provides ) ) {
# name is a package
$pac = $name;
@@ -88,6 +99,53 @@
$pac = $rh_is_provided->{$name};
debug("(name2pac) $name is a file/virtual");
}
+
+# cf https://fedoraproject.org/wiki/Features/UsrMove https://wiki.mageia.org/en/Feature:UsrMove
+# problem with /bin and /usr/bin
+ elsif ( $name =~ /^\/bin\/(.*)/ ) {
+ return name2pac( "/usr/bin/$1", $rh_is_provided, $rh_provides,
+ $flag_opt );
+ }
+
+ # problem with /sbin versus /usr/sbin
+ elsif ( $name =~ /^\/sbin\/(.*)/ ) {
+ return name2pac( "/usr/sbin/$1", $rh_is_provided, $rh_provides,
+ $flag_opt );
+
+ }
+ elsif ( $name =~ /^\/lib\/(.*)/ ) {
+ return name2pac( "/usr/lib/$1", $rh_is_provided, $rh_provides,
+ $flag_opt );
+ }
+ elsif ( $name =~ /^\/lib64\/(.*)/ ) {
+ return name2pac( "/usr/lib64/$1", $rh_is_provided, $rh_provides,
+ $flag_opt );
+ }
+ ## no critic (ProhibitEscapedMetacharacters)
+ # perl(:MODULE_COMPAT_5.22.2)
+ elsif ( $name =~ /(.*)\(/ ) {
+ return name2pac( $1, $rh_is_provided, $rh_provides, $flag_opt );
+ }
+
+ # git-svn[== 1:2.13.6]
+ elsif ( $name =~ /(.*)\[/ ) {
+ return name2pac( $1, $rh_is_provided, $rh_provides, $flag_opt );
+ }
+
+ # (annobin if gcc)
+ elsif ( $name =~ m/^\(.* if .*\)/ ) {
+ debug("(name2pac) catch if dependency on $name");
+ $pac = undef;
+ }
+
+ # should never pass here
+ # or we have a problem with rpm query or rpm analysis
+ # but with suggests/recommends options, we can have a dependency on
+ # an uninstalled package
+ elsif ($flag_opt) {
+ debug("(name2pac) can not find who provides $name");
+ $pac = undef;
+ }
else {
warning("(name2pac) can not find who provides $name");
$pac = undef;
@@ -96,8 +154,11 @@
}
#########################################################
# search the dependency of $name
-# no prototype because recursive
-sub solve_dep {
+# prototype because recursive
+## no critic (ProhibitManyArgs)
+sub solve_dep ($$$$$$$$$);
+
+sub solve_dep ($$$$$$$$$) {
my $name = shift @_; # package name
my $rh_is_provided = shift @_; # general provide hash
my $rh_provides = shift @_; # general provide hash
@@ -106,6 +167,7 @@
my $rh_res = shift @_; # result cache
my $fh_dot = shift @_; # flag for dot
my $level = shift @_; # recurse level
+ my $flag_opt = shift @_; # optional packages (suggests, recommends)
$level++; # recurse level
my $state = 0; # state ( 0 for ok)
@@ -125,7 +187,7 @@
# dep may be a package or a file or a virtual
# searched package
- my $pac = name2pac( $dep, $rh_is_provided, $rh_provides );
+ my $pac = name2pac( $dep, $rh_is_provided, $rh_provides, $flag_opt );
if ( !defined $pac ) {
$state++;
next;
@@ -159,9 +221,11 @@
if ( !exists $rh_res->{$pac} ) {
# recursive call on $pac
- my $sub_state =
- solve_dep( $pac, $rh_is_provided, $rh_provides, $rh_depends,
- $rh_files, $rh_res, $fh_dot, $level );
+ my $sub_state = solve_dep(
+ $pac, $rh_is_provided, $rh_provides,
+ $rh_depends, $rh_files, $rh_res,
+ $fh_dot, $level, $flag_opt
+ );
$state += $sub_state;
}
@@ -174,6 +238,7 @@
} # foreach
return $state;
}
+## use critic (ProhibitManyArgs)
#########################################################
# convert result for package in a human list
sub hres2human($$) {
@@ -245,10 +310,11 @@
}
#########################################################
# convert dependencies on file/virtual to dependencies on package
-sub convert2pac($$$) {
+sub convert2pac($$$$) {
my $rh_depends = shift @_; # input/output : general dependencies hash
my $rh_provides = shift @_; # input : general provide hash
my $rh_is_provided = shift @_; # input : provided hash
+ my $flag_opt = shift @_; # optional packages (suggests, recommends)
#print "------ depending of perl -----------------\n";
#print dump $rh_depends->{'perl'};
@@ -257,8 +323,10 @@
foreach my $name ( keys %{$rh_depends} ) {
next if ( $name =~ m/^rpmlib/ );
+ debug("convert2pac $name");
if ( !is_package( $name, $rh_provides ) ) {
- my $pac = name2pac( $name, $rh_is_provided, $rh_provides );
+ my $pac =
+ name2pac( $name, $rh_is_provided, $rh_provides, $flag_opt );
next if ( !defined $pac );
if ( exists $rh_depends->{$pac} ) {
%{ $rh_depends->{$pac} } =
@@ -283,7 +351,7 @@
# main
#
#########################################################
-my $version = '0.6';
+my $version = '0.7';
my $opt_help;
my $opt_man;
@@ -294,6 +362,12 @@
my $opt_dot;
my $opt_depending;
my $opt_all;
+my $opt_suggests;
+my $opt_recommends;
+
+# not really used, but avoid a warning from rpmorphan-lib
+# when use : is_set( $rh_opt, 'arch' );
+my $opt_arch;
my %opt = (
'help' => \$opt_help,
@@ -305,17 +379,22 @@
'use-cache' => \$opt_use_cache,
'clear-cache' => \$opt_clear_cache,
'depending' => \$opt_depending,
+ 'suggests' => \$opt_suggests,
+ 'recommends' => \$opt_recommends,
'all' => \$opt_all,
+ 'arch' => \$opt_arch,
);
Getopt::Long::Configure('no_ignore_case');
GetOptions(
- \%opt, 'help|?', 'man', 'debug',
- 'level', 'version|V', 'dot=s', 'use-cache!',
- 'clear-cache', 'depending', 'all|a',
+ \%opt, 'help|?', 'man', 'debug',
+ 'level', 'version|V', 'dot=s', 'use-cache!',
+ 'clear-cache', 'depending', 'suggests', 'recommends',
+ 'all|a',
) or pod2usage(2);
init_debug($opt_debug);
+my $flag_opt = $opt_suggests || $opt_recommends;
if ($opt_help) {
pod2usage(1);
@@ -342,6 +421,7 @@
my %virtual;
my %requires;
+debug('1 : read_rpm_data');
read_rpm_data( \%opt, \%provides, \%install_time, \%files, \%depends,
\%virtual, \%requires );
@@ -351,11 +431,14 @@
}
my %is_provided_by;
+debug('2 : build_provided');
build_provided( \%provides, \%is_provided_by );
-convert2pac( \%depends, \%provides, \%is_provided_by );
+debug('3 : convert2pac');
+convert2pac( \%depends, \%provides, \%is_provided_by, $flag_opt );
my %depends_from;
+debug('4 : build_depends_from');
build_depends_from( \%depends, \%depends_from );
# open dot graph ?
@@ -373,7 +456,7 @@
}
}
-debug('2 : solve');
+debug('5 : solve');
# store results in a hash $res{$pac}{$dep}
# so keys $res{$pac} is the result for $pac
@@ -382,16 +465,20 @@
if ($opt_all) {
if ($opt_depending) {
foreach my $pac ( keys %install_time ) {
- $state +=
- solve_dep( $pac, \%is_provided_by, \%provides, \%depends,
- \%files, \%res, $fh_dot, 0 );
+ $state += solve_dep(
+ $pac, \%is_provided_by, \%provides,
+ \%depends, \%files, \%res,
+ $fh_dot, 0, $flag_opt
+ );
}
}
else {
foreach my $pac ( keys %install_time ) {
- $state +=
- solve_dep( $pac, \%is_provided_by, \%provides, \%depends_from,
- \%files, \%res, $fh_dot, 0 );
+ $state += solve_dep(
+ $pac, \%is_provided_by, \%provides,
+ \%depends_from, \%files, \%res,
+ $fh_dot, 0, $flag_opt
+ );
}
}
foreach my $pac (
@@ -409,9 +496,11 @@
# search for depending packages
#print "-- $package depends --\n";
#print dump( $depends{$package} );
- $state =
- solve_dep( $package, \%is_provided_by, \%provides, \%depends, \%files,
- \%res, $fh_dot, 0 );
+ $state = solve_dep(
+ $package, \%is_provided_by, \%provides,
+ \%depends, \%files, \%res,
+ $fh_dot, 0, $flag_opt
+ );
my $res = hres2human( $package, \%res );
if ($res) {
@@ -426,8 +515,11 @@
# search for dependencies
#print "-- $package depends_from --\n";
#print dump( $depends_from{$package} );
- $state = solve_dep( $package, \%is_provided_by, \%provides, \%depends_from,
- \%files, \%res, $fh_dot, 0 );
+ $state = solve_dep(
+ $package, \%is_provided_by, \%provides,
+ \%depends_from, \%files, \%res,
+ $fh_dot, 0, $flag_opt
+ );
my $res = hres2human( $package, \%res );
if ($res) {
@@ -474,6 +566,8 @@
-debug debug mode
-dot dotfile build a dot file for graphviz
-depending instead of dependencies, display dependings
+ -suggests also show very weak dependencies : suggests
+ -recommends also show weak dependencies : recommends
-all works on all installed packages
=head1 REQUIRED ARGUMENTS
@@ -529,6 +623,14 @@
display packages wich are depending upon the given argument :
it then act as an improved 'rpm -q --whatrequires' command
+=item B<--suggests>
+
+add to "required" dependencies, very weak dependencies
+
+=item B<--recommends>
+
+add to "required" dependencies, weak dependencies
+
=item B<--all>
rpmdep will then work on all installed packages, and display the results
@@ -567,6 +669,10 @@
rpmdep.pl -a --depending --dot alldep.dot
+get all dependencies of rpmrebuild package
+
+ rpmdep.pl -suggests --recommends rpmrebuild
+
=head1 FILES
the program can use the /tmp/rpmorphan.cache file
@@ -613,7 +719,7 @@
=head1 DEPENDENCIES
-you should use graphviz to build graph from
+you should use graphviz to build graph from dot files
=head1 INCOMPATIBILITIES
@@ -624,9 +730,11 @@
the program does not work well on program installed
in several versions
+the code does not use the following rpm tags : Supplements, Enhances
+
=head1 NOTES
-this program can be used as "normal" user
+this program can be used as "normal" (unpriviledge) user
=head1 SEE ALSO
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmorphan-1.18/rpmduplicates.1 new/rpmorphan-1.19/rpmduplicates.1
--- old/rpmorphan-1.18/rpmduplicates.1 2017-12-22 09:31:31.000000000 +0100
+++ new/rpmorphan-1.19/rpmduplicates.1 2018-09-14 17:45:29.000000000 +0200
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -54,16 +54,20 @@
.\" Avoid warning from groff about undefined register 'F'.
.de IX
..
-.if !\nF .nr F 0
-.if \nF>0 \{\
-. de IX
-. tm Index:\\$1\t\\n%\t"\\$2"
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+. if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
..
-. if !\nF==2 \{\
-. nr % 0
-. nr F 2
+. if !\nF==2 \{\
+. nr % 0
+. nr F 2
+. \}
. \}
.\}
+.rr rF
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear. Run. Save yourself. No user-serviceable parts.
@@ -129,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RPMDUPLICATES 1"
-.TH RPMDUPLICATES 1 "2017-12-22" "perl v5.26.1" "User Contributed Perl Documentation"
+.TH RPMDUPLICATES 1 "2018-09-13" "perl v5.26.2" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmorphan-1.18/rpmduplicates.pl new/rpmorphan-1.19/rpmduplicates.pl
--- old/rpmorphan-1.18/rpmduplicates.pl 2017-12-22 09:31:31.000000000 +0100
+++ new/rpmorphan-1.19/rpmduplicates.pl 2018-09-14 17:45:29.000000000 +0200
@@ -3,7 +3,7 @@
#
# Copyright (C) 2006 by Eric Gerbier
# Bug reports to: gerbier@users.sourceforge.net
-# $Id: rpmorphan-1.18 | rpmduplicates.pl | Fri Apr 1 12:52:04 2016 +0200 | Eric Gerbier $
+# $Id: rpmorphan-1.19 | rpmduplicates.pl | Fri Apr 1 12:52:04 2016 +0200 | Eric Gerbier $
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmorphan-1.18/rpmextra.1 new/rpmorphan-1.19/rpmextra.1
--- old/rpmorphan-1.18/rpmextra.1 2017-12-22 09:31:31.000000000 +0100
+++ new/rpmorphan-1.19/rpmextra.1 2018-09-14 17:45:29.000000000 +0200
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -54,16 +54,20 @@
.\" Avoid warning from groff about undefined register 'F'.
.de IX
..
-.if !\nF .nr F 0
-.if \nF>0 \{\
-. de IX
-. tm Index:\\$1\t\\n%\t"\\$2"
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+. if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
..
-. if !\nF==2 \{\
-. nr % 0
-. nr F 2
+. if !\nF==2 \{\
+. nr % 0
+. nr F 2
+. \}
. \}
.\}
+.rr rF
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear. Run. Save yourself. No user-serviceable parts.
@@ -129,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RPMEXTRA 1"
-.TH RPMEXTRA 1 "2017-12-22" "perl v5.26.1" "User Contributed Perl Documentation"
+.TH RPMEXTRA 1 "2018-09-14" "perl v5.26.2" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -188,10 +192,16 @@
.SH "CONFIGURATION"
.IX Header "CONFIGURATION"
nothing
+.SH "ENVIRONMENT"
+.IX Header "ENVIRONMENT"
+.IP "\s-1RPMEXTRA_METHOD\s0" 8
+.IX Item "RPMEXTRA_METHOD"
+for experts/developers only : allow to force the method used to get rpm
+data. It can be set to repoquery/dnf/yum/package\-cleanup/urpmq/zypper
.SH "DEPENDENCIES"
.IX Header "DEPENDENCIES"
rpmextra depends upon rpm package managers.
-it can use yum (Redhat), urpmi (Mandriva), zypper (Suse) tools
+it can use yum/dnf (Redhat), urpmi (Mandriva), zypper (Suse) tools
.SH "INCOMPATIBILITIES"
.IX Header "INCOMPATIBILITIES"
not known
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmorphan-1.18/rpmextra.pl new/rpmorphan-1.19/rpmextra.pl
--- old/rpmorphan-1.18/rpmextra.pl 2017-12-22 09:31:31.000000000 +0100
+++ new/rpmorphan-1.19/rpmextra.pl 2018-09-14 17:45:29.000000000 +0200
@@ -4,7 +4,7 @@
#
# Copyright (C) 2006 by Eric Gerbier
# Bug reports to: gerbier@users.sourceforge.net
-# $Id: rpmorphan-1.18 | rpmextra.pl | Tue Jul 11 13:10:43 2017 +0200 | Eric Gerbier $
+# $Id: rpmorphan-1.19 | rpmextra.pl | Fri Sep 14 17:30:03 2018 +0200 | Eric Gerbier $
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -70,15 +70,28 @@
return @sorted_list;
}
#########################################################
+# for repoquery tool
+# ex : redhat/centos
+sub get_repoquery($$) {
+ my $cmd = shift @_; # path to repoquery
+ my $arg = shift @_;
+
+ $cmd .= $arg;
+ debug("using $cmd ");
+
+ system $cmd;
+ return;
+}
+#########################################################
# for distribution using package-cleanup
# ex : redhat/centos
-sub get_extra_cleanup($) {
+sub get_extra_cleanup($$) {
my $cmd = shift @_; # path to package-cleanup
+ my $arg = shift @_;
+ $cmd .= $arg;
debug("using $cmd ");
- $cmd .= ' -q --orphans';
-
# output look like :
# kernel-2.6.35.12-90.fc14.i686
# rpmorphan-1.8-1.noarch
@@ -111,38 +124,51 @@
#########################################################
# for distribution using yum/dnf
# ex : redhat/centos/fedora
-sub get_extra_redhat($) {
+sub get_extra_redhat($$) {
my $cmd = shift @_; # path to yum
+ my $arg = shift @_;
+ $cmd .= $arg;
debug("using $cmd");
- $cmd .= ' -q list extras 2>/dev/null';
# output look like :
# zynaddsubfx.x86_64 2.4.0-2.fc12 fedora
# zynjacku.x86_64 5-4.fc12 updates
my %hash;
- ## no critic (ProhibitTwoArgOpen)
+ ## no critic (ProhibitTwoArgOpen,RequireBriefOpen)
if ( open my $fh, "$cmd |" ) {
my $nr = 0;
while ( my $line = <$fh> ) {
chomp $line;
+ #debug($line);
+
if ( $nr > 0 ) {
# line follow the format : name version repository
# but if version is too long, line may be splitted in 2 lines !!!
## no critic (ProhibitEmptyQuotes)
- my ( $name, $version, undef ) = split ' ', $line;
+ my ( $name, $version, $orig ) = split ' ', $line;
if ( !$version ) {
- print "problem line $line\n";
+
+ # name on first line,
+ # version and repository on second line
+ debug("problem line $nr $line");
+ $line = <$fh>;
+ ( $version, $orig ) = split ' ', $line;
}
- else {
- ## no critic (ProhibitEscapedMetacharacters)
- $name =~ s/\..*//; # remove arch
- $name .= "-$version"; # add version
- $hash{$name} = 1;
+ if ( !$orig ) {
+
+ # name and version on first line
+ # repository on second line : must skip
+ $line = <$fh>;
}
+ ## no critic (ProhibitEscapedMetacharacters)
+ $name =~ s/\..*//; # remove arch
+ $name .= "-$version"; # add version
+ debug("add $name");
+ $hash{$name} = 1;
}
$nr++;
}
@@ -161,12 +187,13 @@
#########################################################
# for distribution using urpmq
# ex : Mandriva
-sub get_extra_urpmq($) {
+sub get_extra_urpmq($$) {
my $cmd = shift @_; # path to urpmq
+ my $arg = shift @_;
# maybe use urpm perl module ?
+ $cmd .= $arg;
debug("using $cmd");
- $cmd .= ' --list -r';
# output look like :
# zziplib0-devel-0.13.58-1mdv2010.1
@@ -200,11 +227,12 @@
#########################################################
# for distribution using zypper
# ex : Suse
-sub get_extra_zypper($) {
+sub get_extra_zypper($$) {
my $cmd = shift @_;
+ my $arg = shift @_;
+ $cmd .= $arg;
debug("using $cmd");
- $cmd .= ' pa';
# output look like :
# i | openSUSE-11.4 OSS | ConsoleKit | 0.4.3-6.1 | i586
@@ -245,6 +273,31 @@
return;
}
#########################################################
+# test if the given tool is available
+# and if it is forced or not
+sub testexec($$) {
+ my $path = shift @_;
+ my $method = shift @_;
+
+ if ($path) {
+
+ # path ok
+ if ( exists $ENV{'RPMEXTRA_METHOD'} ) {
+
+ # use method forced from env
+ return ( $ENV{'RPMEXTRA_METHOD'} eq $method );
+ }
+ else {
+ # normal method ok
+ return 1;
+ }
+ }
+ else {
+ # path to tool empty
+ return 0;
+ }
+}
+#########################################################
#
# main
#
@@ -280,27 +333,31 @@
exit;
}
-my $dnf_util_path = search_in_path('dnf');
-my $yum_util_path = search_in_path('package-cleanup');
-my $yum_path = search_in_path('yum');
-my $urpmq_path = search_in_path('urpmq');
-my $zypper_path = search_in_path('zypper');
+my $repoquery_path = search_in_path('repoquery');
+my $dnf_util_path = search_in_path('dnf');
+my $yum_util_path = search_in_path('package-cleanup');
+my $yum_path = search_in_path('yum');
+my $urpmq_path = search_in_path('urpmq');
+my $zypper_path = search_in_path('zypper');
## no critic (ProhibitCascadingIfElse)
-if ($dnf_util_path) {
- get_extra_redhat($dnf_util_path);
+if ( testexec( $repoquery_path, 'repoquery' ) ) {
+ get_repoquery( $repoquery_path, ' -q --extras' );
+}
+elsif ( testexec( $dnf_util_path, 'dnf' ) ) {
+ get_extra_redhat( $dnf_util_path, ' -q list extras' );
}
-elsif ($yum_util_path) {
- get_extra_cleanup($yum_util_path);
+elsif ( testexec( $yum_util_path, 'package-cleanup' ) ) {
+ get_extra_cleanup( $yum_util_path, ' -q --orphans' );
}
-elsif ($yum_path) {
- get_extra_redhat($yum_path);
+elsif ( testexec( $yum_path, 'yum' ) ) {
+ get_extra_redhat( $yum_path, ' -q list extras' );
}
-elsif ($urpmq_path) {
- get_extra_urpmq($urpmq_path);
+elsif ( testexec( $urpmq_path, 'urpmq' ) ) {
+ get_extra_urpmq( $urpmq_path, ' --list -r' );
}
-elsif ($zypper_path) {
- get_extra_zypper($zypper_path);
+elsif ( testexec( $zypper_path, 'zypper' ) ) {
+ get_extra_zypper( $zypper_path, ' pa' );
}
else {
warning('unknown package tool');
@@ -379,10 +436,21 @@
nothing
+=head1 ENVIRONMENT
+
+=over 8
+
+=item RPMEXTRA_METHOD
+
+for experts/developers only : allow to force the method used to get rpm
+data. It can be set to repoquery/dnf/yum/package-cleanup/urpmq/zypper
+
+=back
+
=head1 DEPENDENCIES
rpmextra depends upon rpm package managers.
-it can use yum (Redhat), urpmi (Mandriva), zypper (Suse) tools
+it can use yum/dnf (Redhat), urpmi (Mandriva), zypper (Suse) tools
=head1 INCOMPATIBILITIES
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmorphan-1.18/rpmorphan-curses-lib.pl new/rpmorphan-1.19/rpmorphan-curses-lib.pl
--- old/rpmorphan-1.18/rpmorphan-curses-lib.pl 2017-12-22 09:31:31.000000000 +0100
+++ new/rpmorphan-1.19/rpmorphan-curses-lib.pl 2018-09-14 17:45:29.000000000 +0200
@@ -4,7 +4,7 @@
#
# Copyright (C) 2006 by Eric Gerbier
# Bug reports to: gerbier@users.sourceforge.net
-# $Id: rpmorphan-1.18 | rpmorphan-curses-lib.pl | Fri Dec 15 12:34:04 2017 +0100 | Eric Gerbier $
+# $Id: rpmorphan-1.19 | rpmorphan-curses-lib.pl | Fri Dec 15 12:34:04 2017 +0100 | Eric Gerbier $
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmorphan-1.18/rpmorphan-lib.pl new/rpmorphan-1.19/rpmorphan-lib.pl
--- old/rpmorphan-1.18/rpmorphan-lib.pl 2017-12-22 09:31:31.000000000 +0100
+++ new/rpmorphan-1.19/rpmorphan-lib.pl 2018-09-14 17:45:29.000000000 +0200
@@ -4,7 +4,7 @@
#
# Copyright (C) 2006 by Eric Gerbier
# Bug reports to: gerbier@users.sourceforge.net
-# $Id: rpmorphan-1.18 | rpmorphan-lib.pl | Fri Dec 15 11:37:02 2017 +0100 | Eric Gerbier $
+# $Id: rpmorphan-1.19 | rpmorphan-lib.pl | Thu Aug 16 15:16:17 2018 +0200 | Eric Gerbier $
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -214,6 +214,8 @@
# REQUIREFLAGS REQUIREVERSION
my $suggests = ( is_set( $rh_opt, 'suggests' ) ) ? '[%{SUGGESTS},]' : q{};
+ my $recommends =
+ ( is_set( $rh_opt, 'recommends' ) ) ? '[%{RECOMMENDS},]' : q{};
my $qf =
( is_set( $rh_opt, 'arch' ) )
@@ -222,7 +224,7 @@
# for provides and requires : only keep names, avoid version
my $rpm_cmd =
-"rpm -qa --queryformat '$qf;[%{REQUIRENAME},]$suggests;[%{PROVIDES},];[%{FILENAMES},];%{INSTALLTIME}\n' 2>/dev/null";
+"rpm -qa --queryformat '$qf;[%{REQUIRENAME},]$suggests $recommends;[%{PROVIDES},];[%{FILENAMES},];%{INSTALLTIME}\n' 2>/dev/null";
my $cache_file = '/tmp/rpmorphan.cache';
my $fh_cache;
my $cmd;
@@ -431,8 +433,9 @@
import RPM2;
my $db = RPM2->open_rpm_db();
- my $flag_suggests = is_set( $rh_opt, 'suggests' );
- my $flag_arch = is_set( $rh_opt, 'arch' );
+ my $flag_suggests = is_set( $rh_opt, 'suggests' );
+ my $flag_recommends = is_set( $rh_opt, 'recommends' );
+ my $flag_arch = is_set( $rh_opt, 'arch' );
debug('1 : analysis');
my %objects;
@@ -469,6 +472,13 @@
push @req, @suggests;
}
+ if ($flag_recommends) {
+ my @recommends = $pkg->tag('RECOMMENDS');
+
+ #debug("recommends for $name : " . join ' ', @recommends);
+ push @req, @recommends;
+ }
+
analyse_rpm_info(
$name, \@prov, \@req, \@files,
\%objects, $rh_provides, $rh_files, $rh_depends,
@@ -534,8 +544,9 @@
my $db = URPM::DB::open();
debug('1 : analysis');
- my $flag_suggests = is_set( $rh_opt, 'suggests' );
- my $flag_arch = is_set( $rh_opt, 'arch' );
+ my $flag_suggests = is_set( $rh_opt, 'suggests' );
+ my $flag_recommends = is_set( $rh_opt, 'recommends' );
+ my $flag_arch = is_set( $rh_opt, 'arch' );
my %objects;
$db->traverse(
@@ -561,6 +572,12 @@
#debug("suggests for $name : " . join ' ', @suggests);
push @req, @suggests;
}
+ if ($flag_recommends) {
+ my @recommends = $package->recommends;
+
+ #debug("recommends for $name : " . join ' ', @recommends);
+ push @req, @recommends;
+ }
analyse_rpm_info(
$name, \@prov, \@req, \@files,
@@ -881,8 +898,9 @@
return $res[0];
}
#########################################################
-# return true is rpm allow SUGGEST tags
-sub is_suggests() {
+# search if a tag exists
+sub is_tag($) {
+ my $searchtag = shift @_;
my $cmd = 'rpm -q --querytags ';
## no critic ( ProhibitBacktickOperators );
@@ -890,13 +908,24 @@
## use critic
foreach my $tag (@res) {
chomp $tag;
- if ( $tag =~ m/^SUGGESTS/ ) {
+ if ( $tag =~ m/^$searchtag/ ) {
return 1;
}
}
return 0;
}
#########################################################
+# return true is rpm allow SUGGEST tags
+sub is_suggests() {
+ return is_tag('SUGGESTS');
+}
+#########################################################
+# return true is rpm allow SUGGEST tags
+sub is_recommends() {
+
+ return is_tag('RECOMMENDS');
+}
+#########################################################
# return size of a list of rpm packages in a human format
sub get_package_size(@) {
my @pacs = @_;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmorphan-1.18/rpmorphan-tk-lib.pl new/rpmorphan-1.19/rpmorphan-tk-lib.pl
--- old/rpmorphan-1.18/rpmorphan-tk-lib.pl 2017-12-22 09:31:31.000000000 +0100
+++ new/rpmorphan-1.19/rpmorphan-tk-lib.pl 2018-09-14 17:45:29.000000000 +0200
@@ -4,7 +4,7 @@
#
# Copyright (C) 2006 by Eric Gerbier
# Bug reports to: gerbier@users.sourceforge.net
-# $Id: rpmorphan-1.18 | rpmorphan-tk-lib.pl | Fri Dec 15 13:03:02 2017 +0100 | Eric Gerbier $
+# $Id: rpmorphan-1.19 | rpmorphan-tk-lib.pl | Fri Dec 15 13:03:02 2017 +0100 | Eric Gerbier $
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmorphan-1.18/rpmorphan.1 new/rpmorphan-1.19/rpmorphan.1
--- old/rpmorphan-1.18/rpmorphan.1 2017-12-22 09:31:31.000000000 +0100
+++ new/rpmorphan-1.19/rpmorphan.1 2018-09-14 17:45:29.000000000 +0200
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -54,16 +54,20 @@
.\" Avoid warning from groff about undefined register 'F'.
.de IX
..
-.if !\nF .nr F 0
-.if \nF>0 \{\
-. de IX
-. tm Index:\\$1\t\\n%\t"\\$2"
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+. if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
..
-. if !\nF==2 \{\
-. nr % 0
-. nr F 2
+. if !\nF==2 \{\
+. nr % 0
+. nr F 2
+. \}
. \}
.\}
+.rr rF
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear. Run. Save yourself. No user-serviceable parts.
@@ -129,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RPMORPHAN 1"
-.TH RPMORPHAN 1 "2017-12-22" "perl v5.26.1" "User Contributed Perl Documentation"
+.TH RPMORPHAN 1 "2018-09-13" "perl v5.26.2" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -169,6 +173,7 @@
\& \-dry\-run simulate package remove
\& \-fullalgo force full algorythm
\& \-suggests use suggested package as if required
+\& \-recommends use recommends package as if required
\& \-arch work and show on full name with version and architecture
\& \-log\-file mylog change default log file to mylog
\& \-use\-cache use cache to avoid rpm query
@@ -291,9 +296,15 @@
.IP "\fB\-suggests\fR" 8
.IX Item "-suggests"
some rpm version offers a meta-data dependency call suggests : it is
-for usefull but not necessary packages. if this option is set, the
+for usefull but not necessary packages (very weak dependency). if this option is set, the
suggested packages are used in rpmorphan as required packages.
The default value for this option is unset.
+.IP "\fB\-recommends\fR" 8
+.IX Item "-recommends"
+some rpm version offers a meta-data dependency call recommends : it is
+for usefull but not necessary packages(weak dependency). if this option is set, the
+recommended packages are used in rpmorphan as required packages.
+The default value for this option is unset.
.IP "\fB\-arch\fR" 8
.IX Item "-arch"
by default, rpmorphan works on package name. this option will rpmorphan work
@@ -440,6 +451,12 @@
.IP "display all orphaned packages, installed one month ago (or more)" 8
.IX Item "display all orphaned packages, installed one month ago (or more)"
rpmorphan \-\-all \-install\-time +30
+.IP "display orphaned packages but not weak dependencies" 8
+.IX Item "display orphaned packages but not weak dependencies"
+rpmorphan \-\-all \-\-recommends
+.IP "display orphaned packages but not all weak dependencies" 8
+.IX Item "display orphaned packages but not all weak dependencies"
+rpmorphan \-\-all \-\-recommends \-\-suggests
.SH "BUGS AND LIMITATIONS"
.IX Header "BUGS AND LIMITATIONS"
Virtuals packages are not well (for now) taken in account.
@@ -451,6 +468,8 @@
.PP
the software can only work with one version of each software :
we only treat the first version seen
+.PP
+the code does not use the following rpm tags : Supplements, Enhances
.SH "INCOMPATIBILITIES"
.IX Header "INCOMPATIBILITIES"
not known
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmorphan-1.18/rpmorphan.lsm new/rpmorphan-1.19/rpmorphan.lsm
--- old/rpmorphan-1.18/rpmorphan.lsm 2017-12-15 12:35:35.000000000 +0100
+++ new/rpmorphan-1.19/rpmorphan.lsm 2018-09-13 19:26:41.000000000 +0200
@@ -1,7 +1,7 @@
Begin4
Title: rpmorphan
-Version: 1.18
-Entered-date: 2017-12-22
+Version: 1.19
+Entered-date: 2018-09-13
Description: rpmorphan finds "orphaned" packages on your system. It determines
which packages have no other packages depending on their installation,
and shows you a list of these packages.
@@ -10,7 +10,7 @@
Author: gerbier@users.sourceforge.net (Eric Gerbier)
Maintained-by: gerbier@users.sourceforge.net (Eric Gerbier)
Primary-site: http://rpmorphan.sourceforge.net
- 46 Ko rpmorphan-1.13.tar.gz
+ 80 Ko rpmorphan-1.19.tar.gz
Platforms: linux, works with perl
Copying-policy: GPL
End
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmorphan-1.18/rpmorphan.pl new/rpmorphan-1.19/rpmorphan.pl
--- old/rpmorphan-1.18/rpmorphan.pl 2017-12-22 09:31:31.000000000 +0100
+++ new/rpmorphan-1.19/rpmorphan.pl 2018-09-14 17:45:29.000000000 +0200
@@ -4,7 +4,7 @@
#
# Copyright (C) 2006 by Eric Gerbier
# Bug reports to: gerbier@users.sourceforge.net
-# $Id: rpmorphan-1.18 | rpmorphan.pl | Fri Dec 15 11:37:02 2017 +0100 | Eric Gerbier $
+# $Id: rpmorphan-1.19 | rpmorphan.pl | Thu Aug 16 15:45:21 2018 +0200 | Eric Gerbier $
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -743,7 +743,7 @@
# version
#########################################################
{
- my $version = '1.18';
+ my $version = '1.19';
sub get_version() {
return $version;
@@ -766,6 +766,7 @@
my $opt_use_cache;
my $opt_clear_cache;
my $opt_suggests;
+my $opt_recommends;
my $opt_arch;
my $opt_gui;
@@ -819,6 +820,7 @@
'package' => \@opt_package,
'exclude' => \@opt_exclude,
'suggests' => \$opt_suggests,
+ 'recommends' => \$opt_recommends,
'install-time' => \$opt_install_time,
'access-time' => \$Opt_access_time,
'add-keep' => \@opt_add_keep,
@@ -855,7 +857,7 @@
'add-keep=s', 'del-keep=s', 'keep-file=s', 'use-cache!',
'clear-cache', 'gui!', 'tk!', 'curses!',
'dry-run!', 'suggests!', 'arch!', 'log-file=s',
- 'debug!',
+ 'debug!', 'recommends!',
) or pod2usage(2);
if ($opt_help) {
@@ -899,6 +901,11 @@
$opt_suggests = is_suggests();
}
+# disable recommends option if rpm does not provide it
+if ($opt_recommends) {
+ $opt_recommends = is_recommends();
+}
+
if ($opt_arch) {
set_option( 'arch', $opt_arch );
}
@@ -1014,6 +1021,7 @@
-dry-run simulate package remove
-fullalgo force full algorythm
-suggests use suggested package as if required
+ -recommends use recommends package as if required
-arch work and show on full name with version and architecture
-log-file mylog change default log file to mylog
-use-cache use cache to avoid rpm query
@@ -1159,10 +1167,17 @@
=item B<-suggests>
some rpm version offers a meta-data dependency call suggests : it is
-for usefull but not necessary packages. if this option is set, the
+for usefull but not necessary packages (very weak dependency). if this option is set, the
suggested packages are used in rpmorphan as required packages.
The default value for this option is unset.
+=item B<-recommends>
+
+some rpm version offers a meta-data dependency call recommends : it is
+for usefull but not necessary packages(weak dependency). if this option is set, the
+recommended packages are used in rpmorphan as required packages.
+The default value for this option is unset.
+
=item B<-arch>
by default, rpmorphan works on package name. this option will rpmorphan work
@@ -1344,6 +1359,14 @@
rpmorphan --all -install-time +30
+=item display orphaned packages but not weak dependencies
+
+rpmorphan --all --recommends
+
+=item display orphaned packages but not all weak dependencies
+
+rpmorphan --all --recommends --suggests
+
=back
=head1 BUGS AND LIMITATIONS
@@ -1358,6 +1381,8 @@
the software can only work with one version of each software :
we only treat the first version seen
+the code does not use the following rpm tags : Supplements, Enhances
+
=head1 INCOMPATIBILITIES
not known
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmorphan-1.18/rpmorphan.spec new/rpmorphan-1.19/rpmorphan.spec
--- old/rpmorphan-1.18/rpmorphan.spec 2017-12-15 12:47:40.000000000 +0100
+++ new/rpmorphan-1.19/rpmorphan.spec 2018-09-14 17:43:32.000000000 +0200
@@ -1,7 +1,7 @@
%global _binary_filedigest_algorithm 1
%global _source_filedigest_algorithm 1
-%define VERSION 1.18
+%define VERSION 1.19
Summary: List packages that have no dependencies (like deborphan)
# The Summary: line should be expanded to about here -----^
Summary(fr): Liste les packages rpm orphelins (sans dependances)
@@ -177,6 +177,15 @@
%doc %{_mandir}/man1/rpmextra.1*
%changelog
+* Fri Sep 13 2018 Eric Gerbier 1.19
+- (rpmorphan) add recommends option
+- (rpmdep) add recommends/suggests option
+- (rpmdep) remove warnings
+- (rpmdep) handle require with if syntax (redhat-rpm-config)
+- (rpmextra) fix problem with yum/dnf wrapping
+- (rpmextra) add repoquery method
+- (rpmextra) can force method using env RPMEXTRA_METHOD
+
* Fri Dec 22 2017 Eric Gerbier 1.18
- (rpmorphan curses) fix error on line 860/862 rpmorphan-lib.pl (undefined value)
- (rpmorphan curses) block q key on info display
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmorphan-1.18/rpmorphanrc.sample new/rpmorphan-1.19/rpmorphanrc.sample
--- old/rpmorphan-1.18/rpmorphanrc.sample 2017-12-22 09:31:31.000000000 +0100
+++ new/rpmorphan-1.19/rpmorphanrc.sample 2018-09-14 17:45:29.000000000 +0200
@@ -1,5 +1,5 @@
# configuration file exemple for rpmorphan
-# $Id: rpmorphan-1.18 | rpmorphanrc.sample | Wed Apr 13 11:40:31 2016 +0200 | Eric Gerbier $
+# $Id: rpmorphan-1.19 | rpmorphanrc.sample | Thu Aug 16 15:16:17 2018 +0200 | Eric Gerbier $
# it can be used as
# - host (general) configuration file as /etc/rpmorphanrc
# - home (user) configuration file as ~/.rpmorphanrc
@@ -26,6 +26,7 @@
#version = 0
#fullalgo = 0
#suggests = 0
+#recommends = 0
#all = 0
#guess-perl = 0
#guess-python = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmorphan-1.18/rpmusage.1 new/rpmorphan-1.19/rpmusage.1
--- old/rpmorphan-1.18/rpmusage.1 2017-12-22 09:31:31.000000000 +0100
+++ new/rpmorphan-1.19/rpmusage.1 2018-09-14 17:45:29.000000000 +0200
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -54,16 +54,20 @@
.\" Avoid warning from groff about undefined register 'F'.
.de IX
..
-.if !\nF .nr F 0
-.if \nF>0 \{\
-. de IX
-. tm Index:\\$1\t\\n%\t"\\$2"
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+. if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
..
-. if !\nF==2 \{\
-. nr % 0
-. nr F 2
+. if !\nF==2 \{\
+. nr % 0
+. nr F 2
+. \}
. \}
.\}
+.rr rF
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear. Run. Save yourself. No user-serviceable parts.
@@ -129,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RPMUSAGE 1"
-.TH RPMUSAGE 1 "2017-12-22" "perl v5.26.1" "User Contributed Perl Documentation"
+.TH RPMUSAGE 1 "2018-09-13" "perl v5.26.2" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmorphan-1.18/rpmusage.pl new/rpmorphan-1.19/rpmusage.pl
--- old/rpmorphan-1.18/rpmusage.pl 2017-12-22 09:31:31.000000000 +0100
+++ new/rpmorphan-1.19/rpmusage.pl 2018-09-14 17:45:29.000000000 +0200
@@ -4,7 +4,7 @@
#
# Copyright (C) 2006 by Eric Gerbier
# Bug reports to: gerbier@users.sourceforge.net
-# $Id: rpmorphan-1.18 | rpmusage.pl | Tue Jul 11 13:10:43 2017 +0200 | Eric Gerbier $
+# $Id: rpmorphan-1.19 | rpmusage.pl | Tue Jul 11 13:10:43 2017 +0200 | Eric Gerbier $
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by