Разница между openjdk-6-jre, openjdk-6-jre-безголовый, openjdk-6-jre-lib

#java #openjdk

#java

Вопрос:

У меня возникли проблемы с пониманием некоторых основ Java JRE.

Мне нужно запустить код Java во встроенной системе, и для этого мне нужна минимальная среда выполнения Java, установленная в ядре Linux, то есть минимальный пакет, необходимый для выполнения двоичных файлов Java. Я думаю, что это невозможно сделать только с помощью JVM (необходим пакет JRE, я здесь не прав?)

Дело в том, что при просмотре репозиториев Debian я не совсем понимаю различия между пакетами openjdk-6-jre openjdk-6-jre-headless и openjdk-6-jre-lib . Будут ли программы Java запускаться только с первым? или нужны ли все три из них?

Это проблема, поскольку между ними существует большая разница в размере (МБ).

Ответ №1:

Вы правы в том, что вам понадобится пакет JRE для запуска любого приложения Java.

Поскольку вы говорите, что работаете на встроенной платформе, я предполагаю, что приложение Java, которое вы хотите запустить, не имеет графического интерфейса. В этом случае вас все устроит openjdk-6-jre-headless . Это объясняется на странице пакета openjdk-6-jre-headless здесь «Минимальная среда выполнения Java — необходима для выполнения Java-программ, отличных от GUI».

Как вы можете видеть на странице сведений о пакете debian, зависит от openjdk-6-jre-headless openjdk-6-jre-lib (среди других пакетов), так что он будет установлен в любом случае.

Однако, если приложение Java, которое вы хотите запустить, имеет графический интерфейс, вам потребуется openjdk-6-jre вместо openjdk-6-jre-headless

Комментарии:

1. Большое вам спасибо. На самом деле мне нужно скомпилировать ядро Linux 2.6 … для этой платформы, и я не уверен, возможно ли включить в процесс сборки jre (любую версию, наименьший размер, если это возможно). Вы знаете, возможно ли это?

2. Если вы имеете в виду включить jre с ядром, то, насколько я знаю, это невозможно — jre живет в пользовательском пространстве, а не в ядре.

3. Ссылка сообщает об ошибке: «указано два или более пакетов (openjdk-6-jre-безголовый squeeze)».

4. как насчет различий между openjdk-11-jdk-headless и openjdk-11-jdk в Linux (ubuntu 18.10), где мы можем найти относительную информацию?

5. Вы можете искать пакеты Ubuntu здесь: packages.ubuntu.com Релевантными из них, которые вы ищете, являются packages.ubuntu.com/cosmic/openjdk-11-jdk-headless и packages.ubuntu.com/cosmic/openjdk-11-jdk

Ответ №2:

Основной причиной наличия двух разных доступных пакетов являются зависимости пакетов. openjdk-6-jre также будет зависеть от:

 libasound2, libgif4, libjpeg62, libpng12-0, libpulse0 , libx11-6, libxext6, libxi6, libxrender1, libxtst6 and zlib1g
  

И, вопреки предыдущему комментарию openjdk-6-jre , зависит от openjdk-6-jre-headless того, что делает последнее действительно просто подмножеством.