Hi Lucas, Niko, Niko Tyni (Sat, Jan 21, 2023 at 02:41:28PM +0000): > Control: clone -1 -2 > Control: retitle -2 jexec: can't locate java: No such file or directory > Control: reassign -2 openjdk-17-jre-headless 17.0.5+8-2 > > On Wed, Jan 18, 2023 at 04:10:02AM +0100, Ángel wrote: > > The error here is that ./debian/build-final-ckeditor.sh fails with > > « can't locate java: No such file or directory » > > > > This script is actually calling ckbuilder ( jexec /usr/bin/ckbuilder -- > > build ... )
<TLDR> please just use "java -jar /usr/bin/ckbuilder" instead, details below. </TLDR> > > > > However, the package correctly lists ckbuilder as a build-dep, and > > ckbuilder itself depends on java ( default-jre | java{7..11}-runtime) > > > > update-alternatives: using /usr/lib/jvm/java-17-openjdk- > > > amd64/lib/jexec to provide /usr/bin/jexec (jexec) in auto mode > > Yeah, it looks to me like jexec from openjdk-17-jre-headless > is just broken on sid? Yes and it somewhat has ever been broken with regard to the way it is being shipped within Debian. The sole purpose for jexec is to use readlink(3) to find the correct path of bin/java and execute a jar with a certian version of java. (and to enable double click executions of jar files by binfmt magic). This of course only works by invoking jexec with an absolute path, e.g. running "/usr/bin/jexec /usr/bin/ckbuilder" should fix this. All JDK source packages ship with patches to jexec to somehow "emulate" this behaviour, which looks less than ideal to me. ;) openjdk-8-8u352-ga/debian/patches/jexec.diff.in openjdk-11-11.0.17+8/debian/patches/jexec.diff openjdk-17-17.0.5+8/debian/patches/jexec.diff Open JDK 8 (pass) ----------------------------------------------------------------------- readlink -sf /etc/alternatives/jexec => /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jexec $ strace -e execve jexec 2>&1 |grep -E '(jexec|java)' execve("/usr/bin/jexec", ["jexec"], 0x7ffd7c115b50 /* 59 vars */) = 0 execve("/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java", ["/usr/lib/jvm/java-8-openjdk-amd6"..., "-jar"], 0x7ffd657e2a18 /* 59 vars */) = 0 Open JDK 11 (pass) ----------------------------------------------------------------------- readlink -sf /etc/alternatives/jexec => /usr/lib/jvm/java-11-openjdk-amd64/lib/jexec $ strace -e execve jexec 2>&1 |grep -E '(jexec|java)' execve("/usr/bin/jexec", ["jexec"], 0x7ffed43a0f20 /* 59 vars */) = 0 execve("/usr/lib/jvm/java-11-openjdk-amd64/bin/java", ["/usr/lib/jvm/java-11-openjdk-amd"..., "-jar"], 0x7ffdc7e44058 /* 59 vars */) = 0 Open JDK 17 (fail) ----------------------------------------------------------------------- readlink -f /bin/jexec => /usr/lib/jvm/java-17-openjdk-amd64/lib/jexec $ strace -e execve jexec 2>&1 |grep -E '(jexec|java)' execve("/usr/bin/jexec", ["jexec"], 0x7fffb95f2cc0 /* 59 vars */) = 0 can't locate java: No such file or directory To make things complicated further: what about users deciding to use antoher JDK e.g. the (former Adoptium) Eclipse Temurin builds? (everyone has to remember the "portability" joke right here:) Temurin JDK 8 (fail) ----------------------------------------------------------------------- readlink -sf /etc/alternatives/jexec => /usr/lib/jvm/temurin-8-jdk-amd64/lib/jexec $ strace -e execve jexec 2>&1 |grep -E '(jexec|java)' execve("/usr/bin/jexec", ["jexec"], 0x7ffe6c1b9320 /* 59 vars */) = 0 can't locate java: No such file or directory Temurin JDK 11 (fail) ----------------------------------------------------------------------- readlink -sf /etc/alternatives/jexec => /usr/lib/jvm/temurin-11-jdk-amd64/lib/jexec $ strace -e execve jexec 2>&1 |grep -E '(jexec|java)' execve("/usr/bin/jexec", ["jexec"], 0x7fff1d218450 /* 59 vars */) = 0 can't locate java: No such file or directory Temurin JDK 17 (fail) ----------------------------------------------------------------------- readlink -sf /etc/alternatives/jexec => /usr/lib/jvm/temurin-17-jdk-amd64/lib/jexec $ strace -e execve jexec 2>&1 |grep -E '(jexec|java)' execve("/usr/bin/jexec", ["jexec"], 0x7ffd110128b0 /* 59 vars */) = 0 can't locate java: No such file or directory > I'm cloning a separate bug about this. Yes, to be discussed further in #1029342 > Not sure why jexec is used here though. Just running /usr/bin/ckbuilder > works for me (but the request-tracker5 build fails later, presumably > due to a different bug.) see my TLDR above > -- > Niko Tyni nt...@debian.org BR bert schulze