Petit essai de construction de RPM


#1

J’utilise Linux depuis longtemps mais je n’ai jamais eu besoin de construire un rpm. Ces derniers temps nous sommes sollicités pour utiliser ABF ce dont j’ai envie mais à mon avis il faut comprendre auparavant comment construire un rpm localement.
Donc après de saines lectures
je me lance :slight_smile:
avant tout comme il va falloir compiler installons quelques programmes

  • task-devel
  • task-c-devel
  • cmake, pkgconfig
  • rpm-build, rpmlint, rpmlint-distro-policy, mock-urpmi

j’en ai peut être oublié cela dépend de ce qui est déjà installé sur votre machine.

j’ai choisi de faire mon essai avec libssh, pourquoi ? tout simplement parce que je sais que @jclvanier a reussi à le compiler sur sa machine.

la dernière version est ici, c’est libssh-0.7.3.tar.xz .

decompresser dans un dossier soit : libssh-0.7.3
lire attentivement les fichiers README et INSTALL
on voit que certains fichiers sont nécessaires (openssl gcrypt libz) les installer avec le mcc (installer aussi les rpm devel quand ils sont présents)

créer un dossier de construction
cd libssh-0.7.3;mkdir build
essayons de compiler.
cd build;cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug .. (2 points sont importants)
examiner la sortie pour installer ce qui manque (si c’est le cas installer les fichiers manquants, effacer le contenu de /build et relancer la commande avec cmake)
quand tout est ok on peut lancer make. Après un moment si l’on obtient “[100%] Built target libsshpp”, c’est ok. Pas la peine de lancer make install, tout ceci était pour vérifier que la compilation se faisait bien.
Passons maintenant à la construction du rpm
dans home faire: mkdir -p ~/rpm/{BUILD,RPMS/{i586,noarch,x86_64},SOURCES,SRPMS,SPECS,tmp}
créer le fichier .rpmmacros avec dedans :
%_topdir %(echo $HOME)/rpm %_tmppath %(echo $HOME)/rpm/tmp
télécharger le fichier source rpm libssh dans cooker
le mettre dans rpm/SOURCES, puis effectuer la commande suivante dans SOURCES: rpm -i libssh-0.7.3-1.src.rpm
si tout va bien on a

  • libssh-0.6.3-clang.patch
  • libssh-0.7.3-1.src.rpm
  • libssh-0.7.3.tar.xz

soit un patch pour clang, le rpm source et le fichier source libssh
et dans SPECS on a libssh.spec le fichier de configuration du paquet. A la lecture de ce fichier spec l’on comprend que des rpm supplémentaires sont requis:(cmake,doxygen, pcap-devel, libgcrypt, openssl, zlib ) les installer si nécessaires.
Ensuite puique l’on va tenter une nouvelle construction il faut incrémenter la variable
Release: 2
il ne rest plus qu’à aller dans SPECS
cd ~/rpm/SPECS et lancer rpmbuild -ba libssh.spec
si tout va bien on doit avoir
dans rpm/RPMS/x86_64/

  • lib64ssh4-0.7.3-2-omv2015.0.x86_64.rpm
  • lib64ssh_threads4-0.7.3-2-omv2015.0.x86_64.rpm
  • lib64ssh-devel-0.7.3-2-omv2015.0.x86_64.rpm
  • libssh-debuginfo-0.7.3-2-omv2015.0.x86_64.rpm

et dans rpm/SRPMS/ :

  • libssh-0.7.3-2.src.rpm

voilà finalement j’ai réussi à construire un rpm, le plus dur restant de comprendre toutes les possibilités du fichier spec.


#2

Super. L’as tu installé et testé ?

Note: l’article est basé sur rpm 4. Nous utilisons maintenant rpm 5.


#3

je te laisse ce soin, j’y connais rien en ssh :slight_smile:


#4

non mais j’ai fait un essai en reconstruisant nano et cela fonctionne[quote=“jclvanier, post:2, topic:435”]
Note: l’article est basé sur rpm 4. Nous utilisons maintenant rpm 5
[/quote]

meci de la précision mais pour ce que j’ai fait cela n’a pas d’influence


#5

continuant mes saines lectures, pour voir toutes les macros utilisable faire

rpm --showrc | more


#6

Du coup je ne suis pas sûr de comprendre: quel est l’intérêt du système de construction ABF si il faut faire ça sur son poste? :slight_smile:


#7

J’ai fait cet essai parce que, à mon avis , on ne peut pas se lancer dans ABF sans savoir comment cela se passe en local.
l’intéret de ABF c’est de construire pour plusieurs architecture, l’unicité pour tous (on a tous la même version), l’automatisme etc. Bref on peut pas s’en passer.
Faire des rpm pour soi peut être sympa si tu veux la toute dernière version du git du programme, ou l’option qui tue :slight_smile:
Mais même pour construire sur ABF tu auras besoin de ton poste

et pour conclure, je dirai que c’est pas demain la veille que je me lance :smirk:


#8

J’ai trouvé ça, peut-être qu’on peut l’adapter?

Pour ABF j’ai trouvé ça qui n’était d’ailleurs pas mentionné dans le wiki d’OMA (qui n’est pas vraiment à jour d’ailleurs)


#9

Ce qui manque, c’est un super tuto, qui explique les étapes dans le détail.