diff --git a/internal/rpicamera/rpicamera.go b/internal/rpicamera/rpicamera.go index bbbe2b09..73ef1377 100644 --- a/internal/rpicamera/rpicamera.go +++ b/internal/rpicamera/rpicamera.go @@ -55,16 +55,26 @@ func checkArch() error { return nil } -func setupSymlink(name string) error { - cmd := exec.Command("sh", "-c", "ldconfig -p | grep "+name+".so | awk '{ print $4 }'") - byts, err := cmd.Output() +func findLibrary(name string) (string, error) { + byts, err := exec.Command("ldconfig", "-p").Output() if err != nil { - return err + return "", err + } + + for _, line := range strings.Split(string(byts), "\n") { + f := strings.Split(line, " => ") + if len(f) == 2 && strings.Contains(f[1], name+".so") { + return f[1], nil + } } - lib := strings.TrimSpace(string(byts)) - if lib == "" { - return fmt.Errorf(name + " not found") + return "", fmt.Errorf("library '%s' not found", name) +} + +func setupSymlink(name string) error { + lib, err := findLibrary(name) + if err != nil { + return err } os.Remove("/dev/shm/" + name + ".so.x.x.x")