LINUX.ORG.RU

Как в RPM spec прописать зависимость от Java ?

 ,


0

1

Никаки не могу понять, как же прописать в rpm spec зависимость от ЛЮБОЙ java старше 1.6. CentOS, например, поставляет java-1.X.X-openjdk - мне подходит. Но если пользователь уже установил jre или jdk с Oracle - не заставлять же мне его устанавливать в довесок openjdk ? Provides'ы, выдаваемые этими пакетами, на мой слабо искушенный взгляд, не позволяют корректный Require.

Если указать require: java, начинает ставить java-1.5 :( А он мне уже не подходит.

Больно не пинайте, где-то у меня клин в мозгу случился.

Ответ на: комментарий от dinn

[root@localhost noarch]# rpm -Uvh myprogram-11.18.0-1.noarch.rpm error: Failed dependencies: java>=1.6 is needed by fastcom_frp-11.18.0-1.noarch

[root@localhost noarch]# java -version java version «1.7.0_06» Java(TM) SE Runtime Environment (build 1.7.0_06-b24) Java HotSpot(TM) 64-Bit Server VM (build 23.2-b09, mixed mode) [root@localhost noarch]# grep Require ../../SPECS/myprogram-11.18.0-noarch.spec Requires: java>=1.6, nc [root@localhost noarch]#

java установлена из rpm'ки, скачанной с oracle.com

Qzmich ()
Ответ на: комментарий от Qzmich

Если втупую - посмотри, что provides эта оракловая RPM-ка; если правильно - у твоего дистра должна быть какая-то Java policy.

И перестань работать про рутом.

tailgunner ★★★★★ ()
Последнее исправление: tailgunner (всего исправлений: 2)
Ответ на: комментарий от Qzmich

java>=1.6

Прямо так и вписал в spec, без пробелов до и после «>=»? Тогда точно не заработает.

dinn ★★★★★ ()
Последнее исправление: dinn (всего исправлений: 1)
Ответ на: комментарий от tailgunner

[root@localhost kuzmich]# rpm -qp -provides jdk-7u6-linux-x64.rpm
jaxp_parser_impl
xml-commons-apis
jdk = 2000:1.7.0_06-fcs
[root@localhost kuzmich]# rpm -qp -provides jre-7u5-linux-x64.rpm
jaxp_parser_impl
xml-commons-apis
jre = 1.7.0_05-fcs
[root@localhost kuzmich]# rpm -q -provides java-1.7.0-openjdk
config(java-1.7.0-openjdk) = 1:1.7.0.5-2.2.1.el6_3
jaas7 = 1:1.7.0.5
java7 = 1:1.7.0
java7-1.7.0 = 1:1.7.0.5-2.2.1.el6_3
java7-fonts = 1:1.7.0.5
java7-openjdk = 1:1.7.0.5-2.2.1.el6_3
java7-sasl = 1:1.7.0.5
jce7 = 1:1.7.0.5
jdbc7-stdext = 4.1
jndi7 = 1:1.7.0.5
jndi7-cos = 1:1.7.0.5
jndi7-dns = 1:1.7.0.5
jndi7-ldap = 1:1.7.0.5
jndi7-rmi = 1:1.7.0.5
jre7 = 1.7.0
jre7-1.7.0 = 1:1.7.0.5-2.2.1.el6_3
jre7-1.7.0-openjdk = 1:1.7.0.5-2.2.1.el6_3
jre7-openjdk = 1:1.7.0.5-2.2.1.el6_3
jsse7 = 1:1.7.0.5
lib.so()(64bit)
lib.so(SUNWprivate_1.1)(64bit)
libattach.so()(64bit)
libattach.so(SUNWprivate_1.1)(64bit)
libawt.so()(64bit)
libdt_socket.so()(64bit)
libdt_socket.so(SUNWprivate_1.1)(64bit)
libfontmanager.so()(64bit)
libfontmanager.so(SUNWprivate_1.1)(64bit)
libhprof.so()(64bit)
libhprof.so(SUNWprivate_1.1)(64bit)
libinstrument.so()(64bit)
libinstrument.so(SUNWprivate_1.1)(64bit)
libj2gss.so()(64bit)
libj2gss.so(SUNWprivate_1.1)(64bit)
libj2pcsc.so()(64bit)
libj2pcsc.so(SUNWprivate_1.1)(64bit)
libj2pkcs11.so()(64bit)
libj2pkcs11.so(SUNWprivate_1.1)(64bit)
libjaas_unix.so()(64bit)
libjava.so()(64bit)
libjava.so(SUNWprivate_1.1)(64bit)
libjava_crw_demo.so()(64bit)
libjava_crw_demo.so(SUNWprivate_1.1)(64bit)
libjavajpeg.so()(64bit)
libjavajpeg.so(SUNWprivate_1.1)(64bit)
libjavalcms.so()(64bit)
libjavalcms.so(SUNWprivate_1.1)(64bit)
libjawt.so()(64bit)
libjawt.so(SUNWprivate_1.1)(64bit)
libjdwp.so()(64bit)
libjdwp.so(SUNWprivate_1.1)(64bit)
libjli.so()(64bit)
libjli.so(SUNWprivate_1.1)(64bit)
libjsdt.so()(64bit)
libjsdt.so(SUNWprivate_1.1)(64bit)
libjsig.so()(64bit)
libjsound.so()(64bit)
libjsound.so(SUNWprivate_1.1)(64bit)
libjsoundalsa.so()(64bit)
libjsoundalsa.so(SUNWprivate_1.1)(64bit)
libjvm.so()(64bit)
libjvm.so(SUNWprivate_1.1)(64bit)
libmanagement.so()(64bit)
libmanagement.so(SUNWprivate_1.1)(64bit)
libmawt.so()(64bit)
libmawt.so(SUNWprivate_1.1)(64bit)
libmlib_image.so()(64bit)
libmlib_image.so(SUNWprivate_1.1)(64bit)
libnet.so()(64bit)
libnet.so(SUNWprivate_1.1)(64bit)
libnio.so()(64bit)
libnio.so(SUNWprivate_1.1)(64bit)
libnpt.so()(64bit)
libnpt.so(SUNWprivate_1.1)(64bit)
libpulse-java.so()(64bit)
librmi.so()(64bit)
librmi.so(SUNWprivate_1.1)(64bit)
libsaproc.so()(64bit)
libsaproc.so(SUNWprivate_1.1)(64bit)
libsctp.so()(64bit)
libsctp.so(SUNWprivate_1.1)(64bit)
libsplashscreen.so()(64bit)
libsplashscreen.so(SUNWprivate_1.1)(64bit)
libsunec.so()(64bit)
libsunec.so(SUNWprivate_1.1)(64bit)
libunpack.so()(64bit)
libunpack.so(SUNWprivate_1.1)(64bit)
libverify.so()(64bit)
libverify.so(SUNWprivate_1.1)(64bit)
libzip.so()(64bit)
libzip.so(SUNWprivate_1.1)(64bit)
java-1.7.0-openjdk = 1:1.7.0.5-2.2.1.el6_3
java-1.7.0-openjdk(x86-64) = 1:1.7.0.5-2.2.1.el6_3
[root@localhost kuzmich]#

Ничего общего :( Причём jdk даже не провайдит jre, хотя jre его составная часть.

Про Java policy - ткните пальцем, что читать. Не знаю такого слова :(

P.S. root требуется для установки rpm. Машина - виртуалка за NAТ'ом, создана исключительно для изготовления и проверки rpm-ки...

Qzmich ()
Ответ на: комментарий от Qzmich

Втупую: попробуй прописать

Requires: jre >= 1.7 or java7 >= 1:1.7.0

Про Java policy - ткните пальцем, что читать. Не знаю такого слова :(

Ищи в гугле Redhat Linux java packaging policy

root требуется для установки rpm

Ты собираешь RPM от рута, это неправильно.

tailgunner ★★★★★ ()
Ответ на: комментарий от dinn

Ок, виноват, исправлюсь. c пробелами yum предлагает установить java-1.6.0-openjdk При установленных оракловых jre и jdk

Qzmich ()
Ответ на: комментарий от tailgunner
Error: Package: myprogram-11.18.0-1.noarch (/myprogram-11.18.0-1.noarch)
           Requires: or

от рута, потому что make install выполняет groupadd и adduser.

Qzmich ()
Ответ на: комментарий от Qzmich

P.S. root требуется для установки rpm. Машина - виртуалка за NAТ'ом, создана исключительно для изготовления и проверки rpm-ки...

Мне просто интересно, у Red Hat нет никаких инструментов для создания rpm, аналогичных obs и osc в SUSE?

dinn ★★★★★ ()
Ответ на: комментарий от dinn

Я сейчас на центосе тренируюсь, как получится - буду дотачивать под Oracle Enterprise и SUSE. А потом еще Unbuntu Server. Других операционок у наших закащщиков не помню. Это будет отдельная песня.

Или плюнуть на всё, оставить tar -xf src.tgz && make install clean

Qzmich ()
Ответ на: комментарий от Qzmich

У Oracle'а всегда RPM'ы корявые. Redhat'овский RPM, кажется, адаптирован отсюда: http://www.jpackage.org/ . Там же раньше был дополнительный RPM (что-то вроде java-1.{5,6}.0-sun), устанвливемый поверх Oracle'овского и, кроме всего прочего, прописываюший зависимости а-ля openjdk, т.е. с его помошью всё работает. Не уверен поддерживают ли они этот hack до сих пор.

С другой стороны, поскольку на системе может быть несколько версий jdk/jre, пакетными зависимостями это не решается. Напр. /usr/bin/java может указывать на java 1.5, 1.6, и т.д. через /etc/alternatives (в openjdk, насчёт Oracle'а не знаю) .

Вообще, родные (RedHat) пакеты более качественно собраны и интегрированы...

Я бы на вашем месте просто добавил «Requires: java >= 1.6», имея ввиду родной openjdk, т.к. он всегда доступен.

dpanech ()
Ответ на: комментарий от dpanech

Родной оракловый RPM в alternatives сам не прописывается, что не мешает его туда прописать вручную. Ссылочку почитаю, может быть поможет.

А по поводу кривых RPM попробую по своим каналам попинать Oracle. Вроде как мы с Oracle партнёрами числимся... Сейчас на «родном» Oracle Enterprise раскопаю, и реквест в Redwood Shores отправлю.

Qzmich ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.