Ce blog — désormais archivé — est en lecture seule. Rendez-vous sur mon nouveau site personnel.

Prendre un Café

L'espace d'expression de Nicolas Perriault

Aller au contenu | Aller au menu | Aller à la recherche

Keyword - ubuntu

Fil des billets

mardi 2 juin 2009

Utiliser les fonctions GeoIP de PHP sous Ubuntu

Mon Dieu, les billets techniques refleuriraient-ils au printemps ? Si vous désirez récupérer des informations géographiques à partir de l’adresse IP (ou du hostname) d’un utilisateur, vous pouvez utiliser les fonctions fournies par l’extension PECL GeoIP.

Voici la procédure d’installation sur une Ubuntu 8.04:

$ sudo -s
# apt-get install build-essential php5-dev php5-cli libgeoip-dev libgeoip1 php-pear
# pecl install geoip

Si toiut s’est bien passé :

# echo "extension=geoip.so" >> /etc/php5/cli/php.ini

Si vous utilisez Apache comme serveur :

# echo "extension=geoip.so" >> /etc/php5/apache2/php.ini

Il faut également installer la base GeoIPCity de Maxmind :

# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
# gunzip GeoLiteCity.dat.gz
# mv GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat

Vous pouvez maintenant tester l’extension avec une ligne du genre[1] :

$ echo "<?php var_dump(geoip_record_by_name('209.202.168.**'));"|php

Ça donne ici :

array(11) {  ["continent_code"]=>
  string(2) "NA"
  ["country_code"]=>
  string(2) "US"
  ["country_code3"]=>
  string(3) "USA"
  ["country_name"]=>
  string(13) "United States"
  ["region"]=>
  string(2) "NC"
  ["city"]=>
  string(4) "Cary"
  ["postal_code"]=>
  string(5) "27511"
  ["latitude"]=>
  float(35.7********)
  ["longitude"]=>
  float(-78.7*******)
  ["dma_code"]=>
  int(560)
  ["area_code"]=>
  int(919)
}

Enjoy.

Notes

[1] J’ai volontairement masqué certaines informations pour d’évidentes raisons de confidentialité.

vendredi 8 mai 2009

Installer Redmine sous Ubuntu

Redmine est un gestionnaire de projet technique exploitant Ruby on Rails et très inspiré de Trac, mais qui le dépasse fonctionnellement sur plusieurs points, notamment avec une gestion multiprojets qui fait cruellement défaut à son inspirateur. Voyons comment installer et déployer la dernière version de la branche stable (0.8) sur une Ubuntu Hardy Heron LTS[1].

(Redmine Screenshot)

Toutes les opérations décrites ci-dessous se font en root, mais libre à vous d’utiliser sudo à chaque fois, ou une fois pour toutes en lançant la commande sudo -s.

En préambule, on installe les quelques paquets qui nous seront nécessaires[2] :

# apt-get install build-essential ruby ruby1.8-dev rake libopenssl-ruby \
  libmysql-ruby apache2-threaded-dev subversion git

Maintenant, on récupère les sources de Redmine[3], qu’on va installer dans /opt :

# svn co http://redmine.rubyforge.org/svn/branches/0.8-stable /opt/redmine-0.8
# ln -s /opt/redmine-0.8 /opt/redmine

On va ajouter les sources de la version 2.1.2 de rails[4] dans le répertoire vendor de l’application, afin de cloisonner autant que possible l’environnement qu’elle exploite :

# cd /opt/redmine
# wget -O rails.tar.gz http://github.com/rails/rails/tarball/v2.1.2
# tar xvzf rails.tar.gz && rm rails.tar.gz
# mv railsXXX vendor/rails

Créez maintenant une base de données (MySQL ou autre) dédiée à Redmine. Une bonne pratique est de créer également un utilisateur MySQL aux droits restreints à sa seule exploitation.

Ensuite, éditez le fichier config/database.yml afin de modifier les paramètres de connexion à la base de données précédemment créée.

On installe maintenant une version récente de rubygems, ce qui nous permettra d’installer passenger, une sorte de mod_rails permettant de déployer facilement des applications rails sur un serveur Apache :

# wget http://rubyforge.org/frs/download.php/56228/rubygems-1.3.3.tar.gz
# tar xvzf rubygems-1.3.3.tar.gz && rm rubygems-1.3.3.tar.gz
# ruby setup.rb
# rm -r rubygems-1.3.3

Vous pouvez maintenant lancer la tâche de création des tables :

# rake db:migrate RAILS_ENV="production"

Et remplir la base avec quelques données par défaut :

# rake redmine:load_default_data RAILS_ENV="production"

On installe donc passenger, qui au passage vous posera quelques questions très simples :

# gem install passenger

On installe le module apache pour prendre en charge passenger :

# passenger-install-apache2-module

Pour mapper un domaine - par exemple mon.domaine.tld - vers votre instance Redmine, il faut d’abord créer un VirtualHost apache dédié, par exemple dans le fichier /etc/apache2/sites-available/redmine :

<VirtualHost *>
  SetEnv RAILS_ENV production
  ServerName mon.domaine.tld
  DocumentRoot /opt/redmine/public
</VirtualHost>

Vous noterez que la racine publique du vhost pointe vers le dossier public de l’instance Redmine précédemment installée. N’oubliez pas non plus de déclarer le domaine dans votre fichier /etc/hosts :

127.0.0.1 mon.domaine.tld

On active maintenant le vhost et on relance Apache :

# a2ensite redmine
# /etc/init.d/apache2 restart

Une dernière petite chose, vous devez autoriser Apache à lire et écrire dans certains répertoires de l’instance Redmine, comme suit :

# cd /opt/redmine
# chown -R www-data:www-data files log tmp
# chmod -R ug+rw files log tmp
# chmod -R o-rw files log tmp

Voila, vous devriez avoir une instance totalement fonctionnelle de Redmine, accessible par le domaine que vous avez configuré.

En cadeau Bonux, le support de GMail et TLS pour l’envoi d’emails

Si vous désirez configurer l’envoi des emails en utilisant un (ou votre) compte GMail[5], voici la procédure :

Installez tout d’abord le support de TLS pour ActiveMailer :

# cd /opt/redmine
# ruby script/plugin install git://github.com/collectiveidea/action_mailer_optional_tls.git

Puis éditez le fichier config/email.yml :

production:
  delivery_method: :smtp
  smtp_settings:
    tls: true
    address: "smtp.gmail.com"
    port: '587'
    domain: "smtp.gmail.com"
    authentication: :plain
    user_name: "votreadresse@gmail.com"
    password: "votremotdepasse"

Relancez Apache pour que la modification soit effective.

Edit : Prise en compte de certaines remarques faites en commentaires.

Notes

[1] C’est la version qui propulse mon serveur.

[2] Ce sont les paquets qui m’ont été nécessaires, sur ma machine ; n’hésitez pas à remonter d’éventuels manques en commentaires.

[3] On installe ici la dernière branche stable disponible à l’heure où sont écrites ces lignes, la 0.8.

[4] Oui, il y a plus récent, mais Redmine 0.8 est conçu pour tourner avec cette version : autant limiter les risques d’incompatibilités.

[5] L’intérêt principal à mes yeux reste l’archivage de tous les éléments envoyés.

mercredi 16 mai 2007

KeyJnote, et vos présentations ont la classe

KeyJnote est un logiciel permettant l'affichage de présentations au format PDF. Le logiciel, riche en effets OpenGL, se veut aussi spectaculaire que Keynote.

Bien que le paquet keyjnote soit disponible dans les dépôts d'Ubuntu Feisty en version 0.8.2, j'ai préféré installer la toute dernière version (0.9.4) qui s'installe relativement facilement :

$ sudo apt-get install python python-pygame python-opengl python-imaging gs pdftk
$ wget -c http://ovh.dl.sourceforge.net/sourceforge/keyjnote/KeyJnote-0.9.4.tar.gz
$ tar xvzf KeyJnote-0.9.4.tar.gz && sudo mv KeyJnote-0.9.4/keyjnote.py /usr/local/bin/

L'idée est de préparer ses slides dans un éditeur permettant de sortir du PDF (comme Impress ou KPresenter, par exemple) et de laisser la gestion de l'affichage à KeyJnote. Pour vous faire une idée plus précise des capacités du logiciel, lancez la démo en n'hésitant pas à jouer avec la souris et les raccourcis clavier disponibles :

$ keyjnote.py KeyJnote-0.9.4/demo.pdf

Voila, même sous Linux, vos présentations n'auront plus jamais la même tronche ;)

mercredi 25 avril 2007

Mettre en place un bouncer IRC avec Muh

Là, en lisant le titre, tu [1] te dis :

Ça y est, il a définitivement pété une durite, je le comprend même plus...

Rassure-toi, la fièvre tombe progressivement, mais je vais quand même essayer de t'expliquer de quoi il s'agit. Si tu utilises quotidiennement IRC, tu sais que chaque fois que tu rejoins un canal ou lances une commande /WHOIS, on voit ta résolution DNS inverse (par exemple jeanpierre@82-76-32-67.Rennes22.monfai.net.

Et parfois cette situation t'embête, pour x ou y raison. Là tu as 3 choix :

  • Tu renonces et acceptes ton sort sans rechigner.
  • Tu te loggues sur un serveur en SSH, tu lance un screen et utilises irssi. Valable, mais un poil overgeek pour moi qui me suit bien habitué à XChat, parfaitement intégré dans le bureau Gnome (avec les notifications des hilites dans la traybar, miam.)
  • Tu installes Muh, et continues à utiliser ton client IRC préféré tout en profitant de la résolution DNS inverse de ton serveur à toi.

Muh va faire office de proxy IRC - ou de bouncer, comme tu préfères. C'est à dire que tu vas mirrorer l'accès à tes serveurs IRC préférés sur ton serveur personnel [2]. Attention, certains hébergeurs n'aiment pas ça du tout et le précisent parfois dans les CGU du service : à vérifier.

Si une distro debian-based est installée sur le serveur, l'installation est simplissime :

$ sudo apt-get install muh
$ mkdir ~/.muh
$ cp /usr/share/doc/muh/examples/muhrc.gz ~/.muh
$ gunzip ~/.muh/muhrc.gz

Édite le fichier ~/.muh/muhrc, ça commence par ton identité sur IRC :

nickname = "NiKo";
altnickname = "NiKo`";
realname = "Nicolas Perriault";
username = "niko";

Je pense que c'est assez parlant. La configuration du port :

listenport = 9999;

Si tu utilises un firewall, attention : tu risques de te faire pincer très fort prends garde à autoriser l'écoute sur ce port.

Maintenant, définis un mot de passe de connexion :

password = "monbeaupassword";

Ce mot de passe est nécessaire pour te connecter à ton instance de Muh. Enfin, la liste des serveurs que tu désires bouncer :

servers {
  "irc.freenode.net",
  "irc.mozilla.org",
};

Enregistre le fichier et lance Muh :

$ muh

Voila, il ne te reste plus qu'à te connecter à ton serveur comme à n'importe quel autre via ton client IRC habituel.

Notes

[1] Oui, je te tutoies, c'est hype.

[2] Bien sûr, il faut disposer d'un serveur dédié ou équivalent.

jeudi 12 avril 2007

Feisty+1 sera Gutsy Gibbon

Le Gibbon Déterminé succèdera donc au Faon Téméraire, ainsi en a décidé SABDFL.

Cette future version du système d'exploitation Ubuntu sera déclinée en une version supplémentaire ne comportant plus aucun logiciel ou driver propriétaire, closed-source ou incompatible avec la définition de Logiciel Libre, en collaboration avec l'équipe de développement de gNewSense.

Gutsy aura de fortes chances d'embarquer Compiz ou le futur hybride Compiz/Beryl par défaut, même si sur le sujet personne n'ose plus vraiment prédire quoique ce soit.

D'ici là, le petit Faon sera ravi d'équiper vos machines dès le 19 avril de cette année. Les plus accros au support CD physique (croisés des moins impatients) seront ravis d'apprendre que ShipIt leur livrera leurs CD de Feisty sous 4 à 6 semaines.

Edit : Et Bill Gates aura beau rien faire qu'à copier Mark Shuttleworth, ça ne nous gâchera pas les feistyvités. Na.

dimanche 1 avril 2007

Novell rachète Canonical

Edit du 2 avril : Fin du poisson. J'ai hésité à le faire tellement c'était gros, mais les trois ou quatre qui se sont laissés prendre justifient à mes yeux la tentative. Désolé pour la frayeur ;)

Le billet original

Trop débecté pour commenter en long et en large le séïsme : Novell fait l'acquisition de la société Canonical - éditrice de la distribution Ubuntu qui nous est chère - pour un montant resté secret. Le développement et la distribution de cette dernière passe donc sous le joug de Novell, déjà compromise avec Microsoft dans un accord des plus critiqués par la communauté gravitant autour des logiciels libres.

Pas de commentaire, donc, mais juste un truc : le nouveau système révolutionnaire de mises à jour payantes et payables en ligne par carte bancaire via le très controversé CNR prévu pour les prochaines versions d'Ubuntu ressemble tout de même à une monstruosité digne des pires version de Windows Vista.

Je ne comprends pas ce qui a pu passer par la tête des dirigeants de Canonical, mais je suis écoeuré.

vendredi 23 mars 2007

Intégration de Jamendo dans RhythmBox sous Feisty

[Via Jono Bacon]

Le catalogue intégral Jamendo débarque nativement intégré dans la version de RhythmBox qui équipera Feisty Fawn, la version d'Ubuntu en cours de développement à sortir courant avril.

Jamendo est une plateforme de diffusion et de promotion d'artistes proposant de la musique sous licences Creative Commons : c'est à dire que non seulement le téléchargement y est absolument légal mais qui plus est fortement incité :)

Pour accéder au catalogue Jamendo dans RhythmBox, il suffit d'activer le greffon Jamendo via le menu Edition de RhythmBox. La qualité de restitution des flux est excellente, et des liens contextuels proposent le téléchargement direct des albums dans leur intégralité, pour stockage en local.

RhythmBox et le plugin Jamendo

Le plus marquant reste le texte affiché dans la barre de statut du logiciel une fois la liste intégrale des titres Jamendo disponibles rapatriée :

22972 morceaux, 65 jours, 21 heures et 54 minutes

De quoi voir venir, assurément.

Notez que de la même manière, le catalogue Magnatune, quand à lui payant et par conséquent plus proche de ce que peut être une boutique de musique en ligne, est également disponible via un autre greffon.

iThunes n'a qu'à bien se tenir.

dimanche 4 mars 2007

Rhythmbox tips

(Excusez cette soudaine profusion de billets, je solde)

Je suis fan de Rhythmbox, le gestionnaire de fichiers musicaux fourni avec Gnome dans Ubuntu. C'est simple, ça fonctionne. Voici quelques astuces destinées à une utilisation optimale du programme.

Applet de contrôle dans un tableau de bord Gnome

Music Applet permet de contrôler votre lecteur musical préféré depuis un tableau de bord Gnome :

Music Applet

Pour l'installer :

$ sudo apt-get install rhythmbox-applet

Puis ajouter un nouvel applet au tableau de bord et choisissez Music Applet dans la section Multimedia. Notez qu'il est également capable de piloter Banshee ou Muine.

Notification du titre écouté dans Gajim

Pierpaolo Follia a réalisé un plugin pour Rhythmbox permettant de changer votre message de statut Gajim en fonction du titre que vous écoutez. Pour l'installer, c 'est très simple :

$ mkdir ~/.gnome2/rhythmbox ~/.gnome2/rhythmbox/plugins
$ cd ~/.gnome2/rhythmbox/plugins
$ wget -c http://madchicken.altervista.org/tech/download/gajim-status.tar.gz
$ tar xvzf gajim-status.tar.gz && rm gajim-status.tar.gz

Relancez Rhythmbox, et configurez le plugin via le menu Edition > Greffons > Gajim status changer :

Capture-Gajim_Status_Changer.png

Suggestions Last.fm avec le plugin LastRhythm

Je suis également un très grand fan de last.fm, particulièrement des fonctionnalités de suggestions par similarité artistique. Aussi, quand je suis tombé complètement par hasard sur l'existence d'un plugin LastRhythm pour Rhythmbox, je me suis empressé de l'installer pour le tester.

Verdict, ça marche fort bien (sous Edgy du moins.)

La procédure d'installation est très simple :

$ sudo apt-get install subversion python-elementtree
$ svn co https://svn.usrportage.de/lastrhythm/trunk/ /usr/lib/rhythmbox/plugins/lastrhythm

Redémarrez rhythmbox, activez le plugin greffon et appréciez :)

- page 1 de 13