Création de paquets rpm et deb

Documents pareils
Mon premier rpm. 7 juin Avant de commencer RPM URPMI RPMBUILD... 2

Chapitre 10 : Logiciels

La création d un paquet Debian. Aurélien Jarno. Journées du Logiciel Libre. 15 octobre 2005

Créer son premier package.deb. 19 août

Serveur Acronis Backup & Recovery 10 pour Linux. Update 5. Guide d'installation

Projet Administration Réseaux

MANUEL UTILISATEUR KIWI BACKUP V 3

TP n 2 : Installation et administration du serveur ProFTP. Partie 1 : Fonctionnement du protocole FTP (pas plus de 15min)

TD séance n 2c Mise à jour des Systèmes

Déployer des applications Perl

Atelier Migration. Mohamadi ZONGO Formateur assistant Kassim ASSIROU Atelier Migration.

sshgate Patrick Guiran Chef de projet support

Acronis Backup & Recovery 10 Server for Linux. Guide de démarrage rapide

INFO-F-404 : Techniques avancées de systèmes d exploitation

Tutoriel Création d une source Cydia et compilation des packages sous Linux

Tutoriel compte-rendu Mission 1

Premiers pas en Linux

Cours Langage C/C++ Programmation modulaire

REPUBLIQUE ISLAMIQUE DE MAURITANIE

DOCKER MEETUP. Christophe Labouisse

CONFIGURATION DU SERVEUR DE MAILS EXIM. par. G.Haberer, A.Peuch, P.Saade

PLATE-FORME DE CLOUD COMPUTING SLAPOS. Intégration d applications

Problématique. Techniques générales. Déploiement Windows. Déploiement Linux. Déploiement Mac OS X. Applications Windows. Applications Linux

Client Kiwi Backup : procédures d'installation et de mise à jour. Gilles Arnoult, Clément Varaldi

Tutoriel code::blocks

Pourquoi et comment faire sa première contribution à Debian?

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

Gérer ses environnements de développement avec Vagrant RMLL 2012

TP LINUX : MISE EN PLACE DU SERVEUR DE MESSAGERIE QMAIL

Ateliers Python+Qt : Premiers pas : Comment développez ses propres interfaces graphiques sur le RaspberryPi?

Reproductibilité des expériences de l article "Analyse et réduction du chemin critique dans l exécution d une application"

Afin d'éviter un message d'erreur au démarrage du service Apache du type :

Notes pour l'installation d'une version de Eprints sur une machine CentOS4.2 Stéphanie Lanthier Le jeudi 17 février 2006

PRESENTATION RESSOURCES. Christian Dupaty BTS Systèmes Numériques Lycée Fourcade Gardanne Académie d Aix Marseille

FICHE TECHNIQUE. Linux Tutoriel. Installer une imprimante multifonction HP PSC 1315 sous Linux. TUTORIEL Starinux Imprimante multifonction HP PSC 1315

Compilation croisée sous Linux et Windows

Aide-Mémoire unix. 9 février 2009

Guide pratique de CSPM, l'outil de suivi des performances du système Version française du Complete System Performance Monitor HOWTO

Personnes ressources Tice. Académie de Rouen

INSTALLATION NG V2.1 D OCS INVENTORY. Procédure d utilisation. Auteur : GALLEGO Cédric 23/10/2014 N version : v1

Installation d ORACLE 10g sous Debian Etch

Parallels Transporter Lisez-moi

C.M. 1 & 2 : Prise en main de Linux

2012 Doctor Web. Tous droits réservés.

VoD ( Video on Demand ) avec VLC

titre : CENTOS_CUPS_install&config Système : CentOs 5.7 Technologie : Cups Auteur : Charles-Alban BENEZECH

Automatisation de l administration système avec

Pharmed. gestion de pharmacie hospitalière. Installation / déploiement

MRTG & RRD Tool. Multi Router Traffic Grapher

Titre: Version: Dernière modification: Auteur: Statut: Licence:

Systèmes informatiques

Table des matières. 1. Installation de VMware ESXI Pré-requis Installation... 3

Exercice sur les Dockers

Introduction...3. Objectif...3. Manipulations...3. La Sauvegarde...4. Les différents types...4. Planification...4. Les outils...5

IceWarp serveur sur Linux : Guide d'installation

Administration Linux - FTP

[Guide d'installation 2.0] [0.6] Première édition: [25/05/2005] Première édition anglaise : [ ] OpenOffice.org 2.0. Guide d'installation 2.

Serveur DNS et DHCP couplé à LDAP Debian GNU/Linux

AFTEC SIO 2. Christophe BOUTHIER Page 1

Linux et le Shell. Francois BAYART. Atelier du samedi 20 Novembre

Situation professionnelle n X

en SCÈNE RATIONAL Rational Démonstration SDP : automatisation de la chaîne de développement Samira BATAOUCHE sbataouche@fr.ibm.com

Système de Gestion de Ressources

Perl Console. Votre compagnon pour développer en Perl. Les Journées du Perl , 17 novembre, Lyon. Alexis Sukrieh

Support de cours. Administrer Linux avec Webmin. 2003, Sébastien Namèche - 1

Oracle Database SQL Developer Guide D'Installation Release 4.0 E

Construction de logiciel et packaging

MANIPULATION DE LA TABLE DE ROUTAGE IP. par. G.Haberer, A.Peuch, P.Saadé

Compte Rendu. Projet Reseaux : Conception Implémentation d un Mini DataCenter

Mettez Linux en boîte avec ClearOS

Joomla! Création et administration d'un site web - Version numérique

Automatisation de l administration système

Oracle 11g. Installation et administration. Claude Duvallet 1/36

Contents. 1 Premiers pas en Linux. 1.2 Généralités. 1.1 Bref historique Linux

pythonocc: une plateforme de développement agile d applications CAO.

Titre: Version: Dernière modification: Auteur: Statut: Licence:

NRPE. Objectif. Documentation. Procédures

Environnement Informatique EMSE Linux

Serveur de sauvegardes incrémental

INSTALL ATION D UNE D I S T RIBUTION

Acronis Backup Advanced Version 11.5 Update 6

Statistiques réseau et système avec CACTI

La tête dans les nuages

ETHEREAL. Introduction. 1. Qu'est-ce qu'ethereal Historique Le statut d'ethereal

Slony1 2.1 Londiste 3

Installation UpdatEngine serveur (CentOs apache2 / MySQL)

FORMATION Offre de Formation - Packaging. Les bonnes pratiques du packaging avec Installshield et AdminStudio. Contact et inscriptions

TP 1 : 1 Calculs en binaire, octal et hexadécimal

contact@nqicorp.com - Web :

Découverte des Logiciels Libres. Gilles Dequen

WPKG Gestion de paquets pour Windows

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS

Fedora 14. Images live de Fedora. Comment utiliser l'image live de Fedora. Paul W. Frields Nelson Strother Nathan Thomas

Ateliers Python+Qt : Premiers pas : S'installer pour PyQt... en quelques minutes sous Windows!

Maarch V1.4

PUPPET. Romain Bélorgey IR3 Ingénieurs 2000

L'accélération 3D sous Linux

User Documentation. Documentation utilisateur. version 0.2b

Transcription:

Création de paquets rpm et deb Sékou Diakité Institut UTINAM 14/06/2012

Plan 1 Contexte 2 Paquet.rpm 3 Paquet.deb 4 Gestion des dépendances 5 Création automatique de paquets.rpm ou.deb Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 0 / 19

Contexte Paquet Archive comprenant les chiers à distribuer et les informations nécessaires à l'installation de ceux-ci au sein d'une archive Gestionnaire de paquet Logiciel qui automatise l'installation, la mise à jour et la suppression d'un paquet au sein d'un système informatique. Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 1 / 19

Paquets.rpm et.deb Diérences fondamentales? Aucune, sinon que RPM a une notion de paquets sources. alien - -scripts - -to-deb hello-world-1.0-1.noarch.rpm alien - -scripts - -to-rpm hello-world.deb Pourquoi plusieurs types de paquets? diérences fortes entre distributions (granularité des paquets, chemin d'installations), raisons historiques (.deb précède.rpm), égo des développeurs. Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 2 / 19

Paquet.rpm Distributions compatibles Red Hat et ses dérivés : Fedora CentOS Mandriva et ses dérivés : PCLinuxOS Suze Toutes les distributions compatibles Linux Standard Base Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 3 / 19

Paquet.deb Distributions compatibles Debian et ses dérivés : Ubuntu Linux Mint Knoppix MEPIS Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 4 / 19

L'application jouet hello-world #!/bin/bash cat /etc/hello world.txt Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 5 / 19

Plan 1 Contexte 2 Paquet.rpm 3 Paquet.deb 4 Gestion des dépendances 5 Création automatique de paquets.rpm ou.deb Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 5 / 19

Paquet.rpm Principe La création de paquets RPM se fait à partir des sources. Un chier recette.spec (mon-appli.spec) dénit l'ensemble des actions à eectuer depuis l'archive vers le.rpm. Le programme rpmbuild permet la réalisation d'un paquet source et d'un paquet binaire pour mon-appli.spec : rpmbuild -ba mon-appli.spec Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 6 / 19

Paquet.rpm : Fichier.spec hello-world.spec, partie 1 Summary: Show the content of /etc/hello-world.txt. Name: hello-world Provides: hello-world Version: 1.0 Release: 1 License: Public domain Group: Applications/Text Source0:./%{name}-%{version}.tgz Vendor: Sékou Diakité <sekou.diakite@utinam.cnrs.fr> Packager: Sékou Diakité <sekou.diakite@utinam.cnrs.fr> BuildArch: noarch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{ id_u} -n) %description This script shows the content of /etc/hello-world.txt. %prep %setup -q Par défaut hello-world-1.0.tgz doit être copié manuellement dans le dossier des sources ($HOME/rpmbuild/SOURCES/) Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 7 / 19

Paquet.rpm : Fichier.spec hello-world.spec, partie 2 %build rm -rf $RPM_BUILD_ROOT/* cp -rf usr $RPM_BUILD_ROOT/ %install %clean %post touch /etc/hello-world.txt echo "Hello World" > /etc/hello-world.txt %postun rm /etc/hello-world.txt %files /usr/bin/hello-world /usr/share/doc/hello-world/copyright /usr/share/man/man1/hello-world.1.gz Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 8 / 19

Plan 1 Contexte 2 Paquet.rpm 3 Paquet.deb 4 Gestion des dépendances 5 Création automatique de paquets.rpm ou.deb Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 8 / 19

Contenu d'un paquet.deb ar tv hello-world.deb rw r r 0/0 rw r r 0/0 rw r r 0/0 4 Jun 10 14:57 2012 debian binary 426 Jun 10 14:57 2012 control.tar.gz 197 Jun 10 14:57 2012 data.tar.gz Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 9 / 19

Création d'un paquet.deb Création du paquet hello-world.deb À partir d'une arborescence./hello-world, l'utilisation de dpkg build hello-world va créer le paquet hello-world.deb Arborescence des sources du paquet./hello-world/ DEBIAN/ usr/ control postinst postrm bin/ hello-world Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 10 / 19

Création d'un paquet.deb Fichier./hello-world/DEBIAN/control Fichier contenant les informations sur le paquet : nom, version, auteur, dépendances,... Arborescence des sources du paquet./hello-world/ DEBIAN/ usr/ control postinst postrm bin/ hello-world Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 10 / 19

Création d'un paquet.deb Fichier./hello-world/DEBIAN/postinst Script exécuté à l'installation du paquet Arborescence des sources du paquet./hello-world/ DEBIAN/ usr/ control postinst postrm bin/ hello-world Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 10 / 19

Création d'un paquet.deb Fichier./hello-world/DEBIAN/postrm Script exécuté à la suppression du paquet Arborescence des sources du paquet./hello-world/ DEBIAN/ usr/ control postinst postrm bin/ hello-world Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 10 / 19

Création d'un paquet.deb Fichier./hello-world/usr/bin/hello-world L'application jouet Arborescence des sources du paquet./hello-world/ DEBIAN/ usr/ control postinst postrm bin/ hello-world Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 10 / 19

Création d'un paquet.deb./hello-world/debian/control Package: hello-world Version: 1.0 Section: contrib/misc Priority: optional Architecture: all Maintainer: Sékou Diakité <sekou.diakite@utinam.cnrs.fr> Description: Show the content of /etc/hello-world.txt This script shows the content of /etc/hello-world.txt. Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 11 / 19

Création d'un paquet.deb./hello-world/debian/postinst #!/bin/bash touch /etc/hello world.txt echo "Hello World" > /etc/hello world.txt./hello-world/debian/postrm #!/bin/bash rm /etc/hello world.txt Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 12 / 19

Création d'un paquet.deb Respect des standards debian Lintian #$ lintian hello-world.deb % E: hello-world: control-file-has-bad-owner postinst sdiakite/sdiakite!= root/root % E: hello-world: control-file-has-bad-owner postrm sdiakite/sdiakite!= root/root % E: hello-world: no-copyright-file % E: hello-world: depends-on-essential-package-without-using-version depends: bash % E: hello-world: wrong-file-owner-uid-or-gid usr/ 1000/1000 % W: hello-world: non-standard-dir-perm usr/ 0775!= 0755 % E: hello-world: wrong-file-owner-uid-or-gid usr/bin/ 1000/1000 % W: hello-world: non-standard-dir-perm usr/bin/ 0775!= 0755 % E: hello-world: wrong-file-owner-uid-or-gid usr/bin/hello-world 1000/1000 % W: hello-world: non-standard-executable-perm usr/bin/hello-world 0775!= 0755 % W: hello-world: binary-without-manpage usr/bin/hello-world % W: hello-world: maintainer-script-ignores-errors postinst % W: hello-world: maintainer-script-ignores-errors postrm Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 13 / 19

Création d'un paquet.deb Respect des standards debian Lintian #$ lintian hello-world.deb % E: hello-world: control-file-has-bad-owner postinst sdiakite/sdiakite!= root/root.../... % W: hello-world: maintainer-script-ignores-errors postrm Corrections : Changer les propriétaires et les droits, ajouter la version de bash dans control, créer./hello-world/usr/share/doc/hello-world/copyright, créer./hello-world/usr/share/doc/hello-world/changelog.gz, créer./hello-world/usr/share/man/man1/hello-world.1.gz, changer les scripts postinst et postrm en remplaçant #!/bin/bash par #!/bin/bash -e L'arborescence correcte est disponible dans la section support du Wiki Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 14 / 19

Plan 1 Contexte 2 Paquet.rpm 3 Paquet.deb 4 Gestion des dépendances 5 Création automatique de paquets.rpm ou.deb Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 14 / 19

Gestion des dépendances? Mon programme dépend d'une librairie libdo-something.so en version 1.0 qui elle-même dépend d'une librairie libhelp-do-something.so en version 1.5 Gestionnaire de paquet : $ sudo apt-get install evince Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: evince-common libevince3-3 libgrip0 libt1-5 libutouch-geis1 Suggested packages: nautilus The following NEW packages will be installed: evince evince-common libevince3-3 libgrip0 libt1-5 libutouch- Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 15 / 19

Gestion des dépendances : RPM Fichier SPEC Summary: Show the content of /etc/hello-world.txt. Name: hello-world Provides: hello-world Version: 1.0 Release: 1 License: Public domain Group: Applications/Text Requires: python >= 1.3, perl Source0:./%{name}-%{version}.tgz Vendor: Sékou Diakité <sekou.diakite@utinam.cnrs.fr> Packager: Sékou Diakité <sekou.diakite@utinam.cnrs.fr> BuildArch: noarch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{ id_u} -n) Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 16 / 19

Gestion des dépendances : DEB Fichier control Package: hello-world Version: 1.0 Section: contrib/misc Priority: optional Architecture: all Depends: bash, coreutils (>= 5.0) Maintainer: Sékou Diakité <sekou.diakite@utinam.cnrs.fr> Description: Show the content of /etc/hello-world.txt This script shows the content of /etc/hello-world.txt. Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 17 / 19

Gestion des dépendances : comment les déterminer? De quelle librairie mon programme dépend-il? ldd /usr/bin/wget linux-vdso.so.1 => (0x00007ef000) libssl.so.1.0.0 => /lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007f7b279d5000) libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007f7b2760d000)... Quel paquet installe une librairie donnée? RPM rpm -qf /lib/x86_64-linuxgnu/libcrypto.so.1.0.0 DEB dpkg -S /lib/x86_64-linuxgnu/libcrypto.so.1.0.0 Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 18 / 19

Plan 1 Contexte 2 Paquet.rpm 3 Paquet.deb 4 Gestion des dépendances 5 Création automatique de paquets.rpm ou.deb Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 18 / 19

Création automatique de paquets.rpm ou.deb Checkinstall Permet la génération de paquets.rpm ou.deb à partir de sources supportant la commande make install Objectif Génération rapide de paquets à faible diusion, permet d'installer un programme à partir des sources dans son gestionnaire de paquets Fonctionnement L'exécution de checkinstall -R (-D pour.deb) dans le dossier courant exécute make install dans un fakeroot, les modications observées permettent de reconstituer un paquet RPM (ou DEB) Sékou Diakité (UTINAM) Création de paquets rpm et deb 14/06/2012 19 / 19

Merci de votre attention Ressources Linux Standard Base Création de RPM : FR : documentation Fedora EN : documentation Mandriva EN : documentation rpm.org Création de DEB : FR : developpez.com EN : tldp.org Checkinstall : EN : site ociel Alien (conversion RPM/DEB) : EN : site ociel Application jouet pour.rpm et.deb dans la section support du wiki