From 0ac2fc82cf28738208919fdef2b936901a3950a3 Mon Sep 17 00:00:00 2001 From: admin Date: Sat, 1 Aug 2026 16:21:51 +0000 Subject: [PATCH] fix: try all package managers for NGINX, clear error if all fail --- internal/native/native.go | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/internal/native/native.go b/internal/native/native.go index 7b9fc11..6e37fa5 100644 --- a/internal/native/native.go +++ b/internal/native/native.go @@ -235,13 +235,36 @@ func CreateNodesDir() error { } // installNginx ensures NGINX is present on the system. +// Tries apt, yum, dnf, apk — prints clear error if all fail. func installNginx() { if _, err := exec.LookPath("nginx"); err == nil { return } fmt.Println("Installing NGINX (required by Wallarm node)...") - exec.Command("apt-get", "update", "-qq").Run() - exec.Command("apt-get", "install", "-y", "-qq", "nginx").Run() + + // Try common package managers + for _, pm := range [][]string{ + {"apt-get", "update", "-qq"}, + {"apt-get", "install", "-y", "-qq", "nginx"}, + {"yum", "install", "-y", "-q", "nginx"}, + {"dnf", "install", "-y", "-q", "nginx"}, + {"apk", "add", "--no-cache", "nginx"}, + } { + if _, err := exec.LookPath(pm[0]); err == nil { + cmd := exec.Command(pm[0], pm[1:]...) + if out, err := cmd.CombinedOutput(); err == nil { + fmt.Println(" Installed via", pm[0]) + return + } else { + _ = out + } + } + } + + // If all fail, print instructions + fmt.Println("Could not install NGINX automatically.") + fmt.Println("Install it manually: apt-get install nginx") + fmt.Println("Then re-run the deployment.") } // cloudFromHost maps API host to cloud region code (US/EU/ME).