Balikovanie java aplikacii na linuxe

Pavel Nemec nemecp4 na gmail.com
Čtvrtek Říjen 22 13:22:39 CEST 2009


Dne 22. října 2009 12:42 Podlesak Kamil <Kamil.Podlesak na ips-ag.net> napsal(a):
>
>  Naopak! Prave ze Lotus Notes jsou k dispozici jako rpm i deb a se spravnymi zavislostmi. Prave proto doslo k zminovanemu problemu. Teoreticky by stacilo, kdyby v zavislostech byla uvedena presna verze - jenomze bohuzel to by ve stavajicich balickovacich systemach zanamenalo jen to, ze by se knihovna nesmela updatovat.

Rouzmim, no to se take nekdy stane. Tezko rici kde je chyba zda spatny
update nebo spatne pripraveny jar. Obecne by pri update nemelo dojit k
rozbiti API, zejmena kdyz se instaluje oprava.  a jedna se zvyseni
verze...treba 1.3.1 na 1.3.2. Gtk2 je ale slozita zalezitost :(

>
>  Z techto duvodu mivaji komercni aplikace vlastni instalator, nebo alespon balicek bez zavislostmi - vsechny knihovny maji vlastni v takovych verzich, o kterych vi ze funguji a jsou otestovane. Presne jako se to dela v Jave.
>
>  Microsoft samozrejme na tento problem narazil uz hodne, hodne davno a jeho reseni bylo jednim ze zakladnim pozadavku na .NET - takze umoznuje mit k dispozici mnoho verzi jedne knihovny, pricemz ruzne aplikace pak pouzivaji ruznou verzi.
>  Dokazu si predstavit, ze by balickovaci systemy linuxovych dristribuci podobnou funkcionalitu umoznily. Vyzadovalo by to ale nekolik nepeknych hacku a tvrde by to narazilo na zastance tvrde linie (aneb "kdyz je chyba v aplikaci, ma se opravit aplikace, ne zavadet nejake obezlicky").

I v linuxu je mozne mit vice verzi jedne knihovny pohromade. Jde o to
jak se udela balicek. Pokud se knihovna (at uz .so nebo .jar) ulozi
pouze s verzi napr
/usr/lib64/libgpm.so.1.19.0

tak neni problem inastalovat vedle toho jinou verzi. Nicmene vetsinou
si knihovna nainstaluje take simlinky
/usr/lib64/libgpm.so -> libgpm.so.1.19.0
/usr/lib64/libgpm.so.1 -> libgpm.so.1.19.0

Program ktery knihovnu pouzije pak linkuje simlink
rpm -qR mc | grep gpm
libgpm.so.1()(64bit)
Vyhodou pak je, ze je mozne knihovnu gpm preinstalovat, pokud se jedna
o stejnou Major verzi.  a zaroven je v systemu omezeni ze mc je
zavisle na verzi 1 knihovny libgpm.  Pokud je knihovna neukaznena, tak
je nutne linkovat plnou verzi..

Stejne je to mozne udelat i v jave. Instalovat s konkretni verzi,
vyzadovat kokretni verzi a nepouzivat simlinky :)

P.N.



Další informace o konferenci Konference