ReLoad

Thierry Jaouen ~ WikiBlog
"Rien à foutre d'être lu, tant que je peux me relire."

Outils pour utilisateurs

Outils du site


start

Xen , Debian et pvGrub

Mise en place de “pvGrub” et configuration des “DomU”.

~~READMORE~~

Lire la suite...

2015/02/19 23:20 · thierry

ZoneMinder: mise à jour pour la version 1.28

On a déjà vu la procédure d'installation pour la version “1.27” par , et c'est la même chose, sauf quelques détails…

~~READMORE~~

# cd /usr/local/src

Le source:

# wget https://github.com/ZoneMinder/ZoneMinder/archive/v1.28.1.tar.gz
# tar xvzf v1.28.1.tar.gz
# cd ZoneMinder-1.28.1/
# ln -s distros/debian
# dpkg-checkbuilddeps

Là, ça me dit que des dépendances sont manquantes: je les installe. Exemple:

# aptitude search libvlccore-dev
... etc ...

Maintenant que toutes les dépendances sont là, j'ai eu un problème sur l'étape suivante: la compilation.

Il semblerait que le patch là “./debian/patches/01_vendor-perl.diff” soit inutile.
Donc je le désactive comme ceci:

# sed -i -e '/01_vendor-perl.diff/d' ./debian/patches/series

Maintenant, ça devrait compiler.

# dpkg-buildpackage

Avant d'installer, une petite dépendance est encore manquante:

# aptitude install libexpect-perl liburi-encode-perl

Maintenant, on peut installer:

# cd ..

Virer la version actuellement en service:

# dpkg -r zoneminder

(en laissant la configuration en place bien sûr…)

Installer la nouvelle:

# dpkg -i zoneminder_1.26.5-1_amd64.deb
# aptitude install
# dpkg-reconfigure zoneminder

A part quelques petits warnings et autres packages récalcitrant, aucun problème grave a signaler.

Voila.

2015/02/17 12:45 · thierry

Boucle Event en Perl

En Perl, je vais proposer un simple exemple pour utiliser le module "AnyEvent".

Ce module permet de créer une boucle d'Event…
En C, c'est "libev" qui est (toujours?) utilisé…

Cette manière de programmer est parfois obligatoire pour ajouter des fonctionnalités a un framework , un peu comme ajouter des méthodes à un objet.

On n'a pas a savoir comment l'objet fonctionne, et on a juste a y insérer ses petites fonctionnalités dedans.

Dans d'autres situations, c'est pour avoir un programme qui ne bloque pas sur des traitements “long”… DNS , Socket , …

~~READMORE~~

#!/usr/bin/env perl

use strict;
use warnings;

use AnyEvent;

# Exemple: (libev) Event en Perl
#
# Intro: http://search.cpan.org/~mlehmann/AnyEvent-7.08/lib/AnyEvent/Intro.pod
# Source: http://search.cpan.org/~mlehmann/AnyEvent/lib/AnyEvent.pm

$|=1;

my $count = 0;

# cv -> Condition Variable
my $cv;

# Créer un event sur timer, execute 1 fois
my $w1 = AE::timer( 3, 0, sub { print "Event: hello 3 (once)\n"; } );

# Créer un event sur timer, execute toutes les secondes
my $w2 = AE::timer( 3, 1, sub {
    print "Event: hello 3 (for each second)\n"; 
    # si une condition est atteinte, alors quitter la boucle event.
    $cv->send('hello','world',AE::now) if (++$count%5)==0;  
  } );

# Un event associe a un signal 
my $w3 = AE::signal USR1 => sub { print STDERR "Signal: coucou\n"; };

# Un event associe au signal ^C
my $w4 = AE::signal INT => sub { die "break"; };

# Eventuellement, autre chose a faire...
#my $w5 = AE::idle( sub { sleep(1); } );

print "Waiting 3 secondes before first events...\n";

foreach ( 0 .. 2 )
{
  # Créer la "Condition Variable"
  # (la recreer a chaque fois que la Condition Variable est devenu vrai)

  $cv = AE::cv;

  # Attendre le "send" associe a ce "cv"
  my @bla = $cv->recv;      # <-- event loop

  # On a recupere les parametres du "send"

  print "recv: " , join('|',@bla), "( $count )\n";
}

undef $cv;

#undef $w5;
undef $w4;
undef $w3;
undef $w2;
undef $w1;

print "Fin.\n";

# --------------------------
# EOF

Résultat:

Waiting 3 secondes before first events...
Event: hello 3 (once)
Event: hello 3 (for each second)
Event: hello 3 (for each second)
Event: hello 3 (for each second)
Event: hello 3 (for each second)
Event: hello 3 (for each second)
recv: hello|world|1403760002.88818( 5 )
Event: hello 3 (for each second)
Event: hello 3 (for each second)
Event: hello 3 (for each second)
Event: hello 3 (for each second)
Event: hello 3 (for each second)
recv: hello|world|1403760007.8882( 10 )
Event: hello 3 (for each second)
Event: hello 3 (for each second)
Event: hello 3 (for each second)
Event: hello 3 (for each second)
Event: hello 3 (for each second)
recv: hello|world|1403760012.8882( 15 )
Fin.
2015/02/12 18:02 · thierry

Xen PCI Passthrough

Xen avec le toolstack “XL” (qui vient avec Debian Jessie par défaut).

Le but est d'importer une carte PCI dans une machine virtuelle.
Dans un premier exemple, c'est une carte WIFI.

~~READMORE~~

Lire la suite...

2015/02/08 22:18 · thierry

"hostapd" et entropie

Lorsqu'on a un système qui manque de données aléatoire, on peut installer le service “haveged” .

Exemple, avec mon “hostapd” qui râle:

...
random: Only 17/20 bytes of strong random data available from /dev/random
random: Not enough entropy pool available for secure operations
WPA: Not enough entropy in random pool for secure operations - update keys later when the first station connects
...
# cat /proc/sys/kernel/random/entropy_avail
367

Une solution:

# aptitude install haveged
# cat /proc/sys/kernel/random/entropy_avail
1913

Voila.

2015/02/06 23:28 · thierry

<< Billets récents | Anciens billets >>


<html>

</html>Historique du blog<html>

</html> <html><table style=“border:0px ; empty-cells:hide” border=0 width=“100%”> <tr><td style=“border:0px; text-align: right”> <a href=“https://twitter.com/thierry_jaouen” class=“twitter-follow-button” data-show-count=“false” data-lang=“fr” data-size=“large”>Suivre @thierry_jaouen</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=“platform.twitter.com/widgets.js”;fjs.parentNode.insertBefore(js,fjs);}}(document,“script”,“twitter-wjs”);</script> </td> <td style=“border:0px; text-align: right”> <a title=“RSS Feed” href=“/feed.php”><img border=“0” src=“/pub/img/icon-feed-25.png”></a> </td></tr> </table></html>

start.txt · Dernière modification : 2019/05/24 22:00 de thierry