��������� tag, as_nvre � is_source_package, ���������� � �������� ������, ���������� �� ����� (��� ���� �������� �����), ����� ����� �������� � � ��������, ����������� �� �� RPM.
������, ����������� ���� (rpminfo.pl), ������������� ������������ ���������� � �������� ������.
#!/usr/bin/perl
#
# Queries RPM database for given package and prints info.
# Usage:
# rpminfo.pl package_name
#
use strict;
use RPM2;
my $rpm_db = RPM2->open_rpm_db( "-path" => "/var/lib/rpm" );
my $pkg_iter = $rpm_db->find_by_name_iter( $ARGV[0] );
while (my $pkg = $pkg_iter->next() ) {
printInfo( $pkg );
}
$rpm_db->close_rpm_db();
# Prints info on one package.
sub printInfo {
my($pkg) = shift;
print $pkg->as_nvre(), ", ", $pkg->tag("ARCH"), ", ",
$pkg->tag("OS"), ", ", $pkg->tag("PLATFORM"), "\n";
print $pkg->tag("SUMMARY"), "\n";
print "Group: ", $pkg->tag("GROUP"), "\n";
print $pkg->tag("DESCRIPTION"), "\n";
print "Vendor: ", $pkg->tag("VENDOR"), ", ", $pkg->tag("URL"), "\n";
print "Size: ", $pkg->tag("SIZE"), "\n";
}
|
�������� ������, ������ �����, �������� ����������:
$ ./rpminfo.pl XFree86
XFree86-4.2.0-72, i386, linux, i386-redhat-linux-gnu
The basic fonts, programs and docs for an X workstation.
Group: User Interface/X
XFree86 is an open source implementation of the X Window System. It provides the basic low level functionality which full fledged
graphical user interfaces (GUIs) such as GNOME and KDE are designed upon.
Vendor: Red Hat, Inc., http://www.xfree86.org
Size: 30552239
|
17.3.5.1 ����� ���� ���������
���� ��������� - ��� ���� ��������� ����, �������������� ���������� ������, ��������� �� ������� ������ ����� UNIX (1 ������ 1970 ����) �� ������� ��������� ������. ��� �������� ����� �������� (��� INSTALLTIME) ����������������� ������ ������������ ������� Perl localtime. ������ rpmdate.pl ���������� ���������� �� �������������:
#!/usr/bin/perl
#
# Queries RPM database for given package,
# prints out name, vendor, and date installed.
# Usage:
# rpmdate.pl package_name
#
use strict;
use RPM2;
my $rpm_db = RPM2->open_rpm_db();
my $pkg_iter = $rpm_db->find_by_name_iter( $ARGV[0] );
while (my $pkg = $pkg_iter->next() ) {
printDate( $pkg );
}
$rpm_db->close_rpm_db();
# Prints installation data for one package.
sub printDate {
my($pkg) = shift;
my $date = localtime( $pkg->tag("INSTALLTIME") );
printf("%-20s %-17s %s\n", $pkg->as_nvre(), $pkg->tag("VENDOR"), $date);
}
|
������� printf � ���� ������� ����� �����, ���� ������� rpm ������ �� �����. ���� ��������� ����� --queryformat, �� �� ����� ������������� �������� ���������� ����� � ���� ������, ������� ������ ������, � Perl ��� ��������. ������ ������������ ��������� �������� � ������, ��������� ����� ����� ��� ����� ���������, ��� as_nvre.
������� ��� ������ ������� � �������� ���������, ������ ���� ��������� ������:
$ ./rpmdate.pl kernel
kernel-2.4.18-14 Red Hat, Inc. Sat Oct 5 12:29:58 2002
|
17.3.5.2 ��������� �����, �������������� ����� ������� �����
�� ������ ������ ���� ����� ������� ���������. ��� ����� (����� ������) ������������ ����� ������� �����. ��� ��������, ��� ���������� �������������, ����� ������� ��� ������� ����� ��������� � ����������������� ����.
��� ������ � ��������� ����� �������� ���������, ���������� ����, �������� �� ���� ������ �����, ��������� ���� ������ � �������� ������������ ����� ������� ������:
sub arrayToString {
my($sep) = shift;
my(@array) = @_;
my($str);
$str = $array[0];
for ( $i = 1; $i < $#array; $i++ )
{
$str = $str . $sep . $array[$i];
}
return $str;
}
|
��������� ������ ���������� ����� �����, �������� ������� �������� ��������� �����:
*BASENAMES
*CHANGELOGNAME
*CHANGELOGTEXT
*DIRNAMES
*FILEGROUPNAME
*FILELANGS
*FILELINKTOS
*FILEMD5S
*FILEUSERNAME
*OLDFILENAMES
*PROVIDENAME
*PROVIDEVERSION
*REQUIRENAME
*REQUIREVERSION
|
17.3.5.3 ��������� ������ ������ � ������
��������� files ������������� ������ ������, ������������ � ������ ������. ������������� ������� ����������, ��� � ������� ������� rpmfiles.pl �������� ������ � ������ ������:
#!/usr/bin/perl
#
# Queries RPM database for given package,
# prints out the files in the package.
# Usage:
# rpmfiles.pl package_name
#
use strict;
use RPM2;
my $rpm_db = RPM2->open_rpm_db();
my $pkg_iter = $rpm_db->find_by_name_iter( $ARGV[0] );
while (my $pkg = $pkg_iter->next() ) {
printFiles( $pkg );
}
$rpm_db->close_rpm_db();
# Prints installation data for one package.
sub printFiles {
my($pkg) = shift;
my $files = arrayToString("\n", $pkg->files() );
print "Files:\n", $files, "\n";
}
sub arrayToString {
my($sep) = shift;
my(@array) = @_;
my($str);
$str = $array[0];
for ( my $i = 1; $i < $#array; $i++ )
{
$str = $str . $sep . $array[$i];
}
return $str;
}
|
�������� ������, ������ ���������:
$ ./rpmfiles.pl jikes
Files:
/usr/bin/jikes
/usr/doc/jikes-1.17/license.htm
|
����� - ��������� ������
����� - �������������� ������� ������
����������