Le TwiBlog

The one with Twidi

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

mardi 18 octobre 2011

Django 1.3 et postgresql (problème lié à pysocopg sous ubuntu oneiric)

Vous utilisez django ? En version <= 1.3.1 ?

Vous utilisez postgresql ? (qui utiliserait encore mysql...)

Vous venez de mettre à jour votre (k)unbutu en oneiric ?

Jusque là, tout va bien.

mais d'un coup soudain votre navigateur vous affichera un méchant message au lieu de votre belle page :

 Exception Value: current transaction is aborted, commands ignored until end of transaction block

Ou alors (car ce n'est pas systématique) un jour vous allez lancer un test de votre application django.

Et là c'est le drame :

 psycopg2.ProgrammingError: autocommit cannot be used inside a transaction

MAIS !!??

Le coupable est identifié : psycopg2 qui, en version 2.4.2, casse plus ou moins django.

Le bug est référencé sur le tracker django : https://code.djangoproject.com/ticket/16250

Il est "fixé" mais comme indiqué dans le dernier commentaire, le fix n'est pas dans django 1.3.1 et ne sera donc disponible qu'à partir de django 1.4.

Comment faire ?

Simple.

Il faut donc utiliser psycopg 2.4.1 au lieu de psycopg 2.4.2 fourni avec la dernière ubuntu. Malheureusement le paquet n'est pas disponible.

Pas grave, nous allons le faire à la main !

Avant tout cela vous voudrez peut-être supprimer la version 2.4.2 de psycopg de votre système, dans ce cas :

 sudo apt-get --purge remove python-psycopg2

Puis on commence par installer dans le système les paquets nécessaires à la compilation (n'ayez pas peur) de psycopg2 :

 sudo apt-get build-dep python-psycopg2

Et enfin on va installer la version voulue via pip (mettez sudo si vous n'êtes pas dans un virtualenv) :

 pip install psycopg2==2.4.1

Et voilà tout remarche comme avant !

lundi 23 avril 2007

Mysql 5 (5.036, 5.038 et suivant) : l'installation échoue en cas de noyau 2.4

Lors du passage de mysql-server-5.032 à mysql-server-5.038-1, la procédure d'installation (en fait un apt-get upgrade) s'est bloquée à ce niveau :

Setting up mysql-server-5.0 (5.0.38-1) ...
Stopping MySQL database server: mysqld.

Après moulte recherche, il s'avère que c'était un problème de version de noyau. En effet, depuis la version 5.036, le serveur mysql a besoin d'un noyau 2.6, or j'étais en 2.4 depuis des lustres.

MySQL Bugs: #27714: mysql_install_db fails with kernel 2.4

lundi 27 mars 2006

Un portable, plusieurs réseaux, sous Linux (debian / ubuntu)

J'utilise chez moi et au travail le même pc portable (que je trimballe, mais c'est pas lourd, ca fera l'objet d'un autre billet).

Or bien sur les réseaux sont différents

  • à la maison, wifi protégé en dhcp
  • au boulot, reseau ethernet sans dhcp
  • au boulot toujours, quand le reseau marche pas, le wifi du voisin, dhcp, non protégé

Le soucis : a chaque fois jouer avec les ifup, ifdown, changer le resolv.conf (car le dhcp ecrase le fichier, et le reseau sans dhcp a besoin qu'on spécifie les dns)

L'envie : une simple commande très courte à taper à chaque fois que j'ai besoin de changer de reseau.

La solution : deux paquets (debian) à installer : ifscheme et resolvconf

ifsheme se charge de gérer des profils réseaux. Quant à resolvconf, il se charge de gérer, comme son nom l'indique, le fichier resolv.conf

Configuration :

Auparavant, j'avais une zone du type "iface eth0 inet static" et une "iface ath0 inet dhcp" (ath0 c'est mon interface wifi), avec des lignes commentées, que je modifiais pour chaque changement. En effet, je trouvais ça plus rapide que d'utiliser les outils de gnome/kde pour gérer les profils réseaux. Et j'avais un fichier "resolv.conf.taf" que je copiais à la place de resolv.conf dès que j'arrivais au boulot.

Maintenant, voici ce que j'ai dans mon fichier /etc/network/interfaces (je saute le début du fichier concernant l0, et je remplace les infos (ip, cle...) par des lettres) :

mapping eth0
        script ifscheme-mapping
  
iface eth0-taf inet static
        address 192.168.xxx.yy
        netmask 255.255.255.0
        gateway 192.168.xxx.1
        dns-nameservers aa.bb.cc.dd ee.ff.gg.hh

mapping ath0
        script ifscheme-mapping
 
iface ath0-taf inet dhcp
  
iface ath0-home inet dhcp
        wireless-essid MONESSID
        wireless-key MACLEWEP

On le voit, pour eth0, je ne gère que le scheme (profil) "taf", alors que pour ath0 (wifi), je gère "taf" et "home". Les profils sont gérés par carte, en spécifiant interface-scheme, donc ath0-taf et ath0-home sont deux profils totalement séparés.

On remarquera la ligne dns-nameservers pour eth0-taf, où l'in indique les dns. Cette ligne est inutile pour les profils wifis car ils sont en dhcp.

Pour utiliser ces profils, il suffit d'utiliser en premier lieu la commande ifscheme nom-du-scheme, suivi du ifup de l'interface voulue.

Par exemple : ifscheme home; ifup ath0

C'est déjà très bien. Mais pour moi, cela faisait trop à taper.

Je me suis donc créé un petit script, que j'ai appelé "n" (pour network) et que j'ai placé dans mon répertoire ~/bin (répertoire placé dans le path grace à une configuration de mon bashrc).

Voici ce script "n"

#!/bin/sh

case "$1" in
        taf)
                sudo ifdown ath0
                sudo ifscheme taf
                sudo ifup eth0
        ;;

        taf2)
                sudo ifdown eth0
                sudo ifscheme taf
                sudo ifup ath0
        ;;

        home)
                sudo ifdown eth0
                sudo ifscheme home
                sudo ifup ath0
        ;;

        *)
        echo "Usage: n {taf|taf2|home}"
        exit 1
        ;;
esac

L'utilisation est alors ultra simple

  • n taf quand j'arrive au boulot
  • n taf2 quand je préfère utiliser la connexion wifi du boulot
  • n home quand j'arrive chez moi

C'est très simple et rapide.

Bien sûr, il existe d'autres solutions, notamment la reconnaissance et configuration/choix automatique du réseau (hotplug et consors), le choix du profil par interface graphique...

Je vous met ici ce qui m'a mis sur la piste de resolvconf et ifscheme, et qui propose tout un tas d'autres solutions : Banc d'essai : Un portable, plusieurs reseaux (probleme classique)

PS : pour faire marcher resolvconf, j'ai du effectuer une action lue dans la doc : remplacer le fichier /etc/resolv.conf par un lien symbolique vers /etc/resolvconf/run/resolv.conf

vendredi 9 décembre 2005

debian / apt / dpkg : Comment empêcher la mise à jour d'un paquet

Prenons l'exemple de wine qui, pour certaines raisons (comme l'install d'IE6 sous linux), doit être installé dans une version spécifique.

Le problème est que lors de la prochaine mise à jour (apt-get upgrade), wine sera mis à jour à la dernière version disponible.

La solution est la suivante, qui consiste à dire à dpkg (et donc apt) de ne pas mettre à jour ce paquet :

 echo "nom_du_paquet hold" | dpkg --set-selections

Et voilà ;)

Pour débloquer un paquet :

 echo "nom_du_paquet install" | dpkg --set-selections

Pour avoir la liste des paquets bloqués :

 dpkg --get-selections | grep hold

lundi 14 novembre 2005

Apache et mod_perl sous debian : probleme avec Apache::Request (libapreq.so)

Entamant le développement d'un nouveau projet, j'ai passé le week-end à lire la doc de mod_perl (enfin plutôt le "guide"), et à expérimenter tout ça.

Bien sur, comme d'habitude, rien ne marche parfaitement du premier coup.

Le paquet debian (ou tout du moins ubuntu breezy) du module Apache::Request (qui permet notamment de récupérer les paramètres GET et POST à la manière du module CGI) ne marche pas.

Voici l'erreur obtenue quand on veut l'utiliser :

Can't load '/usr/lib/perl5/auto/Apache/Request/Request.so' for module Apache::Request: libapreq.so: cannot open shared object file: No such file or directory at /usr/lib/perl/5.8/DynaLoader.pm line 225. at /usr/lib/perl5/mod_perl.pm line 14

La solution est la suivante : désinstaller le paquet libapache-request-perl et installer via CPAN le module Apache::libapreq

Il est nécessaire d'avoir le paquet debian apache-dev d'installé sinon la compilation via CPAN ne fonctionnera pas.

jeudi 13 octobre 2005

Ubuntu 5.10 - breezy - est sorti

Pile à l'heure, Ubuntu 5.10 (5 pour 2005, et 10 pour Octobre), de som petit nom "Breezy Badger", est dans les bacs.

Je trouvais déjà la première version (4.10) au delà de mes espérances. Je n'ai pas été déçu du tout lors de la seconde (5.04) et alors là, je me réjouis et attends avec impatience la suivante tant m'apporte chaque nouvelle version !

En effet, utilisant quotidiennement Ubuntu sur mon portable depuis maintenant un an, je suis comblé par le support toujours plus complet de mon "laptop", et les avancées indénombrables en ce qui concerne le "desktop"... Pour moi, linux est enfin prêt pour ce "desktop".

En utilisateur plus que satisfait, je ne peux que recommander d'installer sinon essayer (via le live-cd, qui n'installe rien sur le pc) cette nouvelle version. Vous pouvez-même, si vous ne souhaitez pas gâcher un cd (hum...) en commander un (ou plus) gratuitement sur le site.

lundi 19 septembre 2005

Easy Ubuntu 2.0 : Ubuntu enfin fonctionnel : (mp3, vidéos, plugins Firefox, P2P)

Pour les amateurs d'Ubuntu qui

  • veulent l'installer pour la première fois
  • le réinstallent régulièrement
  • l'installent à tout va sur tous les pc qu'ils trouvent

Keyes a écrit Easy Ubuntu qui permet d'installer tout ce qui manque au premier lancement d'Ubuntu...

  • dépots supplémentaires (de nombreux logiciels deviennent ainsi installables facilement)
  • multimedia (mp3, divx...)
  • plugins firefox (flash, java, videos...)
  • gestion des archives rar et ace
  • amule et skipe

Retrouvez la dernière version (2.2 beta actuellement) sur http://placelibre.ath.cx/keyes/downloads/