page1
Logiciel libre
Open Source
Cours technique sur
les logiciels libres
page2
Auteurs et contributeurs
Contributeurs :
M.-A. DARCHE (auteur original)
Stéfane FERMIGIER
David LAPETINA
page3
Panorama des différentes distributions GNU-Linux (1)
Ubuntu :
La distribution actuellement la plus populaire pour les postes de travail
Objectif : la facilité d'utilisation pour les utilisateurs
Cycle de vie des distributions planifié et fixe
1 version tous les 6 mois
1 LTS tous les 2 ans
Support sur 5 ans
Basée sur la distribution Debian
Financée par le millionnaire Mark Shuttleworth
(suite à la revente de son entreprise Thawte)
page4
Panorama des différentes distributions GNU-Linux (2)
Mageia / Mandriva :
très poussée au niveau de l'utilisabilité et utilisation sur le poste de travail
un éditeur francophone face à une majorité anglo-saxone
également très présent en Amérique du sud
RedHat, CentOS, Fedora :
très utilisée en entreprise sur les serveurs
très bon support matériel
beaucoup de développeurs du noyau Linux
page5
Panorama des différentes distributions GNU-Linux (3)
Debian :
LA distribution communautaire
exclusivement composée de logiciels libres
objectif : l'excellence technique
la distribution à l'origine d'APT
(Advanced Packaging Tool)
le plus grand nombre
d'architectures matérielles supportées
la distribution préférée des administrateurs systèmes
et des hébergeurs
page6
Panorama des différentes distributions GNU-Linux (4)
page7
Les distributions *BSD
Linux est le clone d'Unix libre le plus célèbre,
mais ce n'est pas le seul disponible.
Il y a aussi les distributions *BSD :
page8
Panorama des logiciels libres phares (1) : briques de base
Linux : noyau Unix
Knoppix : distribution de programmes exécutables sans installation (CD vif ou Live CD)
GCC, Perl, Python, Ruby on Rails : plateformes de programmation, compilation et exécution
VIM, Emacs, Eclipse : éditeurs de texte, environnements de développement
KDE, GNOME : bureaux graphiques
Git, Mercurial, SVN : gestion de versions, gestion de sources
page9
Panorama des logiciels libres phares (2) : bureautique
Firefox : navigateur web
Thunderbird : application de gestion du courriel
LibreOffice / OpenOffice.org : traitement de texte, tableur, présentation et dessin vectoriel
page10
Panorama des logiciels libres phares (3) : multimédia
VLC : lecteur multimédia
GIMP : dessin 2D
Inkscape : dessin vectoriel
Scribus : PAO
Blender : dessin et animation 3D
Audacity : manipulation de données audio numériques
page11
Panorama des logiciels libres phares (4) : côté serveur
Apache httpd : serveur Web
Samba : partage de fichiers et d'imprimantes SMB pour dialogue avec le monde Microsoft Windows
Node.js
PHP : langage de scripts, langage de programmation et plateforme web
Ruby On Rails
page12
Panorama des logiciels libres phares (5) : App + ECM
Tomcat : serveur d'application Java (servlets et JSP)
GlassFish : serveur d'application Java EE
JBoss : serveur d'application Java EE,
longtemps le plus rapide et le plus facile à utiliser
JOnAS : serveur d'application Java EE
de l'écosystème OW2
Nuxeo : plus haut niveau encore, gestion de contenu
(Enterprise Content Management, ECM)
page13
Les certifications Linux / Logiciels libres
Les certifications LPI (Linux Professional Institute) :
définies par les grands acteurs du domaine
neutres vis-à-vis des éditeurs de distributions GNU-Linux
gérées par des organismes locaux dans les différentes régions du monde, notamment la francophonie avec documentations et questions des examens
en français
prix adapté en fonction des zones géographiques
page14
page15
Les outils
On « construit » beaucoup quand on développe des logiciels libres
Avoir des outils efficaces et puissants est une nécessité
Les Unices (*nix), et plus particulièrement GNU-Linux, sont les meilleures boites à outil qui existent à ce jour, grâce à la ligne de commande et au chaînage des commandes
page16
Les outils d'automatisation de tâches et de construction
page17
Les outils d'automatisation de tâches
page18
page19
Les autotools
Les autotools sont une suite d'outils comme autoconf et automake pour créer des fichiers Makefile en fonction de la plateforme et en fonction de variables.
Une utilisation classique :
$ ./configure
$ make
$ make install
page20
page21
Ant (2)
Désavantages :
Moins proche de l'interpréteur de commandes (shell)
Plus long à écrire qu'un Makefile car il faut structurer avec des balises XML (mais écriture facilitée par des logiciels tiers, par exemple par Eclipse)
Avantages :
Orientation métier Java : commandes facilitant la réalisation de tâches spécifiques Java (compilation de fichiers source .java, création de JAR, génération de JavaDoc, etc.)
Grand nombre d'outils tiers (greffons, etc.) de par l'utilisation d'un fichier XML très structurant
page22
Maven (1)
Maven est un outil de plus haut niveau que Make et Ant. C'est un outil de structuration de projet qui impose une structure normative et une manière de travailler.
Alors qu'avec Make et Ant les fichiers utilisés sont procéduraux, avec Maven on décrit des projets avec leurs dépendances au lieu de décrire des actions. Avec Maven on décrit un Project Object Model (POM).
La description des actions se met dans un fichier pom.xml.
page23
page24
Maven (3)
Avantages :
Orienté projet, il suffit de décrire les dépendances des projets les uns par rapport aux autres et Maven se charge de générer tous les fichiers JAR, WAR, EAR nécessaires.
Les projets gérés par Maven peuvent être mis en ligne et leur récupération et leur gestion devient alors hautement automatisable, de manière comparable à des svn:externals et des référentiels APT
Complètement modulaire et extensible par greffon (plugin)
page25
Les outils
d'environnements virtuels
et de virtualisation
page26
Les outils de virtualisation
Pour bénéficier de versions différentes d'applications, de bibliothèques ou d'outils
Pour reproduire et tester dans des environnements particuliers
Pour des outils en tant que root
Pour un besoin donné on choisit généralement l'outil le plus adapté :le moins consommateur de ressources (place, mémoire, processeur)
le plus facile à administrer et à déployer
Pour un besoin donné on choisit généralement l'outil le plus adapté :
page27
Les outils de virtualisation
Les outils de virtualisation vont du plus petit au plus total en passant par tous les stades intermédiaires :
page28
Outils d'environnements virtuels
page29
Les outils de gestion de sources
page30
Les systèmes libres
de gestion de version (1)
Anciens systèmes centralisés :
page31
Les systèmes libres
de gestion de version (2)
Systèmes de gestion de version décentralisés :
Mercurial (Hg) :
Commandes et logique proches de Subversion
Fonctionne uniquement en espace utilisateur (écrit en Python, plus grande sécurité, mécanisme d'extensions)
Utilisé par de très nombreux gros projets :
Mozilla, OpenJDK, Python, etc.
Git :
page32
Les outils de diagnostic système
page33
Les outils
de diagnostic (1)
Diagnostique erreur d'exécution système :
Diagnostique des processus en cours :
Diagnostique des ports utilisés :
Diagnostique du trafic réseau :
Examen des logs
page34
Les outils de diagnostic (2) : strace
$ strace firefox > strace.log 2>&1
$ strace.log | grep -i file
$ strace.log | grep -i open
page35
Les outils de diagnostic (3) : telnet
$ telnet lipn.univ-paris13.fr 80
$ telnet smtp.laposte.net 25
$ telnet localhost 8080
page36
Les outils de diagnostic (3) : netstat
$ netstat -ntap
(Tous les processus ne peuvent être identifiés, les infos sur les processus non possédés ne seront pas affichées, vous devez être root pour les voir toutes.)
=> Il vaut mieux lancer netstat en tant que root :
# netstat -ntap
Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 3097/cupsd
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 3144/master
tcp6 0 0 ::1:631 :::* LISTEN 3097/cupsd
tcp6 0 0 :::25 :::* LISTEN 3144/master
page37
Les outils
de diagnostic (4) : wireshark
$ strace firefox > strace.log 2>&1
$ strace.log | grep -i file
$ strace.log | grep -i open
page38
Les outils de diagnostic
de navigateurs web
page39
Outils de diagnostic web
Firefox et Google Chrome contiennent (de base ou sous forme d'extensions) des outils de diagnostique très puissant.
page40