Summary: | %post scriptlet failed при установке пакета i586-java-11-openjdk-headless | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Alexander Makeenkov <amakeenk> |
Component: | java-11-openjdk-headless | Assignee: | Andrey Cherepanov <cas> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P5 | CC: | aen, antohami, cas, rider, viy |
Version: | unstable | ||
Hardware: | x86_64 | ||
OS: | Linux | ||
See Also: |
https://bugzilla.altlinux.org/show_bug.cgi?id=41264 https://bugzilla.altlinux.org/show_bug.cgi?id=41138 |
Description
Alexander Makeenkov
2021-08-31 10:53:44 MSK
Предположительно не выполняется %post headless java=%{jrebindir}/java if [ -f /proc/cpuinfo ] && ! [ -d /.ours ] ; then #real workstation; not a mkimage-profile, etc $java -Xshare:dump >/dev/null 2>/dev/null fi Нужно, чтобы после условия была пустая операция. Невыполнение условия не должно приводить к ошибке. Смотреть также: https://lists.altlinux.org/pipermail/devel-distro/2021-November/002634.html Проблема наблюдается при сборке образов в mkimage-profiles с этим пакетом. судя по тому, что делает операция java -Xshare:dump - в процессе подготовки livecd её нужно обязательно выполнить. java -Xshare:dump фича появилась во времена java 8: https://docs.oracle.com/javase/8/docs/technotes/guides/vm/class-data-sharing.html Class data sharing (CDS) helps reduce the startup time for Java programming language applications, in particular smaller applications, as well as reduce footprint. When the JRE is installed using the installer, the installer loads a set of classes from the system jar file into a private internal representation, and dumps that representation to a file, called a "shared archive". If the JRE installer is not being used, this can be done manually, as explained below. During subsequent JVM invocations, the shared archive is memory-mapped in, saving the cost of loading those classes and allowing much of the JVM's metadata for these classes to be shared among multiple JVM processes. Т.е. создаем дамп, который будет ускорять запуск JVM. Стоит ли на этапе mkimage делать - не всегда понятно. Для live, наверное стоит. Для install - наверное, нет. Я последнее время не собираю java 11, со стороны могу посоветовать зайти в chroot, выполнить команду руками и посмотреть, почему java11 ругается. В связи с распилом rt.jar в Jigsaw на части в новой версии могли и отменить эту команду, или существенно изменить ее синтаксис, так, что старый вызов больше не работает. (Ответ для viy на комментарий #3) > java -Xshare:dump > > фича появилась во времена java 8: > > https://docs.oracle.com/javase/8/docs/technotes/guides/vm/class-data-sharing. > html > > Class data sharing (CDS) helps reduce the startup time for Java programming > language applications, in particular smaller applications, as well as reduce > footprint. When the JRE is installed using the installer, the installer > loads a set of classes from the system jar file into a private internal > representation, and dumps that representation to a file, called a "shared > archive". If the JRE installer is not being used, this can be done manually, > as explained below. During subsequent JVM invocations, the shared archive is > memory-mapped in, saving the cost of loading those classes and allowing much > of the JVM's metadata for these classes to be shared among multiple JVM > processes. > > Т.е. создаем дамп, который будет ускорять запуск JVM. > Стоит ли на этапе mkimage делать - не всегда понятно. Для live, наверное > стоит. > Для install - наверное, нет. > > Я последнее время не собираю java 11, со стороны могу посоветовать зайти в > chroot, выполнить команду руками и посмотреть, почему java11 ругается. > В связи с распилом rt.jar в Jigsaw на части в новой версии могли и отменить > эту команду, или существенно изменить ее синтаксис, так, что старый вызов > больше не работает. Игорь, пожалуйста, помогите Андрею починить. (Ответ для viy на комментарий #3) > java -Xshare:dump > > фича появилась во времена java 8: > > https://docs.oracle.com/javase/8/docs/technotes/guides/vm/class-data-sharing. > html > > Class data sharing (CDS) helps reduce the startup time for Java programming > language applications, in particular smaller applications, as well as reduce > footprint. When the JRE is installed using the installer, the installer > loads a set of classes from the system jar file into a private internal > representation, and dumps that representation to a file, called a "shared > archive". If the JRE installer is not being used, this can be done manually, > as explained below. During subsequent JVM invocations, the shared archive is > memory-mapped in, saving the cost of loading those classes and allowing much > of the JVM's metadata for these classes to be shared among multiple JVM > processes. > > Т.е. создаем дамп, который будет ускорять запуск JVM. > Стоит ли на этапе mkimage делать - не всегда понятно. Для live, наверное > стоит. > Для install - наверное, нет. > > Я последнее время не собираю java 11, со стороны могу посоветовать зайти в > chroot, выполнить команду руками и посмотреть, почему java11 ругается. > В связи с распилом rt.jar в Jigsaw на части в новой версии могли и отменить > эту команду, или существенно изменить ее синтаксис, так, что старый вызов > больше не работает. Проблема на всех java. Проблема в том, что когда условие не выполняется, возникает ошибка. Нужно пустую команду выполнять после условия или в else этого условия что-то делать, ту же пустую команду. (Ответ для Антон Мидюков на комментарий #5) > > Проблема на всех java. Проблема в том, что когда условие не выполняется, > возникает ошибка. Нужно пустую команду выполнять после условия или в else > этого условия что-то делать, ту же пустую команду. Проблема в mkimage-profiles о другом. В условии ошибка. Должно быть: if [ -f /proc/cpuinfo ] && ! [ -d /.our ] а не if [ -f /proc/cpuinfo ] && ! [ -d /.ours ] (Ответ для viy на комментарий #3) > Я последнее время не собираю java 11, со стороны могу посоветовать зайти в > chroot, выполнить команду руками и посмотреть, почему java11 ругается. > В связи с распилом rt.jar в Jigsaw на части в новой версии могли и отменить > эту команду, или существенно изменить ее синтаксис, так, что старый вызов > больше не работает. rpm -q --scripts java-11-openjdk-headless postinstall scriptlet (using /bin/sh): # java should be available ASAP [ -x /usr/bin/alternatives-update ] && /usr/bin/alternatives-update ||: # MetaspaceShared::generate_vtable_methods not implemented for PPC JIT #see https://bugzilla.redhat.com/show_bug.cgi?id=513605 java=/usr/lib/jvm/java-11-openjdk-11.0.9.11-0.3.ea.x86_64/bin/java if [ -f /proc/cpuinfo ] && ! [ -d /.ours ] ; then #real workstation; not a mkimage-profile, etc $java -Xshare:dump >/dev/null 2>/dev/null fi [root@comp-e2-1800-apu-2fb06e /]# java=/usr/lib/jvm/java-11-openjdk-11.0.9.11-0.3.ea.x86_64/bin/java [root@comp-e2-1800-apu-2fb06e /]# $java -Xshare:dump /usr/lib/jvm/java-11-openjdk-11.0.9.11-0.3.ea.x86_64/bin/java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory [root@comp-e2-1800-apu-2fb06e /]# rpm -ql java-11-openjdk-headless |grep libjli.so /usr/lib/jvm/java-11-openjdk-11.0.9.11-0.3.ea.x86_64/lib/jli/libjli.so Теперь, собственно, по этому багу: rpm -q --scripts i586-java-11-openjdk-headless java=/usr/lib/jvm/java-11-openjdk-11.0.13.0.8-0.i586/bin/java if [ -f /proc/cpuinfo ] && ! [ -d /.ours ] ; then #real workstation; not a mkimage-profile, etc $java -Xshare:dump >/dev/null 2>/dev/null fi /usr/lib/jvm/java-11-openjdk-11.0.13.0.8-0.i586/bin/java в i586-java-11-openjdk-headless действительно нет. (Ответ для AEN на комментарий #4) > Игорь, пожалуйста, помогите Андрею починить. Да, я на связи, готов помочь. java-11-openjdk-0:11.0.13.8-alt2_1jpp11 -> sisyphus: Tue Nov 02 2021 Andrey Cherepanov <cas@altlinux> 0:11.0.13.8-alt2_1jpp11 - Ignore possible fail of %post scriptlet (ALT #40831). - Optionally disable %check by default. |