I frequently would install some new packages and forget the name of the programs later on, so I threw together a perl script to parse the zypper history log to show packages installed either grouped by date or sorted alphabetically…
There might be a better way to get to this info, but I didnt know of any, and the script was quick to throw together…
The script is called in two ways:
grouped by date (default) - “lastpkg.pl”
-or-
sorted by package name - “lastpkg.pl rpm”
#!/usr/bin/perl
############################################################################
#
# show a summary of the packages installed by date or package name
#
#
# <username>
#
############################################################################
## +++++++++++++++++++++++++++ Maintenance Log +++++++++++++++++++++++++++++
# <username> <date> Script created.
$|=1; # set output buffering to off
$=0; # set array base to 0
$,=" "; # set output field separator
$\="
"; # set output record separator
#datesort or pkgsort
my $disptype = $ARGV[0] || "datesort";
my $dbfile = qq{/var/log/zypp/history};
#slurp in the source file
open(dbfile, "<$dbfile") || die "Can‘t open proc file - $dbfile";
@rawlines=<dbfile>;
close(dbfile);
my @cleanlist = grep(/^\d{4}-\d{2}-\d{2}/,@rawlines);
chomp @cleanlist;
my %datestruct;
my %packagestruct;
for ($t=0; $t<scalar(@cleanlist); $t++) {
my ($date,$status,$pkg,$version,$dummy) = (split('\|',$cleanlist$t]))[0..4];
next if ($dummy eq "");
$packagestruct{$pkg} .= sprintf("
%-10s%-26s (%s)",$status,$version, $date);
$date =~ s/\d{2}:\d{2}:\d{2}$//;
$datestruct{$date} .= sprintf("
%-10s%-50s (%s)",$status,$pkg, $version);
}
if ($disptype =~ /pkg|package|rpm/i) {
#sort the package structure alphabetically
my @keys = sort { lc($a) cmp lc($b) } keys %packagestruct;
for ($t=0; $t<scalar(@keys); $t++) {
my $keyname = @keys$t];
printf("%s %s
",$keyname,$packagestruct{$keyname});
};
}else{
my @keys = sort { lc($a) cmp lc($b) } keys %datestruct;
for ($t=0; $t<scalar(@keys); $t++) {
my $keyname = @keys$t];
print qq{$keyname
$datestruct{$keyname} };
}
}
**sample output:**
**(grouped by date)**
2009-11-18
install openssl (0.9.8k-3.5.3)
install libmysqlclient_r16 (5.1.36-61.3)
install libmysqlclient16 (5.1.36-61.3)
install openssl-certs (0.9.8h-28.2.1)
install mysql-client (5.1.36-61.3)
install MyODBC-unixODBC (3.51.27r695-12.1)
install mysql (5.1.36-61.3)
2009-11-19
install java-1_6_0-sun (1.6.0.u17-1.1.1)
install java-1_6_0-sun-alsa (1.6.0.u17-1.1.1)
install java-1_6_0-sun-plugin (1.6.0.u17-1.1.1)
install java-1_6_0-sun-jdbc (1.6.0.u17-1.1.1)
install mozilla-xulrunner192 (1.9.2b3-2.1)
install MozillaFirefox (3.6b3-2.1)
install mozilla-xulrunner192-gnomevfs (1.9.2b3-2.1)
remove java-1_6_0-openjdk-plugin (1.6.0.0_b16-5.9.4)
remove java-1_6_0-openjdk (1.6.0.0_b16-5.9.4)
**(Sorted by application name)**
a2ps
install 4.13-1329.3 (2009-11-02 20:30:03)
aaa_base
install 11.2-43.45.1 (2009-11-02 20:29:13)
aalib
install 1.4.0-478.3 (2009-11-13 01:05:53)
acl
install 2.2.48-2.2 (2009-11-02 20:27:39)
acpica
install 20090320-3.3 (2009-11-02 20:27:05)
acpid
install 1.0.10-4.2 (2009-11-02 20:28:40)