]> git.proxmox.com Git - pve-manager.git/blob - bin/pveversion
list lvm2 and clvm packages with pveversion
[pve-manager.git] / bin / pveversion
1 #!/usr/bin/perl -w
2
3 use strict;
4 use Getopt::Long;
5 use PVE::pvecfg;
6
7 sub read_pkglist {
8
9 my $pkglist = {};
10
11 open (TMP, "dpkg-query --show -f '\${PACKAGE} \${VERSION} \${STATUS}\n'|") ||
12 die "cant exec dpkg-query\n";
13
14 while (defined (my $line = <TMP>)) {
15 if ($line =~ m/^(\S+)\s+(\S+)\s+install\s+ok\s+installed$/) {
16 my ($pkg, $version) = ($1, $2);
17 $pkglist->{$pkg} = $version;
18 }
19 }
20
21 return $pkglist;
22 }
23
24 my $pkglist = read_pkglist();
25
26 sub print_status {
27 my ($pkg, $repoid) = @_;
28
29 my $version = "not correctly installed";
30 if ($pkglist->{$pkg}) {
31 $version = $pkglist->{$pkg};
32 }
33
34 if ($repoid) {
35 print "$pkg: $version ($repoid)\n";
36 } else {
37 print "$pkg: $version\n";
38 }
39 }
40
41 sub print_usage {
42 my $msg = shift;
43
44 print STDERR "ERROR: $msg\n" if $msg;
45 print STDERR "USAGE: pveversion [--verbose]\n";
46
47 }
48
49 my $opt_verbose;
50
51 if (!GetOptions ('verbose' => \$opt_verbose)) {
52 print_usage ();
53 exit (-1);
54 }
55
56 if (scalar (@ARGV) != 0) {
57 print_usage ();
58 exit (-1);
59 }
60
61 my $ver = PVE::pvecfg::package();
62 $ver .= '/';
63 $ver .= PVE::pvecfg::version();
64 $ver .= '/';
65 $ver .= PVE::pvecfg::repoid();
66
67 my $kver = `uname -r`;
68 chomp $kver;
69
70 if (!$opt_verbose) {
71 print "$ver\n";
72 exit (0);
73 }
74
75 print_status ("pve-manager", $ver);
76 print "running kernel: $kver\n";
77
78 my @list = qw(lvm2 clvm corosync-pve openais-pve libqb redhat-cluster-pve pve-cluster qemu-server pve-firmware libpve-common-perl libpve-access-control libpve-storage-perl vncterm vzctl vzdump vzprocps vzquota);
79
80 my $pkg = 'proxmox-ve-2.6.18';
81 if (my $v = $pkglist->{$pkg}) {
82 print "$pkg: $v\n";
83 push @list, 'pve-qemu-kvm-2.6.18';
84
85 }
86 $pkg = 'proxmox-ve-2.6.24';
87 if (my $v = $pkglist->{$pkg}) {
88 print "$pkg: $v\n";
89 push @list, 'pve-qemu-kvm';
90 }
91 $pkg = 'proxmox-ve-2.6.32';
92 if (my $v = $pkglist->{$pkg}) {
93 print "$pkg: $v\n";
94 push @list, 'pve-qemu-kvm';
95 push @list, 'ksm-control-daemon';
96 }
97
98 foreach $pkg (grep { m/^pve-kernel-/ } keys %$pkglist) {
99 print "$pkg: $pkglist->{$pkg}\n";
100 }
101
102 foreach my $p (@list) {
103 print_status ($p);
104 }
105
106 exit 0;
107
108 __END__
109
110 =head1 NAME
111
112 pveversion - Proxmox VE version info
113
114 =head1 SYNOPSIS
115
116 pveversion [--verbose]
117
118 =head1 DESCRIPTION
119
120 Print version information for Proxmox VE packages.