summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
503bd49)
It turns out that the distribution hierarchy is not as reliable concept as you
might think. This patch removes distrofamily again.
Instead of distrofamily, we will add feature tags. This patch adds 2 feature
tags for Linux distributions:
package_format (eg rpm/dpkg)
package_management (eg rhn/yum/apt)
This change is reflected in the output of virt-inspector
print $os->{os}, " " if exists $os->{os};
print $os->{distro}, " " if exists $os->{distro};
print $os->{version}, " " if exists $os->{version};
print $os->{os}, " " if exists $os->{os};
print $os->{distro}, " " if exists $os->{distro};
print $os->{version}, " " if exists $os->{version};
- print "(".$os->{distrofamily}." family)", " " if exists $os->{distrofamily};
print "on ", $os->{root_device}, ":\n";
print __" Mountpoints:\n";
print "on ", $os->{root_device}, ":\n";
print __" Mountpoints:\n";
foreach ( [ "name" => "os" ],
[ "distro" => "distro" ],
foreach ( [ "name" => "os" ],
[ "distro" => "distro" ],
- [ "distrofamily" => "distrofamily" ],
[ "version" => "version" ],
[ "version" => "version" ],
+ [ "package_format" => "package_format" ],
+ [ "package_management" => "package_management" ],
[ "root" => "root_device" ] ) {
$xml->dataElement($_->[0], $os->{$_->[1]}) if exists $os->{$_->[1]};
}
[ "root" => "root_device" ] ) {
$xml->dataElement($_->[0], $os->{$_->[1]}) if exists $os->{$_->[1]};
}
Operating system distribution. One of: "fedora", "rhel", "centos",
"scientific", "debian".
Operating system distribution. One of: "fedora", "rhel", "centos",
"scientific", "debian".
(For Linux root partitions only)
(For Linux root partitions only)
-Operating system distribution family. One of: "redhat", "debian".
+The package format used by the guest distribution. One of: "rpm", "dpkg".
+
+=item package_management
+
+(For Linux root partitions only)
+The package management tool used by the guest distribution. One of: "rhn",
+"yum", "apt".
# Look into /etc to see if we recognise the operating system.
if ($g->is_file ("/etc/redhat-release")) {
# Look into /etc to see if we recognise the operating system.
if ($g->is_file ("/etc/redhat-release")) {
- $r->{osdistrofamily} = "redhat";
+ $r->{package_format} = "rpm";
$_ = $g->cat ("/etc/redhat-release");
if (/Fedora release (\d+\.\d+)/) {
$r->{osdistro} = "fedora";
$_ = $g->cat ("/etc/redhat-release");
if (/Fedora release (\d+\.\d+)/) {
$r->{osdistro} = "fedora";
+ $r->{osversion} = "$1";
+ $r->{package_management} = "yum";
}
elsif (/(Red Hat Enterprise Linux|CentOS|Scientific Linux)/) {
}
elsif (/(Red Hat Enterprise Linux|CentOS|Scientific Linux)/) {
elsif($distro eq "CentOS") {
$r->{osdistro} = "centos";
elsif($distro eq "CentOS") {
$r->{osdistro} = "centos";
+ $r->{package_management} = "yum";
}
elsif($distro eq "Scientific Linux") {
$r->{osdistro} = "scientific";
}
elsif($distro eq "Scientific Linux") {
$r->{osdistro} = "scientific";
+ $r->{package_management} = "yum";
}
# Shouldn't be possible
}
# Shouldn't be possible
elsif (/$distro.*release (\d+(?:\.(?:\d+))?)/) {
$r->{osversion} = "$1";
}
elsif (/$distro.*release (\d+(?:\.(?:\d+))?)/) {
$r->{osversion} = "$1";
}
+
+ # Package management in RHEL changed in version 5
+ if ($r->{osdistro} eq "rhel") {
+ if ($r->{osversion} >= 5) {
+ $r->{package_management} = "yum";
+ } else {
+ $r->{package_management} = "rhn";
+ }
+ }
}
else {
$r->{osdistro} = "redhat-based";
}
} elsif ($g->is_file ("/etc/debian_version")) {
}
else {
$r->{osdistro} = "redhat-based";
}
} elsif ($g->is_file ("/etc/debian_version")) {
- $r->{osdistrofamily} = "debian";
+ $r->{package_format} = "dpkg";
+ $r->{package_management} = "apt";
$_ = $g->cat ("/etc/debian_version");
if (/(\d+\.\d+)/) {
$_ = $g->cat ("/etc/debian_version");
if (/(\d+\.\d+)/) {
$r->{os} = $r->{root}->{fsos} if exists $r->{root}->{fsos};
$r->{distro} = $r->{root}->{osdistro} if exists $r->{root}->{osdistro};
$r->{os} = $r->{root}->{fsos} if exists $r->{root}->{fsos};
$r->{distro} = $r->{root}->{osdistro} if exists $r->{root}->{osdistro};
- $r->{distrofamily} = $r->{root}->{osdistrofamily}
- if exists $r->{root}->{osdistrofamily};
$r->{version} = $r->{root}->{osversion} if exists $r->{root}->{osversion};
$r->{version} = $r->{root}->{osversion} if exists $r->{root}->{osversion};
+ $r->{package_format} = $r->{root}->{package_format}
+ if exists $r->{root}->{package_format};
+ $r->{package_management} = $r->{root}->{package_management}
+ if exists $r->{root}->{package_management};
}
sub _assign_mount_points
}
sub _assign_mount_points
my $osn = $os->{os};
if ($osn eq "linux") {
my $osn = $os->{os};
if ($osn eq "linux") {
- my $family = $os->{distrofamily};
- if (defined $family && $family eq "redhat") {
+ my $package_format = $os->{package_format};
+ if (defined $package_format && $package_format eq "rpm") {
my @lines = $g->command_lines
(["rpm",
"-q", "-a",
my @lines = $g->command_lines
(["rpm",
"-q", "-a",