Chrooter apache
Matériel
Ajout disque dur
Ajout carte
Audit des disques durs
Gestion des peripheriques
Disquette d'installation
Ajout d'un scanner
Astuces
Ajout d'une imprimante
Réseau
Configuration reseau
Dns
Serveur cvs
Proxy squid 
Installation serveur ftp
Installation qmail 
Installation serveur courrier sous debian
Outil TCP/IP 
Le serveur samba
Connexion a distance securisee
Client/serveur vnc
Configurer apache
Dyndns
Installer un LAMP sous mandriva
Sécurité
Chiffrer un fichier/dossier
Securiser son poste
Mur pare feu pas a pas
Authentification ht-access
Surveillance de serveur CACTI
Snort
Snort-inline
Securiser Apache avec mod_security
Filtrage squid/squidguard/dansguardian
Auditer son site web
Sécuriser son linux
Installer un Lamp avec ssl
Contrer les scans de ports
Traitement anti-spam
Installer/Utiliser tripwire
Faire des sauvegardes incrémentales
Rsync
Nessus
Divers
Elisa, le multimédia facile
Utilisation de lilo
Les commandes Linux
Le multi-tache
Le crontab
Exploration de la configuration
Quotas
Messagerie
Installer une application
Debugger ses applications
Le format RPM
Mise a jour du noyau
Qemu
Tour d'horizon des principaux p2p
Récupération du système
Bips d'un pc
Astuces windows
Table Ascii
Lamerland
Conversion de fichiers musicaux
Compiler ses rpms
Graver en ligne de commande
Graver un fichier avi pour un dvd de salon
Récupérer des fichiers effacés
Liens
hakin9
Secureroot.com
Hackerthreads.org
Defcon
Hackerlounge
Les derniers exploits
Tous les codes sources
Securite sous Linux
Les logiciels libres quotidiens
Ezine divers
Madchat
Textes divers
Archives
 
Traductions LG
Toutes les traductions
Traductions Phrack
Toutes les traductions

Il y a actuellement 9 visiteurs connectés sur le site !

Google

Compilez et créez vous-même vos paquets RPM
Compilez et créez vous-même vos paquets RPM

 

Introduction
Installer les outils de compilation et développement
Préparer une arborescence de travail
Installer le .src.rpm dans l'arborescence de travail
Créer le paquet .rpm
Installer le paquet .rpm
Faire le ménage

Introduction

Vous avez l'habitude d'installer des logiciels en utilisant, par exemple sous Mandriva ou SuSE, des paquets RPM. C'est la bonne méthode, celle qu'il faut utiliser dans toute la mesure du possible, car elle maintient la cohérence de la distribution : le gestionnaire de paquets sait ainsi à tout moment ce qui est installé ou pas. Mais il est parfois des cas, où vous pouvez vouloir installer un programme dans une version plus récente que celle fournie avec votre distribution et qui n'est pas disponible sur les serveurs. Ou alors, votre distribution est un peu vieille et les paquets ne sont disponibles que pour une édition plus récente. Apprenez comment créer des paquets RPM à partir des sources spécialement empaquetés au format .src.rpm...Un cas typique : vous voulez installer un logiciel disponible pour Mandriva 2006, alors que vous n'avez que la Limited Edition 2005 installée. Compiler vous-même le logiciel, depuis ses sources, peut être une solution, mais qui conduit vite à avoir une sorte de deuxième distribution, installée dans /usr/local/. Et puis, la cohérence RPM en souffre gravement, à force...
Savez-vous qu'il existe un format de fichier qui va vous apporter le meilleur des deux mondes ? Il s'agit des RPM sources ou .src.rpm. Ce sont des sources spécialement empaquetées, qui vont générer, après quelques commandes, un fichier RPM, qui ne demandera plus qu'à être installé, comme d'habitude, sur votre système. Il vous sera ainsi possible de prendre par exemple les paquets .src.rpm d'une Mandriva 2006 et de les installer sur une LE2005. Sur les serveurs ou DVD Mandriva, ils sont rangés dans l'arborescence SRPMS/. Attention cependant, ce portage arrière ou backport ne marche pas toujours, surtout quand un programme a impérativement besoin d'un trop grand nombre de bibliothèques et dépendances très récentes. Mieux vaut alors, dans ce cas, installer complètement la nouvelle distribution. Mais ponctuellement, ça peut marcher ! Nous avons ainsi réussi à installer Koffice 1.5 sur notre Mandriva LE2005, en prenant les .src.rpm de Cooker – en gardant bien à l'esprit que les paquets Cooker 1 ne sont pas du tout destinés à une machine de travail. Toutes les manœuvres que nous allons décrire maintenant devront se faire en utilisateur simple, pas en root, sauf l'installation proprement dite, à la fin. La première des choses à faire, après avoir téléchargé les paquets .src.rpm du logiciel qui vous intéresse, est de préparer votre système.

Installer les outils de compilation et développement

Tout d'abord, il vous faudra installer les logiciels rpm-build, spec-helper et libtool. Un petit détour par rpmdrake suffit. Il vous faudra aussi de nombreux outils de compilations, à commencer par make et des bibliothèques de développement (qui contiennent -devel dans leur nom). En général, une lecture attentive des messages d'erreur, quand les étapes de configuration s'arrêtent, vous indiquera quelle bibliothèque -devel installer.

Préparer une arborescence de travail

La décompression, compilation, puis création du RPM final va se faire dans une arborescence de dossiers spéciale, toujours la même. Pour la créer, ouvrez un terminal, placez-vous dans votre répertoire personnel, puis tapez la commande qui va créer d'un coup tous les dossiers nécessaires :

$ cd
$ mkdir -p ~/rpm/{RPMS/{i586,noarch},SRPMS,SPECS,tmp,BUILD,SOURCES}


Un répertoire rpm/, avec ses sous-répertoires, est maintenant apparu dans votre home/. Les sous-répertoires sont : RPMS/i586, RPMS/noarch, SRPMS, SPECS, tmp, BUILD, et SOURCES. Toujours dans votre terminal, tapez ensuite la commande suivante :

$ cat << EOF > ~/.rpmmacros

Puis saisissez les commandes suivantes à l'invite qui apparaît :

%_topdir $HOME/rpm
%_tmppath /tmp
EOF

Ceci revient tout simplement à créer un fichier texte .rpmmacros dans votre home/. Il sert à indiquer, lors de la compilation du RPM, où se trouve l'arborescence de travail et où se trouve le répertoire temporaire.

Installer le .src.rpm dans l'arborescence de travail

C'est la commande suivante qui s'en occupe :

$ rpm -ivh programme.src.rpm

Comme c'est un fichier src.rpm et pas un vrai paquet.rpm, cette commande ne génère pas l'installation habituelle. Cela va juste placer les fichiers sources, encore compressés au format tar.bz2, dans le répertoire SOURCES/ créé plus haut et le fichier .spec dans SPECS/. Le fichier .spec est une sorte de descriptif, qui contient les commandes et descriptions pour construire et installer le programme. S'il y a des modifications à apporter dans le fichier .spec, c'est le moment de le faire. C'est notamment dans ce fichier que se trouvent les descriptions du paquet telles qu'elles apparaîtront ensuite dans rpmdrake, les numéros de version, le nom du packageur et autres informations. S'y trouvent aussi les instructions pour les étapes de configuration, compilation et la liste des fichiers qui seront inclus dans le paquet .rpm final. Attention donc à ce que vous modifiez dans ce fichier. Si vous voulez modifier les sources, il faudra les décompresser, procéder aux modifications, puis les recompresser, toujours dans SOURCES/.

Créer le paquet .rpm

C'est la commande suivante qui s'en charge :

$ rpm -ba rpm/SPECS/programme.spec

Croisez les doigts et patientez. C'est le traditionnel moment de la tasse de café... Si la phase de configuration s'arrête, lisez attentivement les messages d'erreur, pour comprendre ce qui ne va pas. La plupart du temps, c'est une bibliothèque de développement qui manque et qu'il vous faudra installer ou mettre à jour. Cette commande va décompresser vers BUILD/ les sources .bz2 qui sont dans SOURCES/. Puis, c'est dans BUILD/ que va se faire, automatiquement, l'équivalent des classiques ./configure et make, à savoir configuration et compilation. L'option -ba construira ensuite les paquetages binaires .rpm ainsi qu'un paquetage source .src.rpm. Reconstruire un paquet source src.rpm tout neuf est très utile si vous aviez modifié ces sources ou le fichier .spec. Le nouveau paquet src.rpm prendra en effet en compte ces modifications et sera rangé dans SRPMS/. On peut utiliser l'option -bb si on n'a pas besoin de reconstruire un paquet source et qu'on n'a besoin que du paquet binaire. À l'inverse, l'option -bs ne fera que construire le paquetage source.

Installer le paquet .rpm

C'est dans les répertoires RPMS/i586/ ou RPMS/noarch/ créés au début, que le paquet RPM installable du programme voulu est maintenant rangé. Il s'installera ensuite tout simplement avec la classique commande :

$ su
# urpmi programme.rpm
# exit

Si tout s'est bien passé lors de l'étape précédente, l'installation devrait se dérouler normalement et votre programme être immédiatement utilisable.

Faire le ménage

Vous remarquerez que, dans BUILD/, il y a encore l'arbre de construction, c'est-à-dire les sources décompressées et compilées. Quand la compilation est terminée, l'arbre est encore là. La commande make install pourrait marcher si on voulait, mais cela court-circuiterait la commande rpm et casserait l'harmonie du système. De même, le fichier .spec est encore dans SPECS/ et les sources .tar.bz2 dans SOURCES/. On peut sans problème nettoyer tout ça à la main, mais on peut aussi le faire faire automatiquement par la commande rpm :

* Pour supprimer l'arbre de construction à l'issue de la création du RPM :

$ rpm -ba --clean rpm/SPECS/programme.spec

* Pour supprimer le fichier .spec et les sources :

$ rpm -ba --rmsource rpm/SPECS/programme.spec

* On peut bien sûr faire les deux d'un coup :

$ rpm -ba --rmsource --clean rpm/SPECS/programme.spec

Voilà, votre arborescence de travail est de nouveau toute propre, prête à accueillir de nouvelles compilations. La prochaine fois, vous n'aurez plus besoin de refaire les deux premières étapes. Gardez cependant en mémoire que cette procédure d'installation est classiquement réservée aux développeurs, et qu'elle doit rester exceptionnelle, surtout si vous vous amusez avec des paquets issus de la distribution Cooker. Bonne compilation !

Sources de l'article

 

Blog
Le blog
La radio
La Radio
Boutique
La boutique du Geek
Php/Mysql
Formulaire en php
Administrer un serveur Mysql
Session en php
Gerer ses bases mysql
Les bases php
Securiser ses scripts PHP
Controler ses programmes avec RATS
Convertir une base sql en utf8
Astuces php
Le fichier php.ini
Programmation
Python rapide
Tutorial Python
Tutorial Perl
Tutorial Perl complet
Tutoriel ruby
Tutoriel C
Introduction à gawk
Filtres et utilitaires
Find
Programmation Shell
Ecriture de scripts bash
Expressions regulieres
Vi
Introduction a Javascript
Compiler avec gcc
Astuces en Bash
Cracking
Tutoriel Assembleur
Guide du cracking pour débutant
Assembleur
Manual Unpacking
Techniques de Protection
Différentes failles Web
Arp spoofing dans un réseau switché
Les intrusions
Les attaques externes
Defacage
Defacage complet
Buffer overflow
Netcat
Injection sql
Injection sql(suite)
John the Ripper
Spoofer un email
Utiliser google
La faille system
Usurper une identité
Le rooting
Shellcode sous Unix
La faille race condition
La faille xss
La faille xss (2)
Attaques sur un routeur
P2P
Azureus pas-a-pas
News
Lire les news de Linux-pour-lesnuls.com au format RSS
Distros
Gestion des paquets debian
101 commandes debian
Jeu
Webtarot
Graphisme
Effet neon dans GIMP
Effet vapeur dans GIMP
Cours fonctionnalités de GIMP
Redimentionner une image avec GIMP
Redimentionner une photo pour en faire un cadre avec gimp
Morphing avec gimp
Détourer avec gimp
Réduire le poids d'une image avec gimp
Caricature avec gimp
Humour
Ensemble
Divers