2010-09-15 5 views
1

Pas vraiment certain si cela appartient ici ... mais ...RPM requiert la version i386 d'un paquet

Je construis avec succès un RPM pour CentOS, le problème est qu'il est un fichier binaire 32 bits (ne pas ask ..) - la partie requise de la spécification rpm installe uniquement la version 64bit/x86_64 d'une bibliothèque requise.

Je lie avec libicu, et je veux que le rpm installe automatiquement la version 32 bits en tant que dépendance. Mon exige ressemble à ceci dans mon dossier rpmspec:

Requires: libicu 

Construire le régime fonctionne très bien, sauf quand je tente d'installer le régime sur un système complètement propre, il yum veut l'installer une dépendance:

libicu x86_64 

Ce qui ne fonctionne pas car ce n'est que la version x86_64 de la bibliothèque. Si je tente d'installer manuellement libicu:

yum install libicu 

Je reçois:

libicu x86_64 
libicu i386 

Il installe la version 32 bits de la bibliothèque aussi bien, et mes travaux d'application. Comment puis-je obtenir rpm pour installer la version 32 bits de cette bibliothèque automatiquement? Toutes les idées seraient appréciées ...

Répondre

0

J'ai (enfin) trouvé une réponse qui semble fonctionner. Ajoutez ce qui suit à votre Nécessite: tag dans la spécification rpm:

actual-so-name()(64bit), actual-so-name-again, package-name 

Ainsi, à titre d'exemple, dans mon cas, je dois libicu je ne ce qui suit (juste pris un des ICU .so que je Happen lien vers):

Requires: libicui18n.so.36()(64bit), libicuuc.so.36, libicu 

Cela semble fonctionner.

Y a-t-il un meilleur moyen?

+1

le '36' se réfère à la version 3.6 de l'ICU, s'il y a un moyen de le paramétrer, cela pourrait en valoir la peine. HTH –

+2

Vous pouvez essayer d'abandonner complètement la balise Require et laisser RPM ajouter une exigence spécifique à la bibliothèque - – m1tk4

1

Cette question appartient sans doute mieux dans ServerFault, mais je crois que de RPM 4.6.0, vous pouvez faire quelque chose comme ceci:

Requires: libicu%{_isa} 
%if %{__isa_bits} == 64 
Requires: libicu(%{__isa_name}-32) 
%endif 

[Voir http://www.rpm.org/wiki/PackagerDocs/ArchDependencies]

Malheureusement, les serveurs sur lesquels je travaille actuellement exécutent RPM 4.4.2.3, j'ai donc dû utiliser votre solution ... et merci pour cela, btw. :-)

+0

Merci, quelque chose comme ceci est beaucoup plus agréable ... Malheureusement, je vise Centos 5 (encore ...). Merci quand même. – maxpenguin

Questions connexes