[pve-devel] [PATCH pve-nvidia-vgpu-helper v2 5/5] script: install headers for running and newer kernel version only
Hannes Duerr
h.duerr at proxmox.com
Fri Jan 24 15:37:53 CET 2025
also add the new dependency for `libdpkg-perl`
Signed-off-by: Hannes Duerr <h.duerr at proxmox.com>
---
debian/control | 1 +
pve-nvidia-vgpu-helper | 20 ++++++++++++++++----
2 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/debian/control b/debian/control
index 4492b60..352e63a 100644
--- a/debian/control
+++ b/debian/control
@@ -9,6 +9,7 @@ Homepage: https://www.proxmox.com
Package: pve-nvidia-vgpu-helper
Architecture: all
Depends: libapt-pkg-perl,
+ libdpkg-perl,
${misc:Depends},
Description: Proxmox Nvidia vGPU helper script and systemd service
This package provides a script, that helps with installing all required
diff --git a/pve-nvidia-vgpu-helper b/pve-nvidia-vgpu-helper
index 885b879..4c57578 100755
--- a/pve-nvidia-vgpu-helper
+++ b/pve-nvidia-vgpu-helper
@@ -5,6 +5,7 @@ use warnings;
use PVE::Tools qw(run_command);
use AptPkg::Cache;
+use Dpkg::Version;
my @apt_install = qw(apt-get --no-install-recommends install --);
my @dependencies = qw(dkms libc6-dev proxmox-default-headers);
@@ -23,6 +24,16 @@ sub package_is_installed {
}
}
+sub install_newer_headers {
+ my ($running_version, @installed_versions) = @_;
+ for my $version (@installed_versions) {
+ # install header for the running kernel and newer kernel versions
+ if (Dpkg::Version::version_compare($running_version, $version) != 1){
+ package_is_installed("proxmox-headers-$version-pve");
+ }
+ }
+}
+
foreach my $dependency (@dependencies) {
package_is_installed($dependency);
}
@@ -32,17 +43,18 @@ my $running_kernel;
run_command( ['/usr/bin/uname', '-r' ],
outfunc => sub { $running_kernel = shift } );
+my @installed_versions;
run_command(['/usr/bin/dpkg-query', '-W', 'proxmox-kernel-*-pve'],
outfunc => sub {
my $installed_kernel = shift;
- $installed_kernel =~ s/^\s*proxmox-kernel(-\d+.\d+.\d+-\d+-pve)\s*$/proxmox-headers$1/;
- package_is_installed($installed_kernel);
+ $installed_kernel =~ m/^\s*proxmox-kernel-(\d+.\d+.\d+-\d+)-pve\s*$/;
+ push(@installed_versions, $1);
});
-
-if ($running_kernel =~ m/^\d+\.\d+\.\d+-\d+-pve$/) {
+if ($running_kernel =~ m/^(\d+\.\d+\.\d+-\d+)-pve$/) {
print "You are running the proxmox kernel `proxmox-kernel-$running_kernel`\n";
+ install_newer_headers($1, @installed_versions);
} else {
die "You are not using a proxmox-kernel, please make sure that the appropriate header package is installed.\n";
}
--
2.39.5
More information about the pve-devel
mailing list