Fedora-Fr - Communauté francophone Fedora - Linux

Planet de Fedora-Fr : la communauté francophone autour de la distribution Linux Fedora

A propos

Cette page est actualisée toutes les heures.

Cette page est une sélection de blogs autour de Fedora. Fedora-Fr.org décline toute responsabilité au sujet des propos tenus par les auteurs des blogs de ce planet. Leurs propos sont leur entière responsabilité.

Le contenu de ce planet appartient à leurs auteurs respectifs. Merci de consulter leur blogs pour obtenir les licences respectives.

Septembre 2011

Premier Samedi Date : samedi 3 septembre 2011 Horaires : de 14h00 à 18h00 Lieu : Carrefour Numérique, Cité des Sciences et de lIndustrie, Paris Pour une nouvelle installation ou pour des ajustements de votre distribution GNU/Linux Fedora, Mandriva, Mageia ou Ubuntu, venez nous retouver le samedi 3 septembre 2011 au Carrefour Numérique de la Cité des [...]

Bienvenue sur Dotclear ! - Slobberbone V4

Alexandre Frandemiche

Slobberbone V4

Ceci est votre premier billet. Quand vous serez prêt à bloguer, connectez-vous pour le modifier ou le supprimer.

Alors oui, j'étais déjà sous Dotclear avant ... mais ce message de bienvenue existe car j'ai enfin migrer mon blog qui était hébergé chez Free http://slobberbone.free.fr/ vers mon serveur dédié chez OVH et du coup installation de Dotclear tout fraiche !!!
Après avoir lancé Communauté-SLA.org en ayant installé la totalité des outils sur ce serveur dédié chez OVH, il était temps d'y mettre mon blog personnel ! Cela faisait 2 ans que Free n'avait pas écraser l'ensemble de ma base de données, il ne fallait donc pas trop attendre ...

J'espère que le thème vous plaira, moi c'est le cas et ça me donne un peu plus envie de bloguer ! :D

Allé pour la route, une petite procédure pour installer Dotclear !

Dotclear 2

Installation des prérequis

Sous CentOS/Fedora : yum install httpd mysql-server mysql php

Configuration de MySQL


/etc/init.d/mysqld start
/usr/bin/mysql_secure_installation

Préparation de MySQL


Ici l'option "-proot" où "root" est mon mot de passe pour l'utilisateur root ... il va sans dire que ce n'est qu'un exemple :-) et on part du principe que tout est en local
mysql -u root -proot

Résultats :

#Welcome to the MySQL monitor.  Commands end with ; or \g.
#Your MySQL connection id is 7
#Server version: 5.0.77 Source distribution
#
#Type 'help;' or '\h' for help. Type '\c' to clear the buffer

On crée la base de donnée du blog :
mysqlcreate database blog;

#Query OK, 1 row affected (0.01 sec)


Ici on va créer un utilisateur dotclear avec un mot de passe dotclear ( à changer bien évidemment !
mysqlgrant all on blog.* to 'dotclear'@'localhost' identified by 'dotclear';

#Query OK, 0 rows affected (0.00 sec)

On réinitialise les droits
mysqlflush privileges;

#Query OK, 0 rows affected (0.00 sec)

Et on quitte mysql !
mysqlquit

#Bye

Configuration d'Apache

Pour ajouter la configuration, il vous suffit d'ajouter dans /etc/httpd/conf.d un repertoire monpseudo

cd /etc/httpd/conf.d/
mkdir monpseudo
cd monpseudo touch blog.conf

Ensuit on édite blog.conf vi blog.conf et on réalise une configuration comme telle :

ServerName blog.mondnomdedomaine.net
<LocationMatch "^/monpseudo/dotclear/+$">
    Options -Indexes
    ErrorDocument 403 /error/noindex.html
</LocationMatch>

Ici on part du principe que Dotclear à été installé à la racine de mon répertoire monpseudo, par défaut présent dans /var/www/.
cd /var/www/
mkdir monpseudo
chown apache:apache monpseudo

On recharge la configuration d'apache :
service httpd reload
Maintenant, il ne reste plus qu'à préparer l'installation de Dotclear !

Installation de Dotclear

cd /var/www/monpseudo
wget http://download.dotclear.net/loader/dotclear2-loader.php
chown apache:apache dotclear2-loader.php
Et voilà ! Pour terminer l'installation allez sur l'url d'installation de Dotclear : http://monsite/monpseudo/dotclear2-loader.php ! Là vous sera demandé des identifiants de connexion à la base de données MySQL que l'on a crée plus haut !
A vous de bloguer !

@ très bientôt !

Plugins Anope pour nagios

Antoine Wallon Dans le cadre d’une création d’un serveur IRC inspircd. J’ai du installé Anope (un service IRC rattaché à inspircd). n’ayant trouver trouvé aucun plugin pour checker ce service j’ai du en monté un maison 1) Créer un fichier check_anope dans votre dossier plugins (ex: /usr/lib64/nagios/plugins/) en ajoutant ceci #!/bin/bash CHECK="ps -fp 'cat /opt/anope/services.pid' | grep [...]

PackageDB-cli 1.1.0

Pierre-Yves Chibon

rpm.pngsource.png

Version 1.1.0 du client text pour pkgdb.

Release 1.1.0 of the command-line interface for pkgdb.

English version (no French)

I have pushed to testing few days ago a new version of packagedb-cli (aka pkgdb-cli).

With this new version:

  • You can adopt an orphaned package
  • The user name if not specified can be retrieved from the fedora_cert file (if presents)
  • If the package is orphaned, it is now highlighted
  • Approve all the request for someone but only the requested ACLs (not all ACLs)

There has also been some bugs fixed thanks to sochotni and ppisar who reported them on the trac.

Feel free to test and comment the updates:

perl-Gtk2-WebKit

Remi Collet

Le RPM de Gtk2-WebKit, un module perl pour utiliser le moteur de rendu WebKit, est disponible dans le dépôt remi pour fedora 14 et 15.

Jusqu'à présent, gmusicbrowser utilisait le moteur gecko, mais le module perl-Gtk2-MozEmbed ne sera plus disponible dans fedora 16 (le support de gtkmozembed a été retiré de xulrunner). Comme gmusicbrowser peut aussi utiliser cet autre moteur, je viens d'ajouter ce paquet et de le proposer pour les dépôts officiels (revue #728296). Pour... Lire perl-Gtk2-WebKit

mini2440 : lancement d'un concours de go fast...boot !

Patrice Kadionik

Salut.

La société Open Wide Ingénierie, via son blog linuxembedded.fr sur les technologies libres et embarquées, a lancé ce 2 août un concours d'optimisation du temps de démarrage sur carte mini2440.

Il s'agit d'avoir le temps de démarrage le plus faible possible jusqu'au lancement d'une application graphique sur l'écran associé de la carte mini2440. C'est un challenge intéressant et il existe encore peu de littérature sur ce sujet actuellement. Je signalerais éventuellement plus tard quelques documentations "utiles"...

Avant d'optimiser son "fast boot", il convient d'avoir un environnement complet de développement croisé pour la carte mini2440... Comme je l'avais signalé dans mon précédent billet, cela fera l'objet des billets à venir qui auront ainsi toute leur utilité ;-)" class="smiley

Inscription au concours ici : http://www.linuxembedded.fr/concours/wiki/doku.php/participants

Bonne chance !

++

Sources :

Un chroot si rapide à créer

Patrice Ferlet

J'avais travaillé sur la documentation de chroot sur cette page: http://doc.fedora-fr.org/wiki/Utili... mais depuis, les choses ont changé. Febootstrap ne marche plus du tout comme avant... et j'ai trouvé une manière encore plus simple de créer une base chroot sans manipuler des fichiers de dépôts. Vous allez voir, c'est tellement simple que ça en est presque indécent.

Voilà la manière la plus facile que j'ai trouvé, par exemple pour encapluser "php-cli" dans un chroot:

cd ~
mkdir -p chroots/fedora-15-chroot
cd chroots
su -c 'yum --installroot=`pwd`/fedora-15-chroot --releasever=15 install php-cli -y'

C'est simple comme choux en fait...

Je crée un répertoire dans mon "home" (cd ~ et mkdir -p chroots/fedora-15-chroot). Ensuite je demande à yum d'installer php-cli dans le répertoire fedora-15-chroot. Comme je n'ai pas créé de fichier de dépots Fedora dans le répertoire de chroot, je spécifie simplement que je veux utiliser la version "15" de fedora. Notez que "releasever" est une contraction de "release version".

Et comme par enchantement, j'ai un chroot fonctionnel !

Là où c'est intéressant, c'est que je me passe de pas mal de configuration un peu compliqué. Il est alors facile de changer de --releasever en 16 pour tester la rawhide, ou une version inférieure...

Me reste plus qu'à voir comment fonctionne lxc (et je n'ai pas la dernière version de libvirt donc je n'ai pas encore l'accès facilité par virt-manager) et je vais pouvoir tester pas mal de choses, comme faire marcher des bases en jail, compiler des choses tordus ou voir comment péter un système sans avoir peur :)" class="smiley

Darktable 0.9.1

Edouard Bourguignon

Les développeurs du projet darktable tente de proposer des versions plus souvent, ce qui est bien pratique pour pouvoir proposer des RPMs aux utilisateurs Fedora. Ceux-ci pourront ainsi suivre au plus près l'évolution de cette éditeur d'images RAW.

La version 0.9.1 est donc une version corrective de la 0.9, avec en tout 184 patches. Les principales améliorations concernent la lecture des fichiers RAW (en utilisant les nouvelles versions de rawspeed, dcraw et libraw), le HDR, l'historique et des corrections de bugs.

Il y a aussi depuis la version 0.9 un support d'OpenCL afin d'utiliser la carte graphique pour soulager le CPU de certains traitements. A voir si cela est packagé/packageable dans les RPMs, je n'ai pas vraiment eu le temps de me pencher sur le sujet.

Pour plus d'info: site officiel de Darktable

Les paquets darktable 0.9.1 pour Fedora sont dans les dépôts updates-testing, et devraient arrivés dans le dépôt classique dans au minimum 1 semaine.

Darktable 0.9.1

Edouard Bourguignon

Les développeurs du projet darktable tente de proposer des versions plus souvent, ce qui est bien pratique pour pouvoir proposer des RPMs aux utilisateurs Fedora. Ceux-ci pourront ainsi suivre au plus près l'évolution de cette éditeur d'images RAW.

La version 0.9.1 est donc une version corrective de la 0.9, avec en tout 184 patches. Les principales améliorations concernent la lecture des fichiers RAW (en utilisant les nouvelles versions de rawspeed, dcraw et libraw), le HDR, l'historique et des corrections de bugs.

Il y a aussi depuis la version 0.9 un support d'OpenCL afin d'utiliser la carte graphique pour soulager le CPU de certains traitements. A voir si cela est packagé/packageable dans les RPMs, je n'ai pas vraiment eu le temps de me pencher sur le sujet.

Pour plus d'info: site officiel de Darktable

Les paquets darktable 0.9.1 pour Fedora sont dans les dépôts updates-testing, et devraient arrivés dans le dépôt classique dans au minimum 1 semaine.

Radeon et Blender font mauvais ménage

Patrice Ferlet

En fait, ce n'est pas seulement pour Blender que je vais parler, mais certaines applications 3D qui peuvent avoir tendance à planter misérablement en utilisant une carte ATI (AMD) sur notre Fedora 15... Car voilà, depuis mon passage à Fedora 15, tout se passe bien sauf un truc: travailler sous Blender. J'ai tout tenté: passage à Xfce pour éviter Mutter, recompilation de Blender, debugage, ... et rien n'y faisait. Après quelques minutes, un plantage et pas moyen de trouver une solution. Sauf que j'ai trouvé un tour de passe-passe qui permet, pour le moment, de palier le souci.

Bon avant toutes chose, un petit tour vers le rapport de bug que j'ai commenté: libllvmcore-2.8.so.debug has no usable debug info Ça donne pas envie hein... En fait pour faire court, un souci bien dégoûtant apparaît avec le pilote radeon et en plus de cela on a pas les infos de débogage pour notre problème. Raaa la rage m'envahissait et comme je voulais finir un boulot sur Blender, me fallait vite une solution.

Et bien j'ai finis par y aller "bourrin"... en utilisant une compilation du pilote "gallium". C'est en fait une compilation "grotesque" qui va me permettre d'utiliser une librairie openGL très épurée. Donc certes je vais perdre l'antialiasing et certainement avoir une visu assez moche dans Blender, mais au moins ça ne plantera pas. Et pour vous rassurer, seule la vue 3D est impactée, le rendu et le traitement image/vidéo ne sont pas impactés.

Bon et bien voici la méthode:

#on va dans notre répertoire perso
cd ~
#on clone le dépot mesa
git clone git://anongit.freedesktop.org/git/mesa/mesa
cd mesa

#on compile le driver gallium, donc pas de DRI pour radeon et consorts
make  linux-x86-64 -j4
#make  linux-x86-32 -j4 pour les cpu 32 bits

#si vous avez un core i7, vous pouvez mettre -j8 au lieu de -j4
#on attend un peu la fin de la compilation puis
cd lib64 #ou cd lib si vous êtes sur un pc 32 bits

#à faire avant de lancer blender...
export LD_LIBRARY_PATH=~/mesa/lib64
#puis on lance blender
cd ~/blender-2.58
./blender -w

Deux choses, d'une part évitez le mode plein écran, perso ça fait un truc tout bizarre sur mon pc... et secondo, utilisez l'option "-w" comme spécifié, ça évitera des ennuis de bordure que j'ai vu sur mon poste.

Si vous avez des soucis, passez de Gnome à Xfce. Ca limitera les appels OpenGL et les court-circuits d'affichage. Toujours est-il que ça marche, ça marche même pas mal du tout... c'est moins beau, oui, mais ça marche.

Aussi, pour couper l'herbe sous les pieds des trolls qui vont arriver en commentaire: oui, ATI sur linux c'est pas bien, je sais, mais j'ai pas le choix pour deux raisons: d'une j'ai un laptop (ordinateur portable) et le prix était intéressant avec cette carte, et secondo j'utilise de temps en temps un kernel RT qui ne marche pas avec les pilotes nvidia. Donc je sais, j'ai pas une bonne config, mais je suis pas le seul. Et quand bien même, un matériel ne doit pas engendrer un souci de ce genre alors qu'il est récent.

Soit dit en passant, bien que le bug soit là, on apprécie tout de même d'avoir utilisé des logiciels libres. Car si tout ce que j'utilise était propritaire, je n'aurai pas de solution pour contourner le problème. Là, encore une fois, en suivant quelques indications, on arrive à se dépêtrer d'un gros problème parce que nous pouvons compiler et/ou modifier des sources.

Alors dans notre malheur, vous et moi qui avons des soucis avec cette radeon, réjouissons nous de pouvoir travailler en mode dégradé grâce à la philosophie du logiciel libre, et de ne pas rester coincé !

Tester des paquets sans tout casser

Patrice Ferlet

Une des raisons pour laquelle j'utilise Fedora depuis des années c'est l'aptitude (clin d'oeil de geek...) de yum à permettre des manipulations de paquets assez rapide. J'avais justement besoin de tester llvm 2.9 qui est pour le moment dans les dépôts rawhide (c'est à dire dans les dépôts de développement de la future version de fedora). Donc, me voilà avec un dilemme: comment tester sans tout casser et sans me prendre la tête à installer une VM? La réponse est dans yum l'ami.

yum a deux options (en fait une commande et une option) qui me permettent de tester sans massacrer mon système: distro-sync et --releasever. La première fait en sorte de synchroniser mes versions de paquets à la version de fedora en cours, et l'autre me permet de spécifier la version de fedora à utiliser.

Et bien allons y gaiement:

su -
yum clean all
yum --releasever=rawhide --nogpgcheck --disablerepos=rpmfusion\* update llvm

Cela à pour effet de lancer une installation en spécifiant que je cherche des paquets pour rawhide. L'installation terminée, j'ai bien un llvm 2.9 qui est installé alors que sur Fedora 15 nous sommes en version 2.8.

Mes tests terminés (et non concluant) j'ai eut envie de revenir à ma version de base. Et bien c'est simple:

yum clean all
yum distro-sync

Et voilà, yum trouve des paquets à downgrader (réduire la version) et me réinstalle tous les paquets estampillés pour la version fedora supérieure à la version actuelle (ici fedora 15). Du coup j'ai resynchronisé ma fedora. Attention tout de même à ne pas faire ça pour n'importe quoi... n'oubliez pas que des fichier .rpmnew peuvent apparaître ou encore peuvent vraiment planter le système.

Personnellement j'évite de faire ça pour tout, par exemple pour le moment j'évite de jouer avec des version de gnome qui se trouve dans rawhide, mais pour ce qui est de certaines librairies, compilateurs, ou encore apache, php... j'aime bien tester de la sorte.

Effectivement lxc ou carrément une machine virtuelle pourrait faire l'affaire, mais c'est tellement sympa avec yum... non ?

La joie du scripting !!

Frédéric Thouin

voici un petit site très agréable pour aller plus loin dans le scripting sous shell bash !

Attention ca pique : BASH

mysql-5.5.15

Remi Collet

Les RPM de MySQL Community Server 5.5.15 GA sont disponibles dans le dépôt remi pour fedora et pour Enterprise Linux (RHEL, CentOS, ...).

A lire : Introduction to MySQL 5.5 Changes in MySQL 5.5.15 MySQL 5.5 Reference Manual Cette construction utilise un fichier spec proche de celui de Rawhide. ATTENTION : avant la mise à jour, une sauvegarde de vos bases de données est très vivement conseillée (un vidage avec mysqldump par exemple).    L'installation la plus simple... Lire mysql-5.5.15

Installation de Nagios sur CentOS sans RPM

Alexandre Frandemiche

Depuis le temps que j'en parlais ... voilà enfin ma procédure d'installation de Nagios 3.2 sous CentOS 5.CentOS
Alors tout d'abord, à l'époque il n'y avait pas de rpm (j'ai trouvé il y a peu un dépôt ... j'y reviendrais dans un autre billet). Donc compilation à la main !

Ensuite, les puristes crierons lorsqu'ils verront où j'installe Nagios ... le but était d'avoir quelque chose d'opérationnel assez rapidement. Faire mieux étant remis à plus tard. Si vous avez des modifications à apporter à cette procédure, je vous invite à laisser un commentaire ! Je la compléterai avec joie ! :)

Préparation de la machine

Avant toute chose, penser à bien configurer votre parefeu et SELinux. Pour un premier test, il faut désactiver le tout ! Pour le parefeu :
service iptables stop

Pour SELinux : vi /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted

Installation des pré-requis

Passage en root
su -

Installation prérequis
yum install gcc httpd mysql-server mysql-devel openssl

Téléchargement des sources Nagios
cd /usr/local/
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz
wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.14.tar.gz
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz
wget http://prdownloads.sourceforge.net/sourceforge/nagios/ndoutils-1.4b9.tar.gz

Décompression de Nagios Core
tar xfvz nagios-3.2.1.tar.gz
cd nagios-3.2.1/

Création du groupe et utilisateur nagios
groupadd nagios
groupadd nagcmd
useradd nagios -g nagios,nagcmd

Installation de Nagios

Nagios

Compilation de Nagios Core
./configure --prefix=/usr/local/nagios --enable-mysql --disable-pgsql --with-ndo2db-user=nagios --with-ndo2db-group=nagios --with-command-group=nagcmd

Résultats :

#*** Configuration summary for nagios 3.2.1 03-09-2010 ***:
#
# General Options:
# -
# Nagios executable: nagios
# Nagios user/group: nagios,nagios
# Command user/group: nagios,nagcmd
# Embedded Perl: no
# Event Broker: yes
# Install ${prefix}: /usr/local/nagios/
# Lock file: ${prefix}/var/nagios.lock
# Check result directory: ${prefix}/var/spool/checkresults
# Init directory: /etc/rc.d/init.d
# Apache conf.d directory: /etc/httpd/conf.d
# Mail program: /bin/mail
# Host OS: linux-gnu
#
# Web Interface Options:
#
# HTML URL: http://localhost/nagios/
# CGI URL: http://localhost/nagios/cgi-bin/
# Traceroute (used by WAP): /bin/traceroute
#
#
#Review the options above for accuracy. If they look okay,
#type 'make all' to compile the main program and CGIs.

make all

Résultats :

#*** Compile finished ***
#
#If the main program and CGIs compiled without any errors, you
#can continue with installing Nagios as follows (type 'make'
#without any arguments for a list of all possible options):
#
# make install
# - This installs the main program, CGIs, and HTML files
#
# make install-init
# - This installs the init script in /etc/rc.d/init.d
#
# make install-commandmode
# - This installs and configures permissions on the
# directory for holding the external command file
#
# make install-config
# - This installs *SAMPLE* config files in /usr/local/nagios//etc
# You'll have to modify these sample files before you can
# use Nagios. Read the HTML documentation for more info
# on doing this. Pay particular attention to the docs on
# object configuration files, as they determine what/how
# things get monitored!
#
# make install-webconf
# - This installs the Apache config file for the Nagios
# web interface
#
#
#*** Support Notes *******************************************
#
#If you have questions about configuring or running Nagios,
#please make sure that you:
#
# - Look at the sample config files
# - Read the HTML documentation
# - Read the FAQs online at http://www.nagios.org/faqs
#
#before you post a question to one of the mailing lists.
#Also make sure to include pertinent information that could
#help others help you. This might include:
#
# - What version of Nagios you are using
# - What version of the plugins you are using
# - Relevant snippets from your config files
# - Relevant error messages from the Nagios log file
#
#For more information on obtaining support for Nagios, visit:
#
# http://www.nagios.org/support/
#
#*************************************************************

make install
make install-init
make install-commandmode
make install-config
make install-webconf

Démarrage à  vide de Nagios
/etc/init.d/nagios start

Résultat :

#Starting nagios: done.

Installation et Configuration de MySQL si non installée

yum install mysql-server mysql
/etc/init.d/mysqld start
/usr/bin/mysql_secure_installation

Préparation de MySQL

Ici l'option "-proot" où "root" est mon mot de passe pour l'utilisateur root ... il va sans dire que ce n'est qu'un exemple :-) mysql -u root -proot

Résultats :

#Welcome to the MySQL monitor. Commands end with ; or \g.
#Your MySQL connection id is 7
#Server version: 5.0.77 Source distribution
#
#Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> create database nagios;

#Query OK, 1 row affected (0.01 sec)

mysql> grant all on nagios.* to 'nagios'@'localhost' identified by 'nagios';

#Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

#Query OK, 0 rows affected (0.00 sec)

mysql> quit

#Bye

Installation du module base de données NDO
architecture_ndo.jpg

Décompression de NDO
cd /usr/local/
tar xvfz ndoutils-1.4b9.tar.gz
cd ndoutils-1.4b9

Compilation NDO
./configure

Résultats :

#*** Configuration summary for ndoutils 1.4b9 10-27-2009 ***:
#
# General Options:
# -
# NDO2DB user: nagios
# NDO2DB group: nagios
#
#
#Review the options above for accuracy. If they look okay,
#type 'make' to compile the NDO utilities.

make

Mise en place de la librairie NDO dans Nagios
cp src/ndomod-3x.o /usr/local/nagios/bin/ndomod.o
cp src/ndo2db-3x /usr/local/nagios/bin/ndo2db

Création base Nagios
cd db
./installdb -u nagios -p nagios -h localhost -d nagios

Résultats :

#DBD::mysql::db do failed: Table 'nagios.nagios_dbversion' doesn't exist at ./installdb line 51.
#** Creating tables for version 1.4b9
# Using mysql.sql for installation...
#** Updating table nagios_dbversion
#Done!

cp /usr/local/ndoutils-1.4b9/config/ndo2db.cfg-sample /usr/local/nagios/etc/ndo2db.cfg
cp /usr/local/ndoutils-1.4b9/config/ndomod.cfg-sample /usr/local/nagios/etc/ndomod.cfg

Éditer les fichiers de configuration
cd /usr/local/nagios/etc/
vi ndo2db.cfg

Dans ce fichier vous renseignerez l'utilisateur de mysql :

# SOCKET TYPE
# This option determines what type of socket the daemon will create
# an accept connections from.
# Value:
# unix = Unix domain socket (default)
# tcp = TCP socket

#socket_type=unix
socket_type=tcp
...
# DATABASE USERNAME/PASSWORD
# This is the username/password that will be used to authenticate to the DB.
# The user needs at least SELECT, INSERT, UPDATE, and DELETE privileges on
# the database.

db_user=nagios
db_pass=nagios

vi ndomod.cfg
Modifier le type socket :

...
#output_type=file
output_type=tcpsocket
#output_type=unixsocket
...
#output=/usr/local/nagios/var/ndo.dat
output=127.0.0.1
#output=/usr/local/nagios/var/ndo.sock

vi nagios.cfg

Modifier le partie event_broker (/event_broker pour rechercher sous Vi)
-
# EVENT BROKER OPTIONS
# Accepte des datas de l'extérieur (dont NDO)
# Controls what (if any) data gets sent to the event broker.
# Values: 0 = Broker nothing
# -1 = Broker everything
# <other> = See documentation
event_broker_options=-1
broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg
-

Arrêt de Nagios
/etc/init.d/nagios stop

Démarrage du deamon NDO2DB
/usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg

Démarrage de Nagios
/etc/init.d/nagios start

Vérification du démarrage de Nagios
vi /usr/local/nagios/var/nagios.log
NB : Si Code 127 : Nagios Plugin non compilé

Installation des plugins Nagios

Décompression de Nagios Plugin
cd /usr/local
tar xvfz nagios-plugins-1.4.14.tar.gz

Compilation de Nagios Plugin
cd nagios-plugins-1.4.14
./configure

Résultats :

# --with-apt-get-command:
# --with-ping6-command: /bin/ping6 -n -U -w %d -c %d %s
# --with-ping-command: /bin/ping -n -U -w %d -c %d %s
# --with-ipv6: yes
# --with-mysql: /usr/bin/mysql_config
# --with-openssl: yes
# --with-gnutls: no
# --enable-extra-opts: no
# --with-perl: /usr/bin/perl
# --enable-perl-modules: no
# --with-cgiurl: /nagios/cgi-bin
# --with-trusted-path: /bin:/sbin:/usr/bin:/usr/sbin
# --enable-libtap: no

make
make install

Vérification des modules
ls /usr/local/nagios/libexec/
/etc/init.d/nagios restart

Changer authentification
vi /usr/local/nagios/etc/cgi.cfg
Exemple de configuration :

...
use_authentication=1
use_ssl_authentication=0
...

Pour le reste voici une brève explication :

  • authorized_for_system_information : indiquent quels sont les utilisateurs pouvant voir l'état des services
  • authorized_for_configuration_information : indiquent quels sont les utilisateurs pouvant voir la configuration de serveur Nagios
  • authorized_for_system_commands : indiquent quels sont les utilisateurs pouvant exécuter des commandes systèmes au travers de l'interface de Nagios
  • authorized_for_all_services : indiquent quels sont les utilisateurs pouvant voir l'état de tout les services (par défaut, on voit uniquement les services pour lesquels l'utilisateur est une personne de contact)
  • authorized_for_all_hosts : idem que ci-dessus mais pour les hôtes (les machines)
  • authorized_for_all_service_commands : indiquent quels sont les utilisateurs pouvant exécuter des commandes pour tous les services (par défaut, on peut exécuter des commandes uniquement sur les services pour lesquels l'utilisateur est une personne de contact)
  • authorized_for_all_host_commands : idem que ci-dessus mais pour les hôtes (les machines)

Je vous laisse le soin de compléter la configuration des personnes autorisées ou non à agir sur l'interface de Nagios !

Déclarer le user nagiosadmin
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

NB :Pour ajouter un utilisateur
htpasswd /usr/local/nagios/etc/htpasswd.users <username>

Changer le propriétaire du répertoire Nagios
chown -Rf nagios:nagios /usr/local/nagios/

Redemarrer le module NDO et Nagios
ps -e | grep ndo2db
kill PID
/usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg
/etc/init.d/nagios restart

Modification du script de démarrage de nagios pour prendre en compte ndo2db
vi /etc/init.d/nagios

-
...
start) echo -n "Starting nagios:"
$NagiosBin -v $NagiosCfgFile > /dev/null 2>&1;
if $? -eq 0; then
########################################################################
###############################A Ajouter################################
su - $NagiosUser -c "/usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg"
########################################################################
su - $NagiosUser -c "touch $NagiosVarDir/nagios.log $NagiosRetentionFile"
...
stop)
echo -n "Stopping nagios: "
pid_nagios
killproc_nagios nagios
########################################################################
###############################A Ajouter################################
su - $NagiosUser -c "skill ndo2db"
########################################################################
...
-

Installation du skin Vautour
J'utilise un skin très agréable nommé Vautour car il faut avouer que l'interface de base de Nagios est repoussante ... Comme tout projet il faut savoir le vendre et celà passe par l'esthétique !
wget http://www.be-root.com/downloads/nagios/vautour/vautour_style.zip
unzip vautour_style.zip -d /usr/local/nagios/share/

Merci à l'équipe de Be-Root !

Voici un exemple :
Vautour

Et voilà votre installation de Nagios doit être prête ! Il ne reste plus qu'à configurer notre nagios pour qu'il surveille nos serveurs ! Mais ça c'est dans un prochain billet ;) !

Rappel

Vérifier la configuration
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Faire des propositions d'optimisation (juste pour avoir la commande ;) )
/usr/local/nagios/bin/nagios -s /usr/local/nagios/etc/nagios.cfg

Faire parler son pc

Patrice Ferlet

Ça peut paraître gadget, mais on se rend compte assez vite que la synthèse vocale sur un poste peut être intéressante dans pas mal de cas. Par exemple, j'ai tendance à compiler des applications assez lourdes, et pour être prévenu, j'aime avoir une voix qui me dit "la compilation de blender 2.58 pour cycles est terminée sans erreur"... Ou encore, me prévenir vocalement que j'ai un souci sur un serveur distant... Cela permet d'avoir une annonce clair et de ne pas avoir constamment sous les yeux un panel de tests. En gros, c'est pratique, gadget oui, mais pratique.

Alors comment faire causer notre coucou. Il existe des méthodes libres et/ou gratuites. Je vais vous montrer une procédure pas à pas qui va vous permettre d'avoir une jolie voix sur le pc (si on est pas trop regardant) et comment utiliser cela pour pas mal d'opérations. Le but est de faire simple, pratique et utile.

Première approche, espeak seul.

Espeak est un projet libre, facilement installable sur votre Fedora puisque dans les dépots officiels. Pour l'installer vous pouvez passer par l'outil d'ajout de paquets ou via une console:

su -c "yum install espeak -y"

A partir de maintenant, vous avez la commande espeak qui vous permet de faire parler le pc. Avant de vous lancer en vous disant "ça y est mais trop bien !!!" je tiens à vous prévenir: ça va pas être super beau. En effet, la voix anglaise est à peu près écoutable, par contre en Français... mon dieu. Je veux bien être indulgent, mais honnêtement là vous allez voir c'est pas super joli.

Exemple:

espeak -vfr "bonjour à toi humble utilisateur de la console"

Ça pique un peu non ?

En anglais c'est à peine mieux:

espeak  "I dude, this is better, isn't it ?"

Bref, si cela vous plait vous pouvez utiliser epseak tel quel... mais personnellement j'ai eut envie de trouver mieux. Et la solution a été "mbrola". Notre méthode va utiliser espeak et mbrola, le premier pour générer des phonèmes et l'autre pour parler.

Deuxième approche: espeak + mbrola

mbrola est un projet gratuit mais non libre. Je suis pas fan de la politique qu'ils utilisent, d'autant que le projet a l'air de sombrer doucement dans les abîmes des ligiciels qui auraient put devenir des références pour des années... Mais toujours est-il qu'à l'heure actuelle on peut encore s'en servir.

Donc, on va préparer notre installation.

su -
mkdir -p /opt/mbrola
cd /opt/mbrola
wget http://tcts.fpms.ac.be/synthesis/mbrola/bin/pclinux/mbr301h.zip
unzip mbr301h.zip
rm -f mbr301h.zip

Oui, que vous soyez sous 64bits ou 32bits, on devra utiliser la version 32bits.

mbrola a besoin de fichier de voix. On va récupéré l'une de celle qui va le mieux pour notre test:

mkdir fr4
cd fr4
wget http://tcts.fpms.ac.be/synthesis/mbrola/dba/fr4/fr4-990521.zip
unzip fr4-990521.zip
rm -f fr4-990521.zip
exit

N'oubliez pas de bien taper "exit", nous ne devons plus être "root" à partir de maintenant.

Bon, maitenant que le paquet est là... on passe au "pipe" qui permet de faire parler mbrola. Il faut savoir que espeak embarque quelques "voix" de mbrola par défaut. Donc nous allons utiliser cela pour faire causer l'ordinateur.

Bon je vous explique rapidement, on va pas trop détailler le principe

  • espeak -vmb/mb-fr2 "texte à donner" retourne une sortie qui correspond aux phonèmes au format reconnu par mbrola
  • mbrola fichier-de-voix phonèmes fichier.format: va lire l'entrèe de phonèmes et sortir un fichier au format désiré "au, wave..."

Comme nous ne voulons pas créer des fichiers sur le disque, on peut "piper" les sorties. De ce fait:

mbrola fichier_de_voix - -.au | play - 2>/dev/null

aura pour effet de récupérer les phonèmes depuis l'entrée standard et créera un fichier "au" directement envoyé à la sortie standard. "play" va alors lire cette sortie standard et nous redirigeons toutes les erreurs dans /dev/null pour ne pas polluer notre console...

Donc le pipe complet est:

espeak -vmb/mb-fr4 "Bonjour à toi humble utlisateur de la console" | /opt/mbrola/mbrola-linux-i386 /opt/mbrola/fr4/fr4 - -.au | play - 2>/dev/null

Ha oui, elle parle vite la nana hein :)" class="smiley

Et bien nous allons palier la vitesse via les options de mbrola.

  • -t 1.2 par exemple va réduire la vitesse de parole d'un ration de 1.2

Ce qui nous donne:

espeak -vmb/mb-fr4 "Bonjour à toi humble utlisateur de la console" | /opt/mbrola/mbrola-linux-i386 -t 1.2 /opt/mbrola/fr4/fr4 - -.au | play - 2>/dev/null

Mieux n'est-ce pas ?... On peut encore jouer avec quelques options, comme le "pitch" (hauteur de voix) et le volume:

  • -v 0.8 volume à 80%
  • -f 1.1 monte le pitch de 10%
espeak -vmb/mb-fr4 "Bonjour à toi humble utlisateur de la console" | /opt/mbrola/mbrola-linux-i386 -f 1.1 -v 0.8 -t 1.2 /opt/mbrola/fr4/fr4 - -.au | play - 2>/dev/null

Comme je vous le disai, c'est mieux que espeak mais on est encore loin de la beauté extême. Le souci n'est pas mbrola, mais la création des phonèmes. Car les exemples proposés par mbrola vous montre qu'on pourrait s'y tromper.

Automatisation

Bon il nous reste une chose à faire, rendre utilisable aisément cette commande. Et bien faisons ça simple:

su -
cat > /usr/local/bin/sayit<<EOF
espeak -vmb/mb-fr4 "\$@" | /opt/mbrola/mbrola-linux-i386 -f 1.1 -v 0.8 -t 1.2 /opt/mbrola/fr4/fr4 - -.au | play - 2>/dev/null
EOF
chmod +x /usr/local/bin/sayit
exit

Voilà nous avons créé une commande "sayit" qui va nous permettre de faire cela:

sayit "Que c'est bien de travailler sous linux"

Reste alors à utiliser notre commande comme je vous le disais au début de l'article. Par exemple, quand je compile un programme:

make && sayit "Compilation de Blender terminé avec succès" || sayit "Compilation de Blender avec erreurs"

Et j'en passe, vous pouvez faire un petit programme en bash qui lit des logs et vous annonce une erreur, ou encore un module XChat qui vous préviens que quelqu'un vient de vous parler.

Ce gadget est intéressant quand on est comme moi à travailler sur plusieurs machines en même temps, souvent en train de préparer du café, ou sur plusieurs taches en même temps.

Voilà, j'espère que vous avez apprécié mon explication et si vous avez des idée d'utilisations ou script, faites passer !

Evolution et le «marquer comme lut»

Patrice Ferlet

Depuis mon passage à Gnome 3 j'ai quelques mauvaises surprises dans quelques applications... Rien de bien méchant, mais il arrive que certaines nouvelles applications perdent des options que je trouvais agréables. C'est le cas pour Evolution Mail 3, j'ai cherché un bon moment avant de me rendre compte que "non je ne suis pas fou, l'option «marquer comme lut après X secondes»" a bel et bien disparut... Mais n'ayant pas donné mon dernier mot, j'ai pensé que comme beaucoup d'applications gnome, la configuration a dut passer dans "gconf"

Et je n'ai pas eut tort... en fouillant un peu dans "gconf-editor" j'ai trouvé ça:

Gconf - Evolution - Mark as read

Il a suffit de mettre cette valeur à 0 pour qu'enfin un mail soit marqué comme lut immédiatement, et pas après 1.5 secondes.

Autre méthode plus rapide, dans une console:

gconftool-2 --set /apps/evolution/mail/display/mark_seen_timeout 0 --type int

Cela revient au même...

Alors pour ne pas m'arrêter à cette mésaventure, je tiens à donner un avis sur la direction que prend Gnome dans certains cas qui me gêne. J'ai toujours été un détracteur de la base de registre Windows, selon moi c'est un truc imbuvable pour le commun des mortels et en plus de cela vous remarquez que ce n'est pas franchement trivial.

Alors qu'un fichier de configuration suffirait, et que des options aisées sont plus adéquates, surtout sur un outil aussi basique que la lecture de mails, on se retrouve à chercher un terme dans une liste énorme de valeur typée et ce dans un système de configuration imbitable.

Bien que l'interface Gnome 3 me plaise énormément, que je trouve que l'avancée ergonomique que montre le développement de ce gestionnaire de bureau est impressionnant, et que l'innovation de ce dernier m'a vraiment plut, j'ai l'impression de régresser sur le sujet de la configuration.

Oui, je conçois bien que gconf est un outil vraiment intéressant, techniquement parlant, car cela permet une homogénéité des données pour la configuration de l'environnement. Et d'autant plus que cela permet un échange de configuration inter logiciel. Mais ce coté qui force l'utilisation d'un outil de configuration pour changer des valeurs m'horripile fortement.

Bon, cela étant dit, j'ai utilisé gconf que peu de fois pour modifier ce genre de valeur... en général, les développeurs pensent bien à mettre une option dans l'interface dédiée de configuration du programme... mais pour le coup, là, Evolution porte son nom à l'envers, car on a régressé sur pas mal de points.

Seul plaisirs vraiment intéressant que je trouve à Evolution 3, outre le fait qu'il puisse se connecter à Exchange, c'est qu'il est devenu bien plus performant. Et l'interfaçage avec Google pour l'agenda et les contacts synchronisés m'ont charmé (Thunderbird peut le faire, mais honnêtement je trouve qu'Evolution le fait mieux)

Voilà pour ma partie coup de gueule du dimanche à 3h du matin...

Bug avec le pilote WL et Avahi

Patrice Ferlet

Si comme moi vous avez une carte wifi sur votre pc portable de type Broadcom (BCM43225 chez moi) alors vous allez avoir besoin du pilote "wl" (paquet kmod-wl chez rpmfusion...). Ce pilote fonctionne très bien mais la paquet utilise une version qui (pour le moment) a un léger bug qui peut vous engendrer une crise d'arrachage de cheveux en règle. L'idée principale est tout simplement que mon pc portable refuse catégoriquement de trouver les hôtes de mon réseau via le système d'auto-configuration de nom de domaine Avahi. Pour régler cela, je vais vous donner la marche à suivre.

Tout d'abord, pour faire un peu le "pro" je vais vous expliquer comment j'ai trouvé le bug... Rien de bien méchant, il suffisait de connaitre deux commandes: tcpdump et grep. Je vous l'explique par ce que je pense que vous pourrez apprécier de savoir faire cela pour d'autres cas.

Je savais que avahi fonctionnait simplement: au moment où une machine accroche un réseau, le démon avahi envoit un paquet "broadcast" contenant son adresse, son nom de domaine (nom de machine en fait), et quelques infos... Bref, de mon coté j'ai deux pc qui trounent: patrice-desktop et patrice-laptop.

Voilà ce que j'ai fait, bêtement: Sur le poste desktop, j'ai lancé (en root...)

tcpdump -i eth0 | grep mdns

Ce que fait cette commande est simple: afficher toutes les trames réseau qui arrivent sur l'interface réseau eth0 et filtrer seulement celle qui ont "mdns" dans les informations. En fait, sitôt que mon portable se connectera, il doit envoyer un broadcast pour dire "hého je suis patrice-laptop, et j'ai telle ip". Et dans les informations de paquet, il y aura "mdns" qui doit apparaitre, puisque c'est ce protocole qui est utilisé...

Pour faire simple, je relance simplement le service avahi-daemon sur le laptop:

su -c "service avahi-daemon restart"

et là... sur le pc de bureau je vois bien:

12:27:28.822446 IP patrice-laptop.local.mdns > 224.0.0.251.mdns: 0*- [0q] 29/0/0 (Cache flush) AAAA fe80::4e0f:6eff:fe24:6009, (Cache flush) PTR patrice-laptop.local., (Cache flush) A 10.0.0.2, (Cache flush) PTR patrice-laptop.local., (Cache flush) HINFO, PTR patrice-laptop [4c:0f:6e:24:60:09]._workstation._tcp.local., (Cache flush) SRV patrice-laptop.local.:9 0 0, (Cache flush) TXT "", PTR _workstation._tcp.local., PTR patrice-laptop._http._tcp.local., (Cache flush) SRV patrice-laptop.local.:45937 0 0, (Cache flush) TXT "u=guest", PTR _http._tcp.local., PTR Fichiers publics de patachou sur patrice-laptop.local._webdav._tcp.local., (Cache flush) SRV patrice-laptop.local.:45937 0 0, (Cache flush) TXT "u=guest" "path=/", PTR _webdav._tcp.local., PTR Virtualization Host patrice-laptop._libvirt._tcp.local., (Cache flush) SRV patrice-laptop.local.:0 0 0, (Cache flush) TXT "", PTR _libvirt._tcp.local., PTR patrice-laptop._ssh._tcp.local., (Cache flush) SRV patrice-laptop.local.:22 0 0, (Cache flush) TXT "", PTR _ssh._tcp.local., PTR patrice-laptop._udisks-ssh._tcp.local., (Cache flush) SRV patrice-laptop.local.:22 0 0, (Cache flush) TXT "", PTR _udisks-ssh._tcp.local. (855)

Ok , parfait mon laptop envoit les infos, mais faisons maintenant l'inverse, on lance la commande tcpdump sur le portable, et on relance avahi daemon sur le pc de bureau... et ba rien n'apparaissait...

J'ai donc prospecté, et j'ai appris que la version du pilote donné dans rpmfusion n'est pas patché pour corriger le souci. Alors on va palier le souci le temps que l'auteur (que j'ai prévenu) fasse la correction.

Tout d'abord, on récupère le pilote broadcom:

#on va utiliser un répertoire pour notre compilation
mkdir ~/broadcom
cd ~/broadcom

#les sources du  module pour 64 bits
wget http://www.broadcom.com/docs/linux_sta/hybrid-portsrc_x86_64-v5_100_82_38.tar.gz
tar zxf hybrid-portsrc_x86_64-v5_100_82_38.tar.gz

#pour les 32 bits utilisez ceci:
#wget http://www.broadcom.com/docs/linux_sta/hybrid-portsrc_x86_32-v5_100_82_38.tar.gz
#tar zxf hybrid-portsrc_x86_32-v5_100_82_38.tar.gz

#on récupère le patch
wget http://www.broadcom.com/docs/linux_sta/5_100_82_38.patch
patch -p0 < 5_100_82_38.patch

A partir de là, vous avez les sources prêtes à être compilées.

Et bien allons-y, on compile:

make

Maintenant que ça a compilé, et seulement si ça a compilé, on va supprimer le paquet kmod-wl et virer le module:

su -lc "rmmod wl; yum remove kmod-wl -y"

Et enfin, on va installer le module que nous avons compilé:

su -c "make install && insmod wl.ko"

Normalement, votre connexion va se relancer et vous aurez le wifi qui marchera... notez que vous devrez pour le moment refaire la manipulation de compilation à chaque fois que vous mettrez à jour votre noyau.

Ainsi j'ai enfin eut mon réseau qui troune avec "mdns" (donc avahi en fait) et je peux pinger, me connecter ou lister tous les postes de mon réseau sans connaitre leur ip :)" class="smiley Désolé mais j'adore.

Bon j'espère que le mainteneur du paquet kmod-wl a lut mon message... car c'est pas marrant pour tout le monde de devoir se compiler soit même un pilote... Quoique la méthode est pas si complexe...

Séries US : les retours que j’attends !

Sébastien Natroll Éléments indissociables de la vie d’un geek (je dis ça pour qu’on évite de me reprocher de m’éloigner encore un peu plus de ma ligne éditoriale d’origine ), les séries représentent LE passe-temps par excellence lorsque qu’un dimanche pluvieux pointe le bout de son nez. Ou lorsque l’on a bon goût et que l’on regarde La suite >

Jouer avec le bash pour faire un benchmark

Patrice Ferlet

Avant toutes choses, je ne suis pas un dieu du bash, loin de là. J'avais besoin de faire un petit benchmark entre node.js, php et python. Et je vous avoues que j'avais pas très envie de créer des scripts partout pour une opération "one shot"... Connaissant un peu les capacités de bash, j'ai tapé instinctivement (je vous assure) les commandes que je vais vous expliquer. Le but était à la base de créer le moins de fichiers possibles. En fait tout ce dont j'avais besoin c'était de créer les fichier de résultats de temps et de visualiser un graphique. Vous allez voir que ce que je vais vous présenter ne crée que 3 fichiers, en fait un fichier de "log" de temps d'exécution par langage. Pour le reste, c'est bash qui va s'occuper de me rendre service, ainsi que le fabuleux gnuplot.

Juste une petite parenthèse, ce billet est surtout là pour montrer à quel point le terminal de commandes est puissant si l'on se penche un peu sur l'ensemble des commandes utiles. Un peu d'entrainement permet de régler des tas de soucis, mais aussi, comme dans mon cas présenté ici, de permettre des travaux qui peuvent paraître compliqués... mais finalement réglé en quelques minutes... Encore une fois, je connais bien Bash et cela vient naturellement, mais je n'ai pas plus d'aptitude que la plupart des linuxiens sur un terminal. Ma seule performance ici est d'avoir la folie et l'amour des lignes de commandes pour ce genre de process.

Très bien, pour être précis mes benchmarks se portaient sur le calcul de 32 rangs de la suite de fibonnacci. Pour ceux qui ne la connaissent pas, je vous la présente rapidement: 0 1 1 2 3 5 8 13 etc...

En fait c'est simple, on part de 0 puis 1, ensuite il faut ajouter les deux nombres précédents pour trouver le nombre du rang "n".

  • 0 et 1 engendre: 0+1=1
  • la suite est donc 0 1 1
  • ensuite je prend les deux derniers chiffres: 1 et 1, je les additionne: 1+1=2
  • la suite devient 0 1 1 2
  • on continue de la même manière, les deux derniers chiffres de la suite étant 1 et 2: 1+2=3
  • la suite devient 0 1 1 2 3
  • et ainsi de suite, les deux derniers chiffre étant 2 et 3: 2+3=5
  • la suite devient 0 1 1 2 3 5
  • etc...

Algorithmiquement, cela peut se résoudre par une fonction itérative:

fonction fibo (n)
    si n vaut 0 ou 1 on retroune n
    sinon on retourne fibo(n-2)+fibo(n-1)

Ok, pour python, php et node (javascript) cela va se faire en 3 ou 4 lignes... et plutôt que de créer un script, je fais appel aux interpréteurs directement en ligne de commande. Par exemple pour avoir le rang 10 en PHP:

php -r '
function fibo ($n) {
return ($n==0 || $n==1) ? $n : fibo($n-1)+fibo($n-2);
}
fibo(10);
'

Ça fonctionne bien.

Reste que je veux calculer tous les rangs allant de 0 à 32... et bien bash me permet de boucler:

for i in $(seq 1 32)
do
php -r '
function fibo ($n) {
return ($n==0 || $n==1) ? $n : fibo($n-1)+fibo($n-2);
}
fibo('$i');
done

Pas mal... mais il me reste un truc à faire, chronométrer le processus... alors oui je sais, il existe la commande "time" mais elle est pas si simple à gérer en terme de sortie, moi j'ai besoin d'avoir juste le temps total, seconde et milisecondes comprises... et bien c'est simple, on va enregistrer le timestamp + les nanosecondes via la commande "date" avant puis après le processus. Il suffira de soustraire les temps pour avoir le différenciel.

Voilà comment je benchmark PHP:

for i in $(seq 1 32); do 
echo -n $i" "
_s=$(date +%s.%N)
php -r '
function fibo ($n) {
return ($n==0 || $n==1) ? $n : fibo($n-1)+fibo($n-2);
}
fibo('$i');
'
echo $(date +%s.%N)-$_s | bc -l
unset _s
done

Je vous explique. je boucle 32 fois sur la suite de commande:

  • echo -n $i" " : pour savoir où j'en suis, j'ajoute un espace après le nombre, et j'utilise "-n" pour ne pas revenir de suite à la ligne
  • _s=$(date +%s.%N) : je place la date en timestamp (nombre de secondes depuis 1970) suivit de "." et les nanosecondes en cours
  • php -r... : on exécute le code php
  • echo $(date +%s.%N)-$_s | bc -l : j'écris l'opération "date courante avec nanoseconde" - "date enregistré avant le process" et je l'envois à "bc -l" qui va calculer ça
  • unset _s : juste pour virer la vairable $_s qui va plus nous servir.

Bon, vous avez compris, me reste plus qu'à enregistrer le résultat dans un fichier. Je vais donc dans /tmp et je crée un répertoire "bench":

mkdir /tmp/bench
cd /tmp/bench

et je fais le logs, pour PHP en premier (dieu que c'est lent...):

for i in $(seq 1 32); do 
echo -n $i" "
_s=$(date +%s.%N)
php -r '
function fibo ($n) {
return ($n==0 || $n==1) ? $n : fibo($n-1)+fibo($n-2);
}
fibo('$i');
'
echo $(date +%s.%N)-$_s | bc -l
unset _s
done>php.log

On fait pareil pour node:


for i in $(seq 1 32)
do
echo -n $i" "; _s=$(date +%s.%N);
node <<JS
function fibo(n) {
return (n==0 || n==1 ) ? n : fibo(n-2)+fibo(n-1);
}
fibo($i);
JS
echo $(date +%s.%N)-$_s | bc -l; 
unset _s; 
done>node.log

et enfin pour python:

for i in $(seq 1 32)
do 
echo -n $i" "
_s=$(date +%s.%N); python -c '
def fibo(n):
   return n if (n==0 or n==1) else fibo(n-1)+fibo(n-2)
fibo('$i')
'
echo $(date +%s.%N)-$_s | bc -l; 
unset _s; 
done>python.log

J'ai donc là 3 fichier qui contiennent chacun des logs de temps, je vous montre celui de PHP:

$ cat php.log 
1 .036828663
2 .025703992
3 .026992606
4 .033444640
5 .035266864
6 .033452564
7 .028677243
8 .036187726
9 .035308338
10 .033860607
11 .030994306
12 .031643060
13 .030666493
14 .033131695
15 .037534009
16 .034849018
17 .036111420
18 .042433952
19 .044907994
20 .052853506
21 .068992452
22 .086515691
23 .125384399
24 .180959996
25 .279442730
26 .412510010
27 .648189657
28 1.019483322
29 1.626384710
30 2.644171263
31 4.257360111
32 6.938595991

Mon souci va être d'utiliser les 3 fichiers en même temps dans gnuplot... plutôt que de passer par 3 commandes en entrée (je vais vous montrer comment on fait dans gnuplot) je vais utiliser une commande que j'adore: paste

Cette commande est magique, elle "colle" en colonnes les fichiers les uns à coté des autres, voici ce que ça donne chez moi:

$ paste *.log
1 .065706975    1 .036828663    1 .051057606
2 .075880231    2 .025703992    2 .046552158
3 .073986169    3 .026992606    3 .046123806
4 .073072239    4 .033444640    4 .042877291
5 .070891448    5 .035266864    5 .045012469
6 .074523262    6 .033452564    6 .047550418
7 .072727132    7 .028677243    7 .042658307
8 .075226716    8 .036187726    8 .045704715
9 .069166717    9 .035308338    9 .046088504
10 .071344391   10 .033860607   10 .043567632
11 .072756556   11 .030994306   11 .043765426
12 .073284181   12 .031643060   12 .043340776
13 .072755513   13 .030666493   13 .045153174
14 .068839918   14 .033131695   14 .047908738
15 .079993544   15 .037534009   15 .050165910
16 .072923693   16 .034849018   16 .048907127
17 .074823342   17 .036111420   17 .047513241
18 .073899009   18 .042433952   18 .053685052
19 .069858333   19 .044907994   19 .048828831
20 .071467252   20 .052853506   20 .050347929
21 .073423093   21 .068992452   21 .049505150
22 .074624496   22 .086515691   22 .060360949
23 .071165563   23 .125384399   23 .068465359
24 .076328627   24 .180959996   24 .079916752
25 .076409643   25 .279442730   25 .100771059
26 .079967605   26 .412510010   26 .136666736
27 .076491429   27 .648189657   27 .198588958
28 .085810737   28 1.019483322  28 .293586222
29 .095436353   29 1.626384710  29 .434787310
30 .104759161   30 2.644171263  30 .675019713
31 .125979134   31 4.257360111  31 1.074293193
32 .155473948   32 6.938595991  32 1.705526686

S'en est presque poétique... non ? Vous avez remarqué qu'on a besoin ici des colonnes 1, 2, 4 et 6 pour avoir la valeur de 'n' et le temps d'exécution pour chaque langage. Notez aussi que les colonnes représentent les fichier dans l'ordre alphabétique du nom du fichier de log, ainsi de gauche à droite on a "node", puis "php" et enfin "python"...

Bon on passe à gnuplot, on lance la commande gnuplot et on tape ceci:

gnuplot> set title "Benchmark Fibonnacci"
gnuplot> set xlabel "n value"
gnuplot> set ylabel "time in seconds"
gnuplot> set grid
gnuplot> plot "< paste *.log" using 1:2 with line title "node", "< paste *.log" using 1:4 with line title "php",  "< paste *.log" using 1:6 with line title "python"

Je sais que j'aurais put utiliser les fichier les uns après les autres mais la commande "paste" me permet des copier/coller rapides de mes commandes sans avoir à changer le nom du fichier à chaque fois... et puis je voulais vous parler de cette commande d'abord hein !

Bref, le résultat est de cette forme: Fibonnacci benchmark gnuplot

Vous l'aurez donc compris, en maitrisant un peu le bash on peut effectuer des opérations assez poitilleuses sans pour autant à avoir à gérer un projet complet de scipts... le tout est de s'entrainer, et tout devient instinctif.

Je le répète, j'ai fait ces opérations sans me poser de questions, et comme je me suis rendu compte que ça pourrait intéresser certains... je me suis dit qu'il serait bon de montrer un peu comment je procède.

Et bien voilà, explication terminée. En espérant que ça vous ait donné envie de taper des lignes de commandes plutôt que de passer par un tableur... ;)" class="smiley

PS: désolé pour les fautes dorthographe mais j'ai du mal à les trouver ce soir... je corrigerai demain...

RHEL 5.7

Remi Collet

Mise à jour terminée de mon dédié. $ cat /etc/redhat-release Red Hat Enterprise Linux Server release 5.7 (Tikanga) Annonce de sortie : Red Hat Enterprise Linux 5.7 Now Available (en Anglais)... Lire RHEL 5.7

Page générée le 09 juil 2014 à 21:13