Datacenter@home : ajout d'une appliance Vcenter 5.1 Linux et mise à jour ESXi 5.1 des serveurs vmware d'homologation et de production.
Ma vision de l'informatique réduite à sa plus simple expression : des carrés et des ronds. À force de vouloir compliquer, on a oublié l'essentiel. La suite...
Datacenter@home : un serveur apache virtuel pour héberger le site philippe.charnier.fr. Un serveur pour le proxy squid et squidguard (suppression des pubs dans les pages web).
Datacenter@home : un serveur pour héberger des listes de messageries, Postfix et Mailman ont été retenus.
FreeBSD commit privilege: a PC not running FreeBSD is like a venusian with no tentacles.
La réalisation de ce site est l'occasion de se remettre à la page des technologies web. Il est écrit en HTML5 et javascript. La suite...
"I'd like to propose a public round of thanks to philippe..." - Garett Wollman, MIT.
Mettre en ligne des vidéos montrant le fonctionnement de mon logiciel iclab de segmentation en régions ainsi que de mon utilitaire images2video de création d'animations.
Participation aux 1ers états généraux de l'Open Source organisés par le Syntec numérique sous le haut patronage de Madame Fleur Pellerin, ministre déléguée aux PME, à l'innovation et à l'économie numérique. La suite...
Suite à l'intention de cession de CA Cheuvreux par le groupe Crédit Agricole, quelques centaines de postes vont être supprimés courant 2013. L'état des lieux en juillet 2012 et en décembre 2012. décembre 2012.
Architecte senior des systèmes Unix Linux et Solaris, des environnements virtualisés Vmware et des stockages San (3PAR, EMC2, HP EVA) et Nas (NetApp). Référent dans ces technologies.
Responsabilité du maintien en conditions opérationnelles strictes dans le contexte des salles de marchés, des évolutions technologiques, de la continuation de l'activité en cas de sinistre, équipe de 4 administrateurs systèmes Unix Linux et 2 administrateurs monitoring.
Les actions suivantes ont été réalisées :
Nombreuses missions en Europe et aux États-unis.
Administrateur des systèmes Unix Solaris et HP-UX à Thomson-CSF RGS puis Dec OSF/1 et Aix à Thomson-CSF Airsys.
Maintien en conditions opérationnelles.
Les actions suivantes ont été réalisées :
Habilitation Confidentiel Défense.
En Janvier 1995, j'ai obtenu avec mention très honorable, une thèse en informatique (Outils algorithmiques pour le codage interpixel et ses applications) au Laboratoire d'Informatique, de Robotique et de Microélectronique de Montpellier.
J'ai présenté une application de mes travaux à la conférence MVA'94 Tokyo.
J'ai assuré des travaux dirigés (288 heures) ainsi que des encadrements de projets, pour les formations suivantes : 2nde année d'IUT, Licence, 1ère et 2nde années d'IUP, Maîtrise, École d'ingénieurs EERIE de Nîmes.
Au cours de ma scolarité j'ai suivi les enseignements suivants : DEA maîtrise licence d'informatique, niveau licence de mathématique, université de Montpellier II. Classes préparatoires aux grandes écoles, baccalauréat série E.
Les domaines suivants sont maîtrisés :
Support aux utilisateurs et aux équipes de développement.
Évaluation de nouvelles technologies, force de propositions.
Aptitude à travailler avec rigueur et méthode.
Expérience pratique en matière de direction et de gestion du personnel technique. Entretiens techniques de recrutement.
Capacité à concevoir et mettre en place des services informatiques performants et fiables.
Anglais (850 au test TOEIC).
Projet FreeBSD, commit privilege.
Pilote ULM et F1.
Organisation de rallyes touristiques automobiles et ULM en France et au Maroc.
Organisation du congrès GUTenberg'95 : une nouvelle vision des documents , 1 et 2 juin 1995 à La Grande Motte.
Réalisation des sites phcha : broderie pour transformer une photo en grille de broderie en utilisant le logiciel écrit pendant ma thèse, documentation qui contient quelques notes d'administration système, gps pour gérer un catalogue de points gps et fabriquer les fichiers sur une sélection pour ne pas saturer la mémoire du gps, ....
Dernières lectures : la saga des vaccins contre les virus (Jean-François Saluzzo, éditions Belin), chronique du règne de Charles IX (Prosper Mérimée, éditions Charpentier), psychologie du manager (Patrick Amar, éditions Dunod).
Né à Fontainebleau le 19 mai 1966, je suis marié et père de 2 enfants. Après quelques détours par Béziers, Montpellier et Paris, je réside actuellement dans un village à 30 minutes de Paris. Je travaille à La Défense.
Être à fond dans la ligne droite des stands, c'est surprenant, mais c'est vraiment au moment de l'inscription dans le virage qui suit, que la concentration est au point culminant. Il faut une sacrée dose de confiance pour confier un engin de 700 cv. La journée avait commencé par une reconnaissance du circuit au volant d'une Porsche 911 turbo très civilisée par rapport à une 964 Carrera Cup ou une 964 RS que je connaissais déjà, j'ai ensuite eu l'occasion de piloter crescendo diverses monoplaces issues des catégories formule Ford, formule 3, formule 3000, histoire d'évaluer mes capacités techniques et mentales.
J'ai été parmi les premiers à posséder un Racer 503 XP11 et un GTE 582 Kiss 450. J'ai eu l'opportunité de piloter de nombreux autres modèles. J'ai vécu de nombreuses aventures au cours de rallyes en France et au Maroc, ainsi que de nombreuses situations atypiques (pannes moteur ou d'essence, collision en vol avec un albatros, crevaisons, crash et casse du train arrière puis rebond.
Quelques voyages en Afrique (2 au Maroc, Cameroun), en Asie (Japon), en Amérique du nord (États-unis : Las Vegas et 4 à New-York) et en Europe (5 en Allemagne, Belgique, 5 en Espagne, Danemark, Finlande, 3 en Italie, Norvège, 3 au Pays-bas, Portugal, 5 au Royaume uni, 2 en Suède, 7 en Suisse).
À chaque fois que j'ouvre le manuel d'utilisation d'un GPS, l'explication fournie est plutôt simpliste : le GPS reçoit des messages en provenance de satellites et utilise leur temps de parcours ainsi que la position connue des satellites pour déduire sa propre position. Sauf que le GPS n'est pas à l'heure (atomique), et il lui est donc difficile de connaître le moment de l'envoi du message par le satellite.
Supposons deux satellites munis d'une horloge atomique (t) très précise (et très coûteuse) et le GPS muni d'une horloge interne (t') que je viens d'initialiser à l'heure de ma montre.
Déterminer le temps nécessaire à un message pour parcourir la distance depuis son satellite émetteur jusqu'au récepteur GPS permet d'en déduire cette distance. C'est le rayon d'une sphère de centre le satellite sur laquelle se trouve le GPS.
Dans le pire des cas, deux satellites déterminent deux sphères dont l'intersection est un cercle, ce qui ne suffit pas à positionner le GPS. Si on ajoute un troisième satellite, le cercle des solutions se trouve réduit à deux points, qui sont différentiables par l'ajout d'un quatrième satellite. Comme les satellites sont tous à la même altitude, les deux solutions données par trois satellites ne diffèrent que par leur altitude.
Le problème réside donc dans notre capacité à déterminer le décalage entre l'horloge atomique et l'horloge interne du GPS, en remarquant que ce décalage est le même pour tous les satellites.
L'instant (t1) dans le référentiel de temps des satellites est codé dans les messages émis par chacun des 24 satellites utilisés par ce système et qui sont répartis de sorte que chaque point du globe soit atteignable par assez de satellites et que quatre au moins suffisent à déterminer la position. Il est aussi possible de déterminer de quel satellite provient un message.
Comme le GPS ne contient pas lui même une horloge atomique, il ne connait pas l'inexactitude de son horloge par rapport à l'heure des satellites. Par contre, la précision est suffisante pour que les durées soient déterminées. Il connait en particulier les différences entre les satellites (t'3 - t'2).
La remarque pertinente est l'unicité de la position du GPS (le point noir sur le dessin ci-dessus). Elle va permettre de déduire la valeur (t2 - t1) qui satisfait cette condition alors que (t'2 - t1) donne les points rouges. La distance aux autres satellites est aussi liée a (t2 - t1) (le temps (t'3 - t'2) est connu).
Avec (t1) contenu dans le message et (t2 - t1) calculé, on connait maintenant (t2), ce qui va du même coup mettre le GPS à l'heure atomique (on veut t2 = t'2).
Comme il faut savoir se faire plaisir, je suis devenu porschiste en même temps que propriétaire de cette 911 Carrera 3.2 de 1986. L'idée de départ était d'essayer tous les modèles jusqu'au plus récent. Et puis les quelques frais engagés pour remettre celle-ci en état m'incitent maintenant à en profiter un peu.
Tout le monde sera d'accord sur le fait que la 911 Carrera 3.2 est le meilleur choix pour mettre le pied à l'étrier car les frais d'entretien et la consommation sont modérés en comparaison des autres modèles. Il semble qu'il existe un gros écart de frais d'entretien entre la 3.2 et la 964. Il faut compter 2 litres de plus pour la 964. Ceci dit, certains frais ne seraient sans doute pas à faire sur un modèle plus récent.
La série E de 1984 voit apparaître une cylindrée de 3.2 litres et une puissance de 231 chevaux en remplacement de la 911 SC des années précédentes. La vitesse de pointe, de 245 km/h, est réservée aux autoroutes allemandes, bien zur! Les séries F et G de 1985 et 1986 n'apportent pas de changements notables et c'est avec la série H de 1987 que la nouvelle boîte G50 remplace la 915. Une boîte de type G50 est un argument souvent mis en avant dans les annonces, pour justifier un prix de vente plus élevé. C'est compréhensible même si de mon point de vue, il vaut mieux avoir la climatisation et les sièges en cuir. La 911 Carrera 3.2 sera livrée jusqu'en 1989, avant d'être remplacée par la 911 type 964, en version Carrera 2 et Carrera 4. Comme on peut le lire dans Flat 6 Magazine numéro 139 (et dans d'autres numéros), les purs et durs considèrent que la 3.2 est la dernière 911 à l'ancienne.
De toute évidence, la consommation dépend du type de parcours et de la nervosité du conducteur. Il ne faudrait pas généraliser à partir de mon expérience. Disons que pour ce qui me concerne, cette voiture ne consomme pas beaucoup en comparaison des sensations qu'elle procure. Le point le plus bas du graphique correspond à 9.11 litres, c'est un hasard.
La partie droite, autour des 150000 km, correspond à des parcours plutôt autoroutiers.
De toute évidence, lorsque l'on se rend propriétaire d'un véhicule d'occasion, il faut prévoir des frais de remise en état. Je pense maintenant être capable de poser les bonnes questions, de faire moi même les vérifications d'usage mais cela m'a un peu manqué au moment de l'achat, pris par l'euphorie d'une telle acquisition. Ma voiture a été expertisée 20885 euros, en Octobre 1998 (c'est le prix qu'elle vaut encore en 2012). Outre les simples vidanges qui ne sont pas renseignées ici, j'ai fait faire les opérations suivantes :
date | kilométrage | opération |
11/1998 | 130958 | achat d'une 911 carrera 3.2 modèle 06/86 en provenance d'Allemagne, carnet d'entretien, peinture métallisée gris anthracite, jantes Fuchs 15", vitres électriques, toit ouvrant électrique, rétroviseurs électriques, sièges électriques, climatisation, tout cuir, alarme sra4* coupe-circuit, pneus neufs (195 65 R15 91W N1 Pi relli P6000 à l'avant et 215 60 R15 94 W N1 Pirelli P6000 à l'arrière) |
02/1999 | 133590 | pose d'une alarme sra4* volumétrique et anti-soulèvement à télécommande avec centralisation des portes |
07/2000 | 145395 | changement des plaquettes avant, des disques avant et des étriers avant |
11/2000 | 145946 | changement de la batterie, contrôle technique |
02/2001 | 146283 | changement de l'embrayage et du joint spi, changement des plaquettes arrière, recharge de la climatisation |
10/2001 | 147356 | changement des barres de torsion arrière, réglage de la hauteur de caisse, révision des 20000 avec réglage des culbuteurs, changement de la turbine de refroidissement et de la courroie |
02/2002 | 148461 | changement de l'alternateur |
11/2002 | 153128 | contrôle technique |
02/2003 | pose d'un auto-radio lecteur de CD et MP3 | |
09/2003 | 157062 | changement des étriers arrière, changement du joint de porte, changement du liquide de frein |
07/2012 | 165000 | changement des étriers, changement du liquide de frein, ... |
J'ai l'habitude d'aller faire entretenir ma voiture au centre Porsche Ravé sur la RN 20 à hauteur d'Arpajon, c'est à 70 km de chez moi. Je pose ma voiture, ils proposent toujours de me ramener à la gare RER toute proche, et je reviens la chercher un Samedi matin quand elle est prête.
C'est là il paraît que l'on trouve tout et n'importe quoi dans les prix et dans les prestations, ce qui rend les comparaisons un peu délicates. Certaines assurances refusent d'assurer un tel engin, même si on a déjà chez eux un contrat pour un autre véhicule. Le mieux est de faire la liste des assureurs à proximité de son domicile et de les visiter tous. Il m'a été demandé d'avoir un garage pour la ranger.
Cliquez sur une image pour l'agrandir.
Daily est une suite d'une centaine de scripts qui s'exécutent chaque nuit sur chaque machine. Ils assurent la mise en conformité du parc en modifiant si nécessaire les fichiers de configuration ou leurs droits.
Des informations telles que taille mémoire, version de bios ou de système, équipement réseau connecté (grâce à CDP, ce qui permet de faire de la géolocalisation) sont ainsi collectées.
Toutes les informations sont remontées dans une base de données et permettent de maintenir standard un parc conséquent.
J'ai installé un datacenter dans la buanderie. Il est composé de plusieurs machines rackées dans une baie, dont 2 ESXi (HP DL360 G5 et DL365), un pour la production et un pour l'homologation. Pour cause de licence, les fonctionnalités de clustering vmware (vMotion, DRS, vDS, vCenter) n'ont pas été retenues. La sauvegarde est réalisée par amanda. Les domaines charnier.fr et phcha.com sont hébergés sur ce datacenter.
Plusieurs serveurs DNS, DHCP (mode failover), Apache, Mysql (réplication) et NTP permettent d'assurer la redondance de service.
Iclab (interpixel coding laboratory) est un logiciel de segmentation en régions illustrant les algorithmes décrits dans ma thèse. Utilise le codage interpixel qui décrit les régions par une suite de directions nord sud est ouest et un point de départ. Ce chemin est construit entre les pixels.
L'image du bureau et la résultat de la segmentation en régions.
L'affichage des contours uniquement et comparaison avec le détecteur de contours de Deriche.
Le comportement de l'algorithme sur des dégradés de niveaux de gris.
Un exemple pour la reconnaissance d'objets.
Images2video est un logiciel de création de films d'animation basé sur un fichier de règles représentant le synopsis.
Le fichier de règles contient des commentaires ou des lignes d'instructions composées de 6 colonnes : t_start t_stop x_start y_start filename options.
Les temps sont au format ssff (ss secondes, ff frames de 0 a 24).
Les images doivent être au format png 24 bits.
Si t_stop vaut 0, on continue jusqu'à la fin de la vidéo.
La première ligne donne l'image de fond d'écran (720x576 pour un format DVD) et la durée (entre t_start et t_stop) de la vidéo.
0 6500 0 0 background.png
Par convention, la couleur #deadc0 est invisible.
#timeshift ssff | tous les horodatages suivants seront décalés de la valeur indiquée. |
#include filename | le fichier filename est inclus. |
#subtitle-time ssff | horodatage du prochain sous-titre. |
#subtitle-text text | texte du sous titre, le temps d'attente est indiqué en millisecondes après le signe $ sinon il vaut 50 millisecondes par caractère. Le signe > décale de 200 millisecondes. |
#subtitle-text | Etudions le fonctionnement d'un reseau en prenant l'exemple$4667 |
#subtitle-text | >>de 2 machines equipees de cartes ethernet.$4500 |
opacity-start, opacity-stop [0..100] | opacité de l'image (0 pour transparent). |
window-left-start,window-left-stop [0..100] | pourcentage d'image visible. |
window-right-start, window-right-stop [0..100] | pourcentage d'image visible. |
window-up-start, window-up-stop [0..100] | pourcentage d'image visible. |
window-down-start, window-down-stop [0..100] | pourcentage d'image visible. |
move-x | déplacement en x entre t_start et t_stop. |
move-y | déplacement en y entre t_start et t_stop. |
strech | la durée t_stop - t_start est multipliée par ce pourcentage. |
path | chemin zig-zag de déplacement de l'image sous forme d'une suite de coordonnées (x, y).
path=100-400-200-400-200-100-300-100 il faut ajouter move-x et move-y pour fermer le chemin. |
repeat | répète la même ligne en décalant t_start et t_stop de 10 frames. |
remanence | l'image reste visible pendant ce nombre de frames, après t_stop. |
center-image | avec cette option, c'est le point central de l'image qui sera pris comme référence et non le point en haut à gauche. |
# columns: t_start t_stop x_start y_start filename # options: move-x=0,move-y=0,opacity-start=100,opacity-stop=100,strech=100 # path=x1-y1-x2-y2-x3-y3 (need move-x and move-y) # # t_stop == 0 means continue to the end of video (video t_stop) # # first line gives background image and video t_stop # #timeshift 100 # # all dates are in SSFF format (second, frame) # second_start sequence_start seconde_stop sequence_stop x_start y_start filename # move-x=0,move-y=0,opacity-start=100,opacity-stop=100 # # la premiere image est particuliere, elle donne le fond et la duree 0 6000 0 0 background.png 0 700 266 255 pythagore-1.png 300 700 100 205 pythagore-6.png 300 700 -196 -10 pythagore-9.png #timeshift 700 0 414 266 255 pythagore-1.png move-x=-100,move-y=-205 0 414 100 205 pythagore-6.png move-x=-100,move-y=-205 414 0 166 50 pythagore-1.png 414 0 0 0 pythagore-6.png #timeshift 0 #timeshift 1200 0 0 500 50 pythagore-1.png 0 0 500 50 pythagore-2.png 0 0 500 150 pythagore-4.png 0 0 500 150 pythagore-3.png 0 0 580 343 pythagore-5.png 100 0 0 0 pythagore-7-1.png 100 0 0 -50 pythagore-7-2.png 100 0 0 50 pythagore-7-3.png #timeshift 0 #timeshift 1400 0 707 500 50 pythagore-1.png move-x=-334,move-y=149 707 0 166 199 pythagore-1.png 100 901 500 150 pythagore-4.png move-x=-400,move-y=50 901 0 100 200 pythagore-4.png 200 1212 500 50 pythagore-2.png move-x=-400,move-y=340 1212 0 100 390 pythagore-2.png 300 719 500 150 pythagore-3.png move-x=-210,move-y=115 719 0 290 265 pythagore-3.png 1212 0 0 0 pythagore-8-1.png 1400 2211 580 343 pythagore-5.png move-x=-415,move-y=-80 2211 0 165 263 pythagore-5.png 2211 2310 0 0 pythagore-8-2.png 2311 2410 0 0 pythagore-8-3.png 2411 2510 0 0 pythagore-8-4.png 2511 2610 0 0 pythagore-8-5.png 2611 2710 0 0 pythagore-8-6.png 2711 0 0 0 pythagore-8-7.png #timeshift 0 #timeshift 4200 0 0 0 10 pythagore-9.png #timeshift 0
La démonstration du théorème de Pythagore en vidéo est disponible en téléchargement ici ou visible sur YouTube.
Un autre exemple d'animation : collision dans un réseau est disponible en téléchargement ici ou visible sur YouTube.
Ip_sensibles utilise un fichier des hosts augmenté et construit les maps DNS ainsi qu'une map NIS en vérifiant au passage la conformité du fichier (une adresse IP dupliquée par exemple). Les réseaux sont déclarés et l'utilitaire assure que chaque adresse IP se rapporte au réseau déclaré directement au dessus.
Un extrait du fichier des hosts :
# :n=192.168.51.64:m=255.255.255.224:name=R1:g=192.168.51.94:dns1=192.168.18.77:dns2=192.168.77.19:dynamicrange24=75-93: # ce reseau est constitue des adresses IP 192.168.51.65 a 192.168.51.94 # les adresses .65 a .74 sont fixes # les adresses .75 a .93 sont gerees par le DHCP, DNS dynamique de serveur1/serveur2 192.168.51.65 host5165 192.168.51.66 host5166 192.168.51.67 host5166 192.168.51.94 pagtw5194
Il apparaît que la plage d'adressage n'est pas du type /24 ce qui risque de poser un problème car les maps reverse du DNS sont de ce type.
Pour garder une administration simple (et un fichier des hosts éditable), il va falloir séparer les IP fixes reservées aux serveurs et les IP dynamiques reservées aux clients. Une corruption éventuelle et une indiponibilité du service DHCP ne doit pas pénaliser l'accès aux serveurs.
Ip_sensibles combine la simplicité d'un fichier des hosts avec DHCP, DNS dynamique dans un plan d'adressage qui n'est pas simplement /24.
À Crédit Agricole Cheuvreux, plus de 13000 modifications des hosts ont été supervisées par Ip_sensibles. Quelques incidents majeurs ont ainsi été évités.
L'utilitaire pschecker détecte à partir d'un fichier de configuration et du résultat de la commande ps(1), les processus manquants, ceux qui ne devraient pas tourner à cette heure, ceux qui ne sont pas déclarés, les gros consommateurs de CPU, ... et remonte des alarmes. Le code source est disponible ici.
L'utilitaire netchecker détecte à partir d'un fichier de configuration et du résultat de la commande netstat(1), les connexions manquantes, celles qui ne devraient pas être établies à cette heure et remonte des alarmes. Le code source est disponible ici.
À Crédit Agricole Cheuvreux, c'est 1600 exécutions par minute de ces programmes qui constituent la première brique du système de surveillance du parc informatique.
L'utilisation classique de la commande ssh (voir la documentation d'installation et d'utilisation) permet d'obtenir un accès distant sécurisé en remplacement de rsh. Il est aussi possible de faire des copies de fichiers avec scp et plus généralement d'encapsuler une connexion TCP/IP classique dans un tunnel sécurisé.
Un tunnel ssh permet d'établir une connexion TCP/IP à travers un canal sécurisé. Dans le cas général, le tunnel ne concerne qu'une partie de la connexion, la sortie du tunnel étant ensuite redirigée vers la machine destination par un canal non sécurisé.
Deux types sont disponibles, ils sont différenciés à l'aide des options -L (local) et -R (remote) de la ligne de commande.
Le point d'entrée du tunnel (A.port_A) se situe sur la machine locale (celle qui exécute la commande ssh). Le mode local est activé par la présence de l'option -L sur la ligne de commande depuis la machine A :
A# ssh -N -L port_A:C:port_C B
Une connexion sécurisée est établie avec la machine B sur le port où sshd est en écoute (c'est le port 22 par défaut) puis prolongée de manière non sécurisée vers la machine C (qui peut être B) comme le montre le schéma général ci-dessus. Le point d'entrée se trouve sur le port_A de la machine A et n'est accessible que localement (la commande netstat rapporte localhost.port_A) sauf si l'option -g a été ajoutée à la ligne de commande auquel cas il est possible de se connecter au point d'entrée depuis une machine externe par un canal non sécurisé (la commande netstat rapporte *.port_A dans ce cas).
Le point d'entrée du tunnel (B.port_B) se situe sur la machine distante. Il est activé par la présence de l'option -R sur la ligne de commande depuis la machine A :
A# ssh -N -R port_B:C:port_C B
Une connexion sécurisée est établie avec la machine B sur le port où sshd est en écoute. La connexion est par ailleurs prolongée de manière non sécurisée vers la machine C (qui peut être A) comme le montre le schéma général ci-dessus. Le point d'entrée se trouve sur le port_B de la machine B et n'est accessible que localement (la commande netstat rapporte localhost.port_B).
Contrairement au cas précédent, il n'est pas possible d'utiliser l'option -g pour la machine B, mais cette limitation peut être levée par la création d'un second tunnel de type local sur la machine B.
Ne pas utiliser l'option -N donne en plus un accès sur la machine B.
Création d'un second tunnel de type local sur la machine B. Le point d'entrée a été externalisé et se trouve maintenant sur le port_B1 de la machine B. Il est accessible depuis une machine externe (la commande netstat rapporte *.port_B1) :
A# ssh -N -R port_B:C:port_C B
B# ssh -g -N -L port_B1:localhost:port_B localhost
Le système cvs permet de conserver les différentes versions d'un fichier ou d'un ensemble de fichiers et de les manipuler. Cela permet de conserver un historique des modifications et facilite le travail en équipe.
On se propose de réunir les deux fonctionnalités pour sécuriser l'accès à une archive cvs située sur un serveur distant en transportant les données à travers un canal ssh.
Il existe au moins deux méthodes internes à l'application cvs pour accéder à un repository distant : :pserver: et :ext:. L'authentification de la méthode :ext: s'appuie sur rsh ou ssh, alors que celle de :pserver: est triviale. De plus, l'utilisation de la méthode :pserver: n'est plus possible lorsque le compte destination (sur le serveur) est root, pour des raisons de sécurité. Ce n'est pas pour autant qu'il faut utiliser le compte destination root lorsque l'on peut s'en passer.
La première étape consiste à créer un accès ssh, à l'aide d'une commande de type :
client# ssh-keygen -b 2048 -t dsa
puis de déposer les fichiers id_dsa et id_dsa.pub générés dans $HOME/.ssh/ sur le client, enfin d'ajouter le contenu de la clé publique $HOME/.ssh/id_dsa.pub au contenu de $HOME/.ssh/authorized_keys (ou tout autre fichier spécifié dans le fichier de configuration de sshd) du compte destination propriétaire du repository cvs sur le serveur, expcvs dans mon exemple.
La ligne contenant la clé dans $HOME/.ssh/authorized_keys doit être préfixée par les directives suivantes (sur la même ligne que la clé qui commence par ssh-dss ....
) :
command="/usr/local/bin/cvs -T /usr/users/expcvs/tmp server",no-port-forwarding,no-pty,no-X11-forwarding,no-agent-forwarding
On remarque alors que le fichier $HOME/.cvspass est réservé à la méthode :pserver: et n'est pas utilisé par la méthode :ext:. Il contient un codage trivial du mot de passe du compte destination.
Il faut tester que l'accès ssh est fonctionnel depuis le client avant de poursuivre :
client# ssh -l expcvs serveur
Si le compte sur le serveur est root, il faut modifier le fichier de configuration de sshd pour l'autoriser explicitement (variable PermitRootLogin).
On peut ensuite compléter les variables d'environnement suivantes :
CVSROOT=:ext:expcvs@serveur:/path/to/cvs/repository
CVS_SERVER=/usr/bin/cvs
CVS_RSH=/usr/bin/ssh
sur le client, et faire un test :
client# cvs co .
la clé ssh est demandée puis la commande est exécutée.
On remarque que l'entrée pserver de /etc/inetd.conf n'est pas nécessaire pour la méthode :ext:.
Je ne sais pas ce que représente l'informatique pour vous, mais quand je cherche à simplifier au maximum toutes mes connaissances dans ce domaine, je tombe sur le schéma suivant, la réduction ultime.
Cela veut dire que d'un objet et d'une transformation sur cet objet, on obtient un autre objet, que l'on va pouvoir utiliser tel quel ou que l'on va pouvoir transformer encore pour finalement obtenir le résultat que l'on cherche à déduire de l'objet initial.
La composition des transformations, c'est à dire l'utilisation de plusieurs étapes nous conduit vers le premier choix fondamental de l'informatique moderne (ce n'était pas le cas au commencement) qui s'énonce ainsi : le concepteur d'un logiciel doit-il proposer les transformations élémentaires (figure de gauche) et laisser l'utilisateur faire la composition lui-même ou doit-il proposer un assemblage illustrant les utilisations courantes (figure de droite), plus évolué que les simples transformations, et par définition plus simple puisque devenu une réduction ultime.
Ce choix n'existait pas au commencement de l'informatique car les technologies disponibles alors (capacité mémoire, puissance de calcul, nécessité de faire un contrôle à chaque étape) ne permettaient de faire que des étapes simples.
Un assemblage proposé par le concepteur d'un logiciel (figure de droite) n'augmente pas la puissance du sytème global, bien au contraire, car en figeant la composition des transformations, il interdit un agencement différent. Les fonctionnalités sont donc réduites à ce qui a été initialement prévu, le reste n'est pas possible. Par contre, il décharge l'utilisateur d'un effort de réflexion dans le cas ou ce dernier chercherait l'agencement de l'utilisation courante. Dans certains cas, un bouton peut même suffire à déclencher la transformation.
Dans le cas d'un assemblage laissé à la charge de l'utilisateur final (figure de gauche), on comprend bien que la simplicité est recherchée dans chaque transformation élémentaire et que c'est l'agencement judicieux qui fait la puissance du sytème global. Cette simplicité n'est plus d'utilisation mais de conception, ce qui permet de réduire le risque d'erreur dans la programmation des logiciels, mais qui nécessite en revanche, de définir un format d'échange entre chaque transformation élémentaire.
Un format d'échange commun est nécessaire pour un remplacement très simple (échange standard) de chaque transformation élémentaire, comme par exemple importer mon éditeur de textes favori dans mon système de messagerie, en remplacement de celui du client de messagerie. On peut même se poser la question de savoir pourquoi un éditeur de textes (propriétaire) est intégré dans le client de messagerie.
Tant qu'il restera des gens qui voudront faire des assemblages non triviaux, il y a de la place pour Unix et les fichiers texte. Pour les autres, qu'ils se suffisent de ce qu'ils ont demandé sans se plaindre, pas à moi en tout cas.
En 1997, la dernière fois que j'ai touché à un serveur de news, outre l'arborescence /usr/local/news, l'installation avait ajouté des fichiers dans /usr/local/etc, dans /usr/local/bin et dans /usr/local/man. Comme j'essaie de n'installer qu'un produit par jour, il a été facile de détecter ces fichiers. C'est en tout cas ce qu'il fallait faire, avant que je ne constate que l'ancien programme inews ne se comporte pas correctement avec le nouveau serveur.
Pas trop de souci, il suffit de suivre les instructions et les recommandations du fichier INSTALL. J'ai décidé de faire une installation complète plutôt qu'une mise à jour, ce qui me permet de remettre le nez dans les fichiers de configuration, et d'éviter les risques dus à une trop grande différence entre les versions.
Il faut créer un utilisateur news et un groupe news, ce qui était déjà fait de la précédente installation. J'ai décidé d'utiliser le répertoire /usr/local/news comme base de la distribution, c'est le choix suggéré. L'ancienne arborescence, a été déplacée en /usr/local/news.old avant installation.
En particulier, les options --enable-uucp-rnews et --enable-setgid-inews sont à méditer car il faut d'une part que l'utilisateur lambda soit capable de poster des news sur le serveur local en vue d'être distribuées à l'extérieur, et d'autre part que l'utilisateur uucp (car j'utilise ce moyen) puisse lui aussi injecter les messages en provenance de UUCP dans le serveur de news. Plutôt que d'installer le programme rnews setuid root, je préfère qu'il soit setgid news, puisque ça suffit au fonctionnement. J'ai gardé l'installation setgid news pour le programme inews, il faudrait refaire la contre manipulation, maintenant que la configuration actuelle est opérationnelle :
% ls -al /usr/local/news/bin/?news
-r-xr-sr-x 1 news news ... /usr/local/news/bin/inews
-r-xr-sr-x 1 news news ... /usr/local/news/bin/rnews
Comme de plus, les programmes satellites tels que mon client chercheront ces programmes dans le chemin d'accès, j'ai fait les liens symboliques suivants :
% ls -al /usr/local/bin/?news
lrwxr-xr-x ... /usr/local/bin/inews -> /usr/local/news/bin/inews
lrwxr-xr-x ... /usr/local/bin/rnews -> /usr/local/news/bin/rnews
L'importance de mon serveur ne nécessitant pas une organisation de stockage des articles efficace, j'ai opté pour la méthode tradspool que je connaissais déjà. Au début, c'était pour récupérer les articles de l'ancien serveur tels que.
J'utilise l'outil de gestion de versions rcs depuis toujours, je peux donc sortir les modifications effectuées au cours du temps dans les fichiers de configuration de l'ancien serveur, pour les reporter dans les fichiers du nouveau serveur en les adaptant si besoin. Les fichiers sont dans /usr/local/news/etc.
Commençons par inn.conf car les choix qui y sont faits déterminent les valeurs à renseigner dans les autres fichiers :
organization: <pour l'entête de mes messages>
server: <le nom de ma machine, hostname>
groupbaseexpiry: false
fromhost: <le nom de ma machine, hostname>
moderatormailer: %s@moderators.isc.org
Le fichier expire.ctl utilise la valeur de groupbaseexpiry qui vient d'être définie :
--- expire.ctl 2002/09/17 09:40:19 1.1
+++ expire.ctl 2002/09/17 20:04:27
@@ -21,12 +21,12 @@
## -c flag and how paranoid you are about old news, you might want to
## make this 28, 30, etc, but it's probably safe to reduce it to 7 in most
## cases if you want to keep your history file smaller.
-/remember/:10
+/remember/:24
## Keep for 1-10 days, allow Expires headers to work. This entry uses
## the syntax appropriate when groupbaseexpiry is true in inn.conf.
-*:A:1:10:never
+#*:A:1:20:25
## Keep for 1-10 days, allow Expires headers to work. This is an entry
## based on storage class, used when groupbaseexpiry is false.
-#0:1:10:never
+0:1:20:25
La valeur class à 0 utilisée dans le fichier expire.ctl se retrouve dans le fichier storage.conf suivant, et concerne tous les groupes. Suivant l'activité d'un groupe et le délai de rétention choisi, on pourra préférer d'autres méthodes :
--- storage.conf 2002/09/17 11:26:10 1.1
+++ storage.conf 2002/09/17 11:34:15
@@ -60,3 +60,8 @@
# options: BIGAREA
#}
+method tradspool {
+ newsgroups: *
+ class: 0
+}
+
Enfin le fichier newsfeeds mérite une lecture attentive de sa page de manuel et de son contenu. Ce fichier indique comment les articles reçus sont renvoyés aux serveurs voisins, en particulier les articles émis par un utilisateur local. Chaque serveur rajoute sa marque dans la variable Path de l'entête. Un message reçu contenant déjà sa marque est supprimé ce qui élimine les cycles.
ME:*,!junk,!control::
Le site autresite ajoute marqueautresite dans le Path des articles qu'il envoie. Donc les articles qui contiennent marqueautresite dans leur Path ne doivent pas être retournés à autresite.
autresite/marqueautresite\
:*,!junk,!control\
:Tf,Wfb\
:
Lors de l'installation, il faut générer différents fichiers dans le répertoire /usr/local/news/db. La base history est obtenue par :
touch history
makedbz -i -f history
chmod 644 history*
Après quelques temps d'utilisation, quand les premières purges des anciens articles auront eu lieu, il faudra constater la taille du fichier history et refaire une base de données de taille mieux adaptée, avec l'option -s.
Les fichiers newsgroups et active peuvent être obtenus par ftp mais on peut aussi alimenter le fichier active avec la commande ctlinnd, dès que le serveur est en fonction :
ctlinnd newgroup nom.du.groupe
Le mien ne contient que les groupes que je reçois en plus des entrées control et junk qui sont obligatoires.
Le programme inncheck permet de tester la conformité des fichiers.
J'utilise le script de lancement suivant :
#!/bin/sh
PREFIX=/usr/local/news
if [ $# -eq 0 -o x$1 = xstart ]; then
if [ -x $PREFIX/bin/rc.news -a -f $PREFIX/db/history.dir ]; then
su -fm news -c $PREFIX/bin/rc.news && echo ' inn'
fi
fi
if [ x$1 = xstop ]; then
su -fm news -c '$PREFIX/bin/rc.news stop'
fi
Toutes les difficultés à faire fonctionner le serveur ont été résolues par le changement des droits des fichiers comme expliqué plus haut. Un utilisateur lambda doit pouvoir se connecter au serveur par telnet et envoyer des articles par inews :
% telnet localhost nntp
Trying 127.0.0.1...
Connected to hostname.
Escape character is '^]'.
200 hostname InterNetNews server INN 2.3.3 ready
help
100 Legal commands
authinfo
help
...
For more information, contact "usenet" at this machine.
.
quit
205 .
Connection closed by foreign host.
À partir de maintenant, on peut essayer de poster des articles depuis son client et vérifier que les articles sont pris en compte par le serveur.
Pour envoyer les news via UUCP, j'utilise le script sendbatch à chaque connexion. Ce script envoie les articles que j'ai posté et qui sont en attente. Dès l'envoi, les articles sont apparus sur mon serveur local.
Il faut un site qui va nous autoriser à récupérer des articles, notre fournisseur d'accès par example, ou un serveur de news avec accès public. Ce site propose une liste.
nntpget -n comp.unix.solaris -o -v -t "020921 000000 GMT" news.freenet.de
Cette commande reçoit les articles postés dans le groupe comp.unix.solaris à une date donnée (l'année doit être sur deux chiffres), depuis le serveur public indiqué, et les injecte dans le serveur de news local. Il faut donc ensuite vérifier avec un logiciel client que ces articles sont consultables.
Les serveurs définis dans le fichier de configuration newsfeeds et qui ne sont pas présents dans le Path des nouveaux articles vont recevoir ces articles de notre part. Je ne sais pas si c'est convenable de faire ça, donc il vaut mieux modifier les configurations pour exclure de tels groupes.
Ceci constitue le texte que j'avais préparé à l'occasion d'une présentation des logiciels libres, le 4 Octobre 1998 à la Cité des Sciences et de l'Industrie. L'événement était organisé par l'association April.
En 1993, alors étudiant à l'université de Montpellier, et spécialiste des travaux dirigés système et réseaux dont personne ne veut, je profite des premiers portages d'Unix sur PC, pour acheter un 486 et me lancer dans l'aventure. À cette époque, une connaissance de l'informatique en général, des systèmes d'exploitation et de Unix en particulier sont nécessaires. La procédure d'installation a depuis subit certaines améliorations.
Quelques années plus tôt, le premier cours de Licence de système d'exploitation avait commencé par la phrase : pour étudier Unix, on pourrait regarder le code source, mais on va plutôt aller vers une approche plus générale et superficielle.
Le système installé est 386BSD, C'est 4.3BSD augmenté de drivers spécifiques au PC, je suis plus que satisfait d'une semaine passée à installer, desinstaller, recommencer encore avec un paramètrage plus fin, et je vais enfin pouvoir regarder les sources.
Après un désengagement de plusieurs mois et des problèmes personnels, 386BSD, jusque là maintenu par un ensemble de développeurs est définitivement abandonné par son auteur Bill Jolitz, donnant naissance à NetBSD et FreeBSD. OpenBSD sera plus tard dérivé de NetBSD.
Jordan K. Hubbard contacte Walnut Creek CDROM afin de faire distribuer ce projet jusqu'alors inconnu. Walnut Creek va plus loin que cela en fournissant une machine et une connection vers l'Internet. Une étape de cette coopération naissante est franchie le 28 Juillet 1998 quand 417 Go sont récupérés en 24 heures du serveur FreeBSD de Walnut Creek : record battu ! Ftp.cdrom.com est le serveur le plus sollicité de tout l'Internet, il est composé d'un pentium pro 200 et de quelques 220 Go de disques pleins de logiciels libres (ndlr : un an plus tard, de nombreux autres records de ce type sont battus et 1 To en 24 heures n'a été qu'une étape. La machine a aussi été remplacée par un PII).
L'équipe de développement se constitue d'elle même grâce à Internet, et contrairement aux systèmes propriétaires et fermés, les réponses aux questions sont rapides et pertinentes. Les spécialistes sont aussi accessibles que les débutants, ces derniers étant encouragés à participer.
L'équipe principale d'une douzaine d'individus, décide des orientations politiques et techniques du projet dans sa globalité, soit 215 Mo de code source, et participent au développement. Une centaine de developpeurs, proposent des modifications et les mettent en oeuvre. Ils ont accès à toutes les évolutions du code grâce à l'outil de gestion de versions qui supervise les quelques 530 Mo d'archive. Un jour, suite à mon activisme envers le projet, Jörg Wunsch m'a donné l'occasion de rentrer dans le top 100. Le 19 Mai 1997, j'ai eu 31 ans, Unix a eu 10000 jours, et je suis devenu développeur du projet FreeBSD, troisième français d'une équipe qui en comprend 5 au jour d'aujourd'hui (ndlr : Octobre 1998).
La version -current qui regroupe les dernières évolutions est disponible au jour le jour par différents moyens y compris par messagerie électronique. Pour une utilisation plus professionnelle, une version -stable est produite. La stabilité et l'efficacité que FreeBSD prouve tous les jours avec Walnut Creek ou d'autres entreprises (ndlr : Hotmail, Yahoo), vous pouvez aussi l'avoir chez vous.
Le logiciel libre, c'est lorsque le code source est fourni, cela n'implique pas la gratuité, mais c'est très souvent le cas, même dans le cadre d'une utilisation professionnelle. Le mode de développement du produit tend naturellement vers cette gratuité. En effet, chacun apporte sa contribution sans contrepartie car c'est en quelque sorte le prix à payer pour accéder aux informations des autres. Ma contribution au projet FreeBSD ou à d'autres logiciels peut être vue comme un « droit d'utilisation » du logiciel libre.
L'avantage évident de disposer du code source est de permettre l'adaptation d'un logiciel à ses besoins spécifiques sans devoir partir de zéro. Chacun profite ainsi de la partie commune qui bien souvent est amplement suffisante pour une utilisation classique. Une conséquence naturelle de cette transparence est une normalisation des formats d'échanges. Certaines licences d'utilisation imposent en retour que toute contribution soit rendue publique. Afin de garder une certaine confidentialité, les entreprises pourront opter vers la licence qui accompagne FreeBSD et qui n'a pas cette restriction.
Le support technique est gratuit sur Internet et le code de déontologie sous jacent, m'oblige à participer à mon tour, même modestement. Chacun participe un peu, pour que tous profitent de l'ensemble. Comme toute entreprise d'une certaine ampleur, FreeBSD ne peut être le projet d'un ou d'un groupe restreint d'individus, c'est le fruit de bientôt 30 ans de recherche. Cette expérience reconnue est un gage de qualité. Aucune garantie de solution n'est donnée : c'est explicite et malgré tout, c'est souvent plus efficace qu'un contrat de maintenance logiciel payant qu'il m'a été donné l'occasion de mettre en défaut.
Développer du code coûte cher à une entreprise, ce qui explique la réticence des éditeurs de systèmes d'exploitation à intégrer de nouvelles fonctionnalités ou de nouveaux algorithmes dans leurs utilitaires, préférant se consacrer au développement du noyau par touches successives et quasi statiques. En bénéficiant de la recherche, les équivalents libres sont souvent plus performants. Dans les parties les plus sensibles du système, des avancées significatives aujourd'hui à l'étude dans FreeBSD seront demain standardisées (softupdates).
Informaticien grâce à l'université, je suis ingénieur système grâce à FreeBSD. La profession d'ingénieur système Unix ne correspond à aucun diplôme spécifique. Si une solide base en informatique est à mon avis utile, elle n'est pas forcement requise par l'employeur. S'imposer dans ce domaine nécessite un apprentissage autodidacte. Le logiciel libre en général et FreeBSD en particulier reste pour ma part une expérience décisive, et je ne manque pas de rappeler au cours des entretiens qu'il m'est donné l'occasion de passer, que cela est garant d'une vision pas seulement superficielle.
En 1993, j'ai dit estimer à un délai de 3 ans, l'entrée des systèmes d'exploitation issus des logiciels libres dans le monde universitaire et a 6 ans dans le monde industriel. La réticence des entreprises françaises à cet égard fausse manifestement cette chronologie et il n'est pas rare de passer pour un charlatan aux yeux des décideurs en annonçant la puissance de calcul tout à fait honorable dont un PC est capable alors qu'il est par ailleurs difficilement possible de faire tourner un traitement de texte cliquodrome sur cette même machine. Ftp.cdrom.com est capable de supporter 3000 utilisateurs connectés simultanément (ndlr: en Octobre 1998, un an plus tard, la limite est portée à 6000). À partir de qu'elle limite pouvons nous parler de médiocrité