My error message when trying to run minikube from a guix shell is bash: /gnu/store/ixry3pdrrb52mdiypmlrdn19c7gcc5r4-minikube-1.31.2/bin/minikube: No such file or directory
According to ldd and file, it looks like everything is hunky dory as far as where all my linkers are pointing. I'm also including an strace further below. I've run out of options for debugging this and would welcome any feedback and suggestions!
ldd shows what looks like clean RPATHs:
/gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35/lib/libc.so.6 (0x00007f9299546000)
libpthread.so.0 => /gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35/lib/libpthread.so.0 (0x00007f9299541000)
libresolv.so.2 => /gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35/lib/libresolv.so.2 (0x00007f929952e000)
/lib64/ld-linux-x86-64.so.2 => /gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35/lib/ld-linux-x86-64.so.2 (0x00007f9299744000)
Here's file:
/gnu/store/xhyv7k87gy9k368yrv6faray37z615cr-minikube-1.31.2/bin/minikube: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35/lib/ld-linux-x86-64.so.2, Go BuildID=aBEWfkldQzf4mlUsITym/a6aHGcy9omlZPRTvR8ta/1-lUpI-DPce979zTpJQy/jMuF_0TfmkRW2e3NFst2, not stripped
And strace:
Error:
strace /gnu/store/xhyv7k87gy9k368yrv6faray37z615cr-minikube-1.31.2/bin/minikube
execve("/gnu/store/xhyv7k87gy9k368yrv6faray37z615cr-minikube-1.31.2/bin/minikube", ["/gnu/store/xhyv7k87gy9k368yrv6fa"...], 0x7ffc5f304810 /* 109 vars */) = 0
brk(NULL) = 0x50b7000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2daf26c000
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_ACCERR, si_addr=0x400318} ---
+++ killed by SIGSEGV +++
Segmentation fault
(define-module (worldofguix packages minikube)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module ((guix licenses) :prefix license:)
#:use-module (guix gexp)
#:use-module (gnu packages gcc)
#:use-module (gnu packages commencement)
#:use-module (nonguix build-system binary))
(define-public minikube
(package
(name "minikube")
(version "1.31.2")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/kubernetes/minikube/releases/download/v" version "/minikube-linux-amd64"))
(sha256
(base32
"16vi7b6vkapc2w3f2yx8mzany5qqvrgvlshc58dambcn2q2hra48"))))
(build-system binary-build-system)
(inputs `((,gcc "lib")
,gcc-toolchain))
(arguments
(list
#:substitutable? #f
#:patchelf-plan
#~'(("./minikube"
("gcc" "gcc-toolchain")))
#:install-plan
#~'(("minikube" "bin/"))
#:phases
#~(modify-phases %standard-phases
(replace 'unpack
(lambda _
(copy-file #$source "./minikube")
(chmod "minikube" #o644)))
(add-before 'install 'chmod
(lambda _
(chmod "minikube" #o555))))))
(home-page "https://minikube.sigs.k8s.io")
(synopsis "minikube is a tool for running local Kubernetes clusters.")
(description "minikube implements a local Kubernetes cluster. minikube's primary goals are to be the best tool for local Kubernetes application development and to support all Kubernetes features that fit.")
(license license:asl2.0)))
minikube
4 Comments
rrobin@lemmy.world · 2 pts · 2y
Looks like a segfault at the end there. Can you try and get a backtrace with gdb?
Also the SEGV_ACCERR seems to mean permission denied (no idea here, maybe related to the earlier mmap?)
worldofgeese@lemmy.world · 1 pts · 2y
Hey there, sorry for the wait! This is my first time using
gdb. Here's what I got:rrobin@lemmy.world · 2 pts · 2y
Ok not much help there, for what is worth I tried building your recipe here. The full backtrace is not helpful - it just shows that the linker failed to run the binary:
Strangely my ldd shows nothing for the final minikube binary. file does show the guix interpreter though and it looks good:
readelf is a bit more helpful than ldd:
Another way to check rpath is to use patchelf
The one thing that stands out to me there is that runpath lacks glibc. I also don't know why gcc is in there (but it was in the build recipe).
So I added the libc to the runpath (your paths will be different)
and voila
I never used patchelf-plan, so I'm not sure what you should do there, but maybe find other recipes that use it? I see some in nonguix that add glibc there.
fishinthecalculator@lemmy.ml · 1 pts · 2y
not sure if it's still useful, I sometimes use this script to find out which executable file depend on which shared library in a fs tree. maybe it can help you too