Portál AbcLinuxu, 4. května 2024 16:04


Dotaz: RPM balicek

21.3.2019 15:59 mig31cz
RPM balicek
Přečteno: 551×
Odpovědět | Admin

OS: CentOS 7.6 K vlastnimu programu jsem vytvoril instalacni balicek. Pri jeho instalace yum install mi rika,ze chybi knihovna

 

Vyžaduje: libnidaqmxbase.so.15()(64bit)

 

ale pozadovanou knihovnu v systemu mam

 

Vypis ldconfig

 

ldconfig -p | grep libnidaqmxbase.so.15 libnidaqmxbase.so.15 (libc6,x86-64) => /usr/local/lib64/libnidaqmxbase.so.15 libnidaqmxbase.so.15 (libc6) => /usr/local/lib/libnidaqmxbase.so.15

 

Vypis rpm -q --whatprovides libnidaqmxbase.so.15

nidaqmxbase-cinterface-15.0.0-f1.x86_64

Tento balicek mam nainstalovany.

Je mozne nastavit cestu nebo v jakem balicku ma hledat knihovnu ve SPEC souboru pro rpmbuild?

Diky.


Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

21.3.2019 16:05 Bherzet | skóre: 19 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: RPM balicek
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nepoužívám RPM-based distribuci, ale nemáš v tom balíčku prostě chybně přidanou závislost na balíku libnidaqmxbase.so.15, který ve skutečnosti neexistuje a místo něj by tam měl být ten balík nidaqmxbase-cinterface-15.0.0-f1.x86_64?
21.3.2019 16:55 mig31cz
Rozbalit Rozbalit vše Re: RPM balicek
Prave, ze jsem v sekci Requires zadne zavislosti nenastavoval.A ze vsech knihoven na kterych zavisi muj binarni soubor chybi jenom libnidaqmxbase.so.15, napriklad

libQt4Pas.so.5 => /lib64/libQt4Pas.so.5 (0x00007f4f32e5c000)
21.3.2019 17:39 Bherzet | skóre: 19 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: RPM balicek
A kdybys tam jako závislost uvedl ten balík s tou knihovnou? Jen střílím od boku…
21.3.2019 18:14 mig31cz
Rozbalit Rozbalit vše Re: RPM balicek
Zkousel jsem to, ale chyba je stejna.
21.3.2019 19:08 debian+
Rozbalit Rozbalit vše Re: RPM balicek
Odpovědět | | Sbalit | Link | Blokovat | Admin
Je /usr/local/lib64/ v /etc/ld.so.conf alebo v premenej LD_LIBRARY_PATH shellu?
21.3.2019 21:17 pavele
Rozbalit Rozbalit vše Re: RPM balicek
Není libnidaqmxbase.so.15 32bitová verze?

Jestli se nepletu, tak nidaqmxbase je 32bitová, musel jsem kvůli tomu doinstalovávat 32bitové knihovny - a i tak mi to po instalaci nefungovalo...
21.3.2019 21:38 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: RPM balicek
Odpovědět | | Sbalit | Link | Blokovat | Admin

Když si YUM stěžuje, že chybí „libnidaqmxbase.so.15()(64bit)“, tak dotaz budeme pokládat na „libnidaqmxbase.so.15()(64bit)“, nikoliv na „libnidaqmxbase.so.15()“. (To první značí 64bitové knihovny, to druhé 32bitové.). Tedy hledání v nainstalovaných balících pomocí rpm -q --whatprovides 'libnidaqmxbase.so.15()(64bit)' a hledání v zapnutých repozitářích pomocí repoquery --whatprovides 'libnidaqmxbase.so.15()(64bit)'.

Dále YUM vůbec neřeší, jaké soubory v souborovém systému jsou. YUM pouze zkoumá metadata balíčků – co který balík poskytuje a co vyžaduje. To samé platí o RPM (s výjimkou, že RPM kontroluje, aby stejně pojmenovaný, ale obsahově rozdílný soubor neinstalovalo více balíčků). Tedy, že ldconfig umí najít libnidaqmxbase.so.15 SONAME v /usr/local/lib64/libnidaqmxbase.so.15 a v /usr/local/lib/libnidaqmxbase.so.15, neznamená, že YUM nebo RPM o ní ví. Jestli se správce balíčků k danému souborů zná, lze zjistit pomocí rpm -q --qf /usr/local/lib64/libnidaqmxbase.so.15. Buď vrátí název balíku, kterému patří, nebo ne.

A nakonec, jestli balík instaluje /usr/local/lib64/libnidaqmxbase.so.15 a jestli na úrovni RPM metadata poskytuje libnidaqmxbase.so.15()(64bit), jsou také nezávislé věci. Takovou informaci lze při vytváření balíku jak dodefinovat, tak také odstranit. Tyto informace při sestavování balíku standardně dodává generátor závislostí a ten se může mýlit. Automaticky vygenerované závislosti se vypisují ke konci běhu nástroje rpmbuild (příklad s balíkem libisds, který poskytuje „libisds.so.5()(64bit) “).

25.3.2019 10:17 mig31cz
Rozbalit Rozbalit vše Re: RPM balicek
Dekuji moc za smer. Me tutiz to vubec nenapadlo, ze i knihovna v /usr/local/lib64/ muze byt 32-bit. Asi jsem moc zvykly na distribuci Mageia, kde 64-bit knihovny se znaci lib64{jmeno knihovny}.
25.3.2019 13:48 mig31cz
Rozbalit Rozbalit vše Re: RPM balicek
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak jsem udelal lokalni repozitar, ale vypada ze ve SPEC souboru balicku chybi v sekci Provides, ze poskituje i 64-bit knihovnu

repoquery --whatprovides 'libnidaqmxbase.so.15()(64bit)'

repoquery --whatprovides 'libnidaqmxbase.so.15' nidaqmxbase-cinterface-0:15.0.0-f1.i386 nidaqmxbase-cinterface-0:15.0.0-f1.x86_64

Jde nejkym spusobem ve spec souboru meho balicku nadefinovat, ze libnidaqmxbase.so.15()(64bit) je nejakem balicku? Anebo musim "prebalit"nidaqmxbase-cinterface-0:15.0.0-f1.x86_64?
25.3.2019 19:15 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: RPM balicek

Správné řešení je přebalit rozbitý balíček. Tedy zjistit, proč generátor nenajde 64bitový SONAME a nepřidá ho do Provides. Ono tam asi bude více problémů. Například 64bitové knihovny by měli být jen v x86_64 balíčcích a 32bitové jen v i686 balíčcích. Samozřejmě lze místo opravy prostě natvrdo napsat do daného spec souboru k příslušnému podbalíku Provides: libnidaqmxbase.so.15()(64bit), ale jak píšu, asi tam bude toho zkaženého více.

Pokud nelze opravit nidaqmxbase-cinterface-0:15.0.0-f1.x86_64, můžete do toho svého balíku, který potřebuje nidaqmxbase-cinterface-0:15.0.0-f1.x86_64 prostě přidat Requires: nidaqmxbase-cinterface-0:15.0.0-f1.x86_64 a vyfiltrovat závislost na libnidaqmxbase.so.15()(64bit) pomocí %global __requires_exclude ^libnidaqmxbase.so.15\\(\\)\\(64bit\\).

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.