Summary: | Alterator-kiosk не открывает projectlibre при выбранном профиле | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Анастасия Кирюхина <kiriukhinaaa> | ||||||
Component: | java-11-openjdk | Assignee: | viy <viy> | ||||||
Status: | REOPENED --- | QA Contact: | qa-sisyphus | ||||||
Severity: | normal | ||||||||
Priority: | P5 | CC: | amakeenk, cas, mcpain, underwit, vercha, viy, zerg | ||||||
Version: | unstable | ||||||||
Hardware: | x86_64 | ||||||||
OS: | Linux | ||||||||
Attachments: |
|
Description
Анастасия Кирюхина
2022-05-06 12:11:14 MSK
[test@host-240 trace]$ java java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory [test@host-240 trace]$ ldd `which java` linux-vdso.so.1 (0x00007ffdc4b29000) libjli.so => not found libc.so.6 => /lib64/libc.so.6 (0x00007f2215309000) /lib64/ld-linux-x86-64.so.2 (0x00007f2215532000) [test@host-240 trace]$ rpm -qf `which java` java-11-openjdk-headless-11.0.14.1.1-alt2_1jpp11.x86_64 Либа неизвестно где, ldd её не находит, а kiosk игнорирует LD_PRELOAD и LD_LIBRARY_PATH, поэтому java не работает. Перевешиваю. Видимо, работоспособность java+kiosk будет возможна только когда она будет установлена в системное место и при такой установке более одной версии одновременно в системе быть не сможет. (Ответ для Sergey V Turchin на комментарий #2) > Видимо, работоспособность java+kiosk будет возможна только когда она будет > установлена в системное место и при такой установке более одной версии > одновременно в системе быть не сможет. Если java устеновлена не в системное место, нужно экспортировать переменную JAVA_JOME=/path/to/new/place (Ответ для viy на комментарий #3) > Если java устеновлена не в системное место Она и установлена НЕ в системное место в наших пакетах, поэтому возможна одновременная установка нескольких наборов библиотек и использование через LD_LIBRARY_PATH=/не/системное/место/java-NN. Только LD_* переменные не совместимы с kiosk. (Ответ для Sergey V Turchin на комментарий #4) > (Ответ для viy на комментарий #3) > > Если java устеновлена не в системное место > Она и установлена НЕ в системное место в наших пакетах, поэтому возможна > одновременная установка нескольких наборов библиотек и использование через > LD_LIBRARY_PATH=/не/системное/место/java-NN. > > Только LD_* переменные не совместимы с kiosk. По хорошему java для нормальной работы нужна установленная переменная JAVA_HOME. LD_LIBRARY_PATH недостаточно. так что переменную JAVA_HOME устанавливать надо. Кстати. Вы случайно не наследуете откуда-нибудь неправильное значение JAVA_HOME? или оно у вас пусто? В любом случае, надо настраивать профиль киоска, чтобы JAVA_HOME было установлено в правильное значение. Никто ничего не трогал. kiosk запрещает использовать переменные LD_* https://www.altlinux.org/kiosk Java не работает с kiosk. (In reply to viy from comment #5) > В любом случае, надо настраивать профиль киоска, > чтобы JAVA_HOME было установлено в правильное значение. Киоск не занимается перемещением java из того каталога, куда его положил ментейнер. Киоск занимается тем, что запрещает пользователю запускать что попало, в том числе не даёт подсунуть через LD_PRELOAD или LD_LIBRARY_PATH принесённые с собой библиотеки. Поэтому при запуске java ругается на отсутствующую библиотеку, потому что LD_* принудительно сбрасываются (и это сделано специально). А значит, нужно сделать так, чтобы java находила эту библиотеку. Если от JAVA_HOME зависит LD_LIBRARY_PATH, то установка правильного JAVA_HOME не будет являться достаточным условием для запуска java. (Ответ для Олег Соловьев на комментарий #7) > Если от JAVA_HOME зависит LD_LIBRARY_PATH, то установка правильного > JAVA_HOME не будет являться достаточным условием для запуска java. Насколько я понимаю, для запуска java достаточно JAVA_HOME. В обычной системе JAVA_HOME выставляется через /etc/profile.d env | grep JAVA_HOME JAVA_HOME=/usr/lib/jvm/java поэтому в обычной системе java работает. Запустите в киоске терминал, а в нем env | grep JAVA_HOME если есть JAVA_HOME=/usr/lib/jvm/java, а java не работает, то это проблема для jvm team. Если нет JAVA_HOME=/usr/lib/jvm/java и а java не работает, то это проблема настройки kiosk. И еще тупой (Ответ для viy на комментарий #9) > И еще тупой И еще тупой вопрос: раньше оно работало? С более старыми версиями java? (In reply to viy from comment #8) > если есть JAVA_HOME=/usr/lib/jvm/java, а java не работает, то это проблема > для jvm team. > Если нет JAVA_HOME=/usr/lib/jvm/java и а java не работает, то это проблема > настройки kiosk. kiosk не влияет на JAVA_HOME. если java требует для своей работы LD_PRELOAD, то это проблема для jvm team, т.к. kiosk блокирует такой механизм и это не настраивается. 1) После установки projectlibre JAVA_HOME появился только после перезахода в систему. Отсутствие этой переменной окружения не мешает java запускаться. 2) После перезагрузки и включения киоска JAVA_HOME никуда не делся: >$ env | grep JAVA >JAVA_HOME=/usr/lib/jvm/jre но java запускаться отказывается: >$ projectlibre >Starting projectlibre version 1.9.1 ... >with options : >java: error while loading shared libraries: libjli.so: cannot open shared >object file: No such file or directory (In reply to viy from comment #10) > И еще тупой вопрос: раньше оно работало? С более старыми версиями java? java 1.8.0 тоже не запускается из-под kiosk $ chrpath -l `which java` /usr/bin/java: RPATH=$ORIGIN/../lib/jli:$ORIGIN/../lib подсказали, что RPATH в secure-execution mode игнорируется: https://man7.org/linux/man-pages/man8/ld.so.8.html (Ответ для Олег Соловьев на комментарий #14) > подсказали, что RPATH в secure-execution mode игнорируется: > https://man7.org/linux/man-pages/man8/ld.so.8.html Как вариант, предлагаю вам собрать пакеты java-11-openjdk-headless-kiosk java-11-openjdk-kiosk *опционально* java-1.8.0-openjdk-headless-kiosk *опционально* java-1.8.0-openjdk-kiosk (тогда ставим конфликты! java-1.8.0-openjdk-headless-kiosk Conflicts java-11-openjdk-headless-kiosk ...) где пакуем в %_libdir симлинки на /usr/lib/jvm/jre-11-openjdk/lib/{,server}/*.so Подчеркну, на альтернативу /usr/lib/jvm/jre-11-openjdk !!! Если там вдруг вылезут симлинки на реальный каталог вида /usr/lib/jvm/java-11-openjdk-11.0.14.1.1-0.x86_64/ то такое очень плохо, нужно было бы каждый раз пересобирать java-1.8.0-openjdk-kiosk с новым релизом jvm. Должно помочь. Created attachment 10726 [details]
kiosk ld debug
А вот и подтверждение, что RPATH игнорируется
Created attachment 10727 [details]
nokiosk ld debug
Для сравнения обычный запуск java с LD_DEBUG=all
Для получения первого лога пришлось патчить glibc, т.к. LD_DEBUG тоже вычищается в secure execution mode.
|