����� ������������ OpenNet.ru / ������ "������������ ��� Linux" / ������

17.3.5 ��������� ���������� � �������

��������� 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

����� - ��������� ������
����� - �������������� ������� ������
����������


����� ������������ �� OpenNet.ru