apt-get myapp Packaging d'applications Java pour Debian Emmanuel Bourg ebourg@apache.org @smanux 14/01/2014

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

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

Chapitre 10 : Logiciels

Tutoriel : la construction de paquets Debian

Cedric Dumoulin (C) The Java EE 7 Tutorial

Editing and managing Systems engineering processes at Snecma

PACKZ System Requirements. Version: Version: Copyright 2015, PACKZ Software GmbH. 1

sshgate Patrick Guiran Chef de projet support

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

Thank you for choosing the Mobile Broadband USB Stick. With your USB Stick, you can access a wireless network at high speed.

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

Hudson Serveur d Intégration Continue. Adrien Lecharpentier IR3 Ingénieurs2000, Université de Marne la Vallée

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

DOCUMENTATION - FRANCAIS... 2

SERVEUR DÉDIÉ DOCUMENTATION

Once the installation is complete, you can delete the temporary Zip files..

JOnAS Day 5.1. Outils de développements

Accès aux ressources informatiques de l ENSEEIHT à distance

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

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

Thank you for choosing the Mobile Broadband USB Stick. With your USB Stick, you can access a wireless network at high speed.

Le Cloud France Grilles : Accès et utilisation. Jérôme PANSANEL <jerome.pansanel@iphc.cnrs.fr> Directeur technique France Grilles

Votre premier projet Android

Construction et déploiement d applications Java avec Maven, Archiva, Groovy et Jenkins

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

XtremWeb-HEP Interconnecting jobs over DG. Virtualization over DG. Oleg Lodygensky Laboratoire de l Accélérateur Linéaire

TD/TP 1 Introduction au SDK d Android

Introduction à Eclipse

DOCUMENTATION - FRANCAIS... 2

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

Cellier Clément, Maginot Quentin, Tripier Axel, Zaorski Jean, Zini Robin. 18 mars 2015

LXC : Une technologie de contextualisation ultra light intégrée au kernel Linux

Configurer la supervision pour une base MS SQL Server Viadéis Services

Environnement de Développement Outils Open-Source d'integration Continue. Exemple de Mise en Oeuvre

Sun Java SystemWeb Server 7.0 Documentation Center

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

GIGABIT PCI DESKTOP ADAPTER DGE-530T. Quick Installation Guide+ Guide d installation+

Installation de Smokeping sur Debian

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

Oracle FS Data Protection Manager. Release Notes. Part Number E Oracle FS Data Protection Manager release 3.5.

Package Contents. System Requirements. Before You Begin

Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite.

WEB page builder and server for SCADA applications usable from a WEB navigator

Instructions Mozilla Thunderbird Page 1

Utiliser un proxy sous linux

Installation et prise en main

Serveur Subversion Debian GNU/Linux

Puppet - l infrastructure automatisée

TP1 : Initiation à Java et Eclipse

BOUCHARD Nicolas. GENTILE Pierre

Paxton. ins Net2 desktop reader USB

FOURNIR UN SERVICE DE BASE DE DONNÉES FLEXIBLE. Database as a Service (DBaaS)

Java pour le Web. Cours Java - F. Michel

RAPID Prenez le contrôle sur vos données

MANUEL D INSTALLATION D UN PROXY

Notice Technique / Technical Manual

Get Instant Access to ebook Cest Maintenant PDF at Our Huge Library CEST MAINTENANT PDF. ==> Download: CEST MAINTENANT PDF

mon site web via WordPress

DOCUMENTATION - FRANCAIS... 2

Serveurs de noms Protocoles HTTP et FTP

Règles et paramètres d'exploitation de Caparmor 2 au 11/12/2009. Pôle de Calcul Intensif pour la mer, 11 Decembre 2009

Tutoriel de formation SurveyMonkey

Guide du nouveau responsable Debian. Guide du nouveau responsable Debian

Extended communication server 4.1 : VoIP SIP service- Administration

Export et Import de modèles ICAR sous Trnsys 17

Debian Lenny - Virtualisation avec Libvirt/KVM Debian GNU/Linux

MELTING POTES, LA SECTION INTERNATIONALE DU BELLASSO (Association étudiante de lʼensaparis-belleville) PRESENTE :

Environnements de développement (intégrés)

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

Installation de VirtualPOPC-1 sur Ubuntu Server LTS 64bits

Réalisation d un portail captif d accès authentifié à Internet

Développer et déployer un service sur un Cloud OpenStack

Macroscope et l'analyse d'affaires. Dave Couture Architecte principal Solutions Macroscope

GOUTEYRON ALEXIS. SIO2 N candidat: UEpreuve E4. USituation professionnelle 2. serveurs de fichiers. Uen haute disponibilité

SaltStack pour la gestion de parc

Automatisation de l administration système

What s New. Sun ONE Application Server. Version 7, Enterprise Edition

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

Le serveur web Apache

Installation d Oracle sous Debian Etch/Lenny ou Ubuntu. Installation d Oracle sous Debian Etch/Lenny ou Ubuntu

Introduction à SAP Screen Personas. Pierre-Alain Gran Julie Lopez, December 2013

Installation et compilation de gnurbs sous Windows

GUGGO 4 ème rencontre

Serveur d'application à la juste taille

Introduction. A ce stade, il est important de différencier 3 choses :

Bonjour. Yohan PARENT, Cyprien FORTINA, Maxime LEMAUX, Hyacinthe CARTIAUX

S T L - C P S - L e s p l u g i n s E c l i p s e. - Une Introduction , Frédéric Peschanski

Vanilla : Virtual Box

BTS SIO Dossier BTS. PURCHLA Romain

L infrastructure Sécurité de Microsoft. Active Directory RMS. Microsoft IAG

ADHEFILM : tronçonnage. ADHEFILM : cutting off. ADHECAL : fabrication. ADHECAL : manufacturing.

Construction de logiciel et packaging

Guide d installation de Sun Desktop Manager 1.0

Guide d'installation rapide TFM-560X YO.13

ftp & sftp : transférer des fichiers

Transcription:

14/01/2014 apt-get myapp Packaging d'applications Java pour Debian Emmanuel Bourg ebourg@apache.org @smanux

Intervenant Emmanuel Bourg Co-développeur de jdeb Mainteneur de bibliothèques et applications Java dans Debian 2

Introduction Pourquoi distribuer un package Debian? «On pourrait juste distribuer un fichier zip ou un jar exécutable, ça me laisserait plus de temps pour jouer à Candy Crush» 3

Introduction Pourquoi distribuer un package Debian? Popularité : 59% des serveurs Linux chez OVH (fonctionne pour Debian, Ubuntu et les OS dérivés) Mises à jour automatiques Normalisation du déploiement Déploiement sur un grand nombre de machine Intégration avec le bureau (icône de lancement) CLI : complétion automatique, manpages Serveurs : lancement automatique au démarrage, rotation des fichiers de log 4

Introduction Le statut de Java dans Debian OpenJDK 6 & 7 disponibles depuis 2007. Excellente compatibilité à quelques exceptions OpenJDK 8 dans les cartons Plus de version officielle depuis 2011 Packaging des versions officielles avec javapackage. Compatible avec Java 8 EA 5

Distribution des packages Comment distribuer ses packages? Téléchargement manuel Archive officielle Debian/Ubuntu Personal Package Archive Ubuntu (PPA) Repository privé (reprepro, mini-dak, mini-dinstall) 6

Créer ses packages Deux solutions techniques : Outils Debian : jdeb : Délicats à comprendre et maîtriser Seule solution pour les packages officiels Utilisable sous Linux uniquement Plugin Maven Tâche Ant Facilement intégrable dans un build existant Multi plate-forme 7

Outils Debian Installation : apt-get install build-essential svn-buildpackage git-buildpackage quilt 8

Outils Debian debian/control : Meta données sur le package source et les packages binaires générés 9

Outils Debian Source: jsch Section: java Priority: optional Maintainer: Debian Java Maintainers <pkg-javamaintainers@lists.alioth.debian.org> Build-Depends: debhelper (>= 7), cdbs, default-jdk Build-Depends-Indep: maven-repo-helper, ant (>= 1.6.5), libjzlib-java Standards-Version: 3.9.4 Homepage: http://www.jcraft.com/jsch/ Package: libjsch-java Architecture: all Depends: libjzlib-java Description: Java implementation of the SSH2 protocol JSch allows your programs to connect to an SSH server. It supports port forwarding, X11 forwarding, file transfer and more. Package: libjsch-java-doc Architecture: all Section: doc Recommends: default-jdk-doc Description: Java implementation of the SSH2 protocol - documentation JSch allows your programs to connect to an SSH server. It supports port forwarding, X11 forwarding, file transfer and more.. This package contains the example code. 10

Outils Debian debian/control : Meta données sur le package source et les packages binaires générés debian/changelog : Historique des modifications. Numéro de version 11

Outils Debian jsch (0.1.50-1) unstable; urgency=low * New upstream release (Closes: #659599) - Updated the OSGi metadata - Updated the pom.xml file - Refreshed the patch * Added the missing dependency on libjzlib-java (Closes: #705641) * Bumped Standards-Version to 3.9.4 - no changes required. * debian/copyright: Changed to comply with the Copyright Format 1.0 * debian/rules: Fixed the URL used to fetch the pom.xml file * debian/rules: Call mh_clean in the clean target to rebuilt properly * Removed the duplicate upstream changelog in libjsch-java-doc -- Emmanuel Bourg <ebourg@apache.org> Tue, 14 May 2013 09:57:30 +0200 jsch (0.1.42-2) unstable; urgency=low * Made the OSGi-metadata export a versioned package. (LP: #566025) * Removed depends on JRE; not required for Java Libraries any more. * Removed Jerry Haltom from Uploaders; thanks for your work on this package. * Bumped debhelper compat to 7. * Bumped Standards-Version to 3.8.4 - no changes required. * Converted source format to 3.0 (quilt). -- Niels Thykier <niels@thykier.net> Sun, 27 Jun 2010 20:48:45 +0200 12

Outils Debian debian/control : Meta données sur le package source et les packages binaires générés debian/changelog : Historique des modifications. Numéro de version debian/rules : Makefile pour construire le projet 13

Outils Debian debian/rules : commons-collections #!/usr/bin/make -f include /usr/share/cdbs/1/rules/debhelper.mk include /usr/share/cdbs/1/class/maven.mk JAVA_HOME := /usr/lib/jvm/default-java DEB_INSTALL_CHANGELOGS_ALL := RELEASE-NOTES.txt 14

Outils Debian debian/rules : jmeter #!/usr/bin/make -f include /usr/share/cdbs/1/rules/debhelper.mk include /usr/share/cdbs/1/class/javahelper.mk include /usr/share/cdbs/1/class/ant.mk JAVA_HOME_DIRS := /usr/lib/jvm/default-java DEB_JARS := ant-nodeps avalon-framework bcmail bcpkix bcprov bsf commons-collections3 commons-httpclient commons-io commons-jexl commonsjexl$ DEB_ANT_BUILD_TARGET := install docs-printable docs-api ANT_ARGS := -Dlib.api=/usr/share/java -Djmeter.version=$ (DEB_UPSTREAM_VERSION) install/jmeter:: mkdir -p debian/jmeter/usr/share/jmeter/bin install -m 755 debian/wrappers/jmeter debian/jmeter/usr/share/jmeter/bin install -m 755 bin/jmeter-server debian/jmeter/usr/share/jmeter/bin clean:: rm -Rf docs rm -f lib/junit/test.jar 15

Outils Debian debian/control : Meta données sur le package source et les packages binaires générés debian/changelog : Historique des modifications. Numéro de version debian/rules : Makefile pour construire le projet Fichiers optionnels : links, desktop, init, postinst, prerm, manpages Patches 16

Outils Debian Construction : debuild dpkg-buildpackage 17

Outils Debian Remarque : Pour les projets Maven, génération automatique de ces fichiers avec mh_make (package maven-debian-helper) 18

Outils Debian Contraintes des packages officiels Tout code doit pouvoir être compilé à partir de ses sources Ces sources doivent provenir d'un package Debian Une seule version de chaque package peut être installée 19

Outils Debian Conséquences : Impossible d'utiliser Maven Central! On utilise un repository local dans /usr/share/maven-repo Les dépendances doivent être packagées individuellement (700 bibliothèques déjà disponibles, ouf!) Pas de jars autorisés dans les sources Adaptation du code aux bibliothèques disponibles 20

jdeb Plugin Maven et tache Ant https://github.com/tcurdt/jdeb Projet démarré en 2007 3 développeurs, 16 contributeurs 21

jdeb Contraintes : Génère uniquement des packages binaires Ne convient pas aux archives officielles Debian/Ubuntu, ni aux PPA Connaître l'organisation des fichiers sous Debian 22

jdeb Avec Maven +---src +---deb +---control +---data +---etc +---bash_completion.d +---usr +---share +---myapp +---man +---man1 +---main +---java +---resources +---test +---java +---resources 23

jdeb Avec Maven <plugin> <artifactid>jdeb</artifactid> <groupid>org.vafer</groupid> <version>1.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>jdeb</goal> </goals> <configuration> <dataset> <data> <type>file</type> <src>${project.build.directory}/${project.build.finalname}.jar</src> <mapper> <type>perm</type> <prefix>/usr/share/myapp</prefix> </mapper> </data> <data> <type>directory</type> <src>src/deb/data</src> </data> </dataset> </configuration> </execution> </executions> </plugin> 24

jdeb Avec Maven <plugin> <artifactid>maven-antrun-plugin</artifactid> <version>1.7</version> <executions> <execution> <phase>deploy</phase> <goals> <goal>run</goal> </goals> <configuration> <target> <echo message="déploiement du package Debian sur repo.example.com"/> <input message=" Utilisateur:" addproperty="username"/> <input message=" Mot de passe:" addproperty="password"/> <scp todir="${username}:${password}@repo.example.com:/var/www/deb/incoming" trust="true" verbose="false"> <fileset dir="target" includes="*.deb"/> <fileset dir="target" includes="*.changes"/> </scp> </target> </configuration> </execution> </executions> </plugin> 25

jdeb Avec Ant <taskdef name="deb" classname="org.vafer.jdeb.ant.debanttask" classpath="lib/jdeb-1.1.jar"/> <deb destfile="myapp_${version}.deb" control="src/deb/control"> <tarfileset dir="src/deb/data" filemode="644"> <exclude name="/usr/bin"> </tarfileset> <tarfileset dir="src/deb/data" filemode="755"> <include name="/usr/bin"> </tarfileset> <tarfileset dir="build" filemode="644" prefix="/usr/share/myapp"> <include name="myapp-${version}.jar"> </tarfileset> <link name="/usr/share/java/myapp.jar" target="/usr/share/myapp/myapp-${version}.jar"/> </deb> 26

Resources Debian Policy Manual http://www.debian.org/doc/debian-policy/ Debian Policy for Java http://www.debian.org/doc/packagingmanuals/java-policy/ Jdeb https://github.com/tcurdt/jdeb Entraide : IRC : #debian-java sur irc.debian.org 27

Questions / Réponses

Merci de votre attention!