Mot-clé - Tips

Fil des billets

lundi 22 décembre 2014

Upgrade sans filet !

logo openSUSE

Dans ce billet, je vais vous expliquer la procédure, que j'ai suivi pour mettre à jour (rapidement, et donc sans sauvegarde) mon système Linux (openSUSE).

Ceci a été décidé sur un coup de tête. Après un n-ième ras-le-bol suite à une mise à jour de sécurité, m'obligeant à démarrer uniquement en mode « dégradé » [1].

Note

[1] La mise à jour de sécurité n'a pourtant pas impacté la gestion de la carte graphique.

Lire la suite...

dimanche 30 novembre 2014

Corriger les messages, dead-... is undefined sous emacs

Depuis quelques versions sous emacs, je n'arrive plus à écrire certains accents (^ et ¨).

Quand je tape par exemple ë, emacs m'affiche ce message, dead-diaeresis is undefined [1]

J'ai remarqué, que cela arrivé uniquement lorsque mes locales étaient configurées pour l'ISO.

Au détours d'un lien, je suis tombé sur la solution, il suffit de rajouter cette ligne dans son fichier de configuration.

[...]

(load-library "iso-transl")

[...]

Note

[1] Ou, ê, dead-circumflex is undefined.

samedi 16 mars 2013

Le pattern-matching dans Bash

En faisant la mise à jour de Dotclear, via les patches, j'ai oublié de préciser qu'il fallait omettre le dossier parent. Je me suis donc retrouvé avec des fichier portant l'extension .rej.

assoavignu@pastis $ for file in `find . -type f -name '*.rej'`; do echo ${file}; done
./blogs.php.rej
./blog_theme.php.rej
./comment.php.rej
./categories.php.rej
./category.php.rej
./comments_actions.php.rej
./comments.php.rej
./blog_pref.php.rej

Pour retrouver leurs extensions d'origine (.php), une simple boucle suffit :

assoavignu@pastis $ for file in `find . -type f -name '*.rej'`; do mv ${file} ${file%.*}; done

Je ne suis pas certain que la « syntaxe » ${variable%.*} fonctionne avec tous les shells.

mercredi 13 février 2013

Transformer des dates avec le module python-dateutil

Récemment, j'ai eu besoin de transformer des dates écrites dans ce format : Wed, 13 Feb 2013 05:34:15 +0100 en quelque chose de plus « normé », ISO 8601.

Lire la suite...

lundi 3 décembre 2012

« Node remains in conflict » avec SVN

J'ai eu ce message lorsque j'ai voulu mettre à jour l'arbre des ports (FreeBSD) sur une machine de test. Il faut dire que j'utilise mes propres ports, ceux en provenance du dépôt MarcusCom, ainsi que l'arbre officiel.

Déjà je ne me souvenais plus du miroir que j'avais choisi.

judas c'est svn0.us-west.FreeBSD.org

Donc pour résoudre ce problème il faut exécuter la commande suivante sur un dossier ou fichier (c'est précisé dans le log).

Par exemple si le dossier x11/ est « corrompu ».

root@judas:/usr/ports # svn resolved x11/

Suivi de la mise à jour

root@judas:/usr/ports # svn checkout svn://svn0.us-west.freebsd.org/ports/head .

Oui je suis la brance principale, celle constamment mise à jour.

mardi 22 mai 2012

Migration vers FreeBSD 9 enfin terminée

logo FreeBSD

Ce week-end, j'ai décidé de migrer sous la branche releng/9.0 [1] mon laptop. Il fonctionnait auparavant sur la branche releng/8.2 [2].

Il faut dire, que ça me titiller depuis un moment, car je n'étais pas satisfait du partitionnement actuel (absence de répertoire /tmp en RAM), locales toutes en latin9 (je migre de plus en plus vers l'UTF-8). J'en ai profité pour repartir complètement de zéro.

Le partitionnement a bien changé depuis ma dernière installation (à partir d'un CD), qui remonte à la version 6.0. Résultat, au redémarrage l'ordinateur est dans les choux. Je reboote avec le disque d'installation, et recommence l'installation, là l'installateur me sort une erreur, m'indiquant que la partition /dev/ada0p2 est introuvable !!! C'est ma partition racine.

Le lendemain, je recommence, avec cette fois-ci la dernière version de la branche RELENG_7 (7.4). Aucun soucis, car il s'agit de l'ancien installeur (sysinstall). Je migre ensuite vers releng/8.3, je redémarre, l'ordinateur est « planté », j'ai un prompt pour m'aider à booter sur la bonne partition. C'est encore une fois un nouvel échec.

Aujourd'hui, j'ai décidé de prendre le taureau par les cornes, et de tenter une nouvelle installation, et apprivoiser bsdinstall, le nouvel assistant du CD d'installation.

Après avoir sélectionné la bonne disposition du clavier, je suis ensuite passé par le shell, afin de voir l'état du disque dur, avec la commande gpart show (j'ai qu'un seul disque, donc ce n'est pas nécessaire de le mentionner).

En voulant supprimer les précédentes partitions, j'ai obtenu le message d'erreur suivant :

# gpart delete -i 4 ada0
gpart: table 'ada0' is corrupt: Operation not permitted

Après quelques recherches, il faut exécuter le mode recover.

# gpart recover ada0
ada0 recovered

Maintenant la suppression des partitions ne pose plus de problème

[...]
# gpart delete -i 3 ada0
ada0p3 deleted
[...]

J'ai également supprimé la table des partitions MBR. J'ai décidé de migrer sous GPT.

# gpart destroy ada0
ada0 destroyed

# gpart create -s GPT ada0

Une vérification que tout s'est bien passé.

# gpart show
=>       34  195371501  ada0  GPT  (93G)
    	 34  195371501        - free -  (93G)

Création de la partition de boot pour l'entête GPT.

# gpart add -t freebsd-boot -l gpboot -s 512K ada0
ada0p1 added

On installe le bootcode.

# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada0
bootcode written to ada0

Ensuite on passe à la création des partitions.

# gpart add -t freebsd-ufs -l root -s 5G ada0
ada0p2 added
# gpart add -t freebsd-swap -l swap -s 1G ada0
ada0p3 added
# gpart add -t freebsd-ufs -l var -s 3G ada0
ada0p4 added
# gpart add -t freebsd-ufs -l usr -s 62G ada0
ada0p5 added
# gpart add -t freebsd-ufs -l home ada0
ada0p6 added

Au final cela donne ça :

# gpart show
=>       34  195371501  ada0  GPT  (93G)
         34       1024     1  freebsd-boot  (512k)
       1058   10485760     2  freebsd-ufs  (5.0G)
   10486818    2097152     3  freebsd-swap  (1.0G)
   12583970    6291456     4  freebsd-ufs  (3.0G)
   18875426  130023424     5  freebsd-ufs  (62G)
  148898850   46472685     6  freebsd-ufs  (22G)

En quittant le shell on retrouve l'assistant pour continuer l'installation.

À la fin, je suis retourné sous le shell (on est directement dans le chroot de notre nouveau système) pour modifier le fichier /etc/fstab et /etc/rc.conf.

Notes

[1] Afin de pouvoir utiliser la dernière version Xorg.

[2] La fin du support des mises à jour de sécurité approchant à grand pas.

mercredi 14 mars 2012

Installation d'une Debian (powerpc) à partir de debootstrap

Logo Debian

Dans cet article, nous allons voir comment installer la distribution Debian à partir de l'utilitaire debootstrap. Pour corser le tout, le partitionnement se fera en LVM.

Les prérequis

  • Un live CD, j'ai choisi Finnix [1]
  • Un ordinateur, (pour cet exercice, ça sera un iBook G4)

Note

[1] C'est beaucoup plus souple, que l'installateur de Debian.

Lire la suite...

mardi 31 janvier 2012

Comment exclure un module avec setuptools ?

Pour ceux ou celles, qui maintiennent (ou on l'intention de créer) des paquets Python pour leur distribution favorite, je vous livre une astuce si vous voulez exclure un, ou plusieurs modules.

Dans mon cas, je ne voulais pas installer le dossier tests/ (il dépend bien souvent de la bibliothèque nose), lors de la création de mon package.

Nous allons utiliser la fonction find_packages() du module setuptools.

Voici ce que nous dit la docstring :

[...]

FUNCTIONS

find_packages(where='.', exclude=()) Return a list all Python packages found within directory 'where'

'where' should be supplied as a "cross-platform" (i.e. URL-style) path; it will be converted to the appropriate local path syntax. 'exclude' is a sequence of package names to exclude; '*' can be used as a wildcard in the names, such that 'foo.*' will exclude all subpackages of 'foo' (but not 'foo' itself).

[...]

La documentation :

[...]

find_packages() takes a source directory, and a list of package names or patterns to exclude. If omitted, the source directory defaults to the same directory as the setup script.

Exclusion patterns are package names, optionally including wildcards.

[...]

Un exemple va nous aider à bien comprendre (on se place dans les « mêmes conditions », qu'au moment de la création d'un paquet) :

olivier@bornem:~ $ tar -xzf /usr/ports/distfiles/waitress-0.8.tar.gz
olivier@bornem:~ $ cd waitress-0.8/
olivier@bornem:~/waitress-0.8 $ python
Python 2.7.2 (default, Jul  4 2011, 20:20:01) 
[GCC 4.2.1 20070719  [FreeBSD]] on freebsd8
Type "help", "copyright", "credits" or "license" for more information.
>>> from setuptools import find_packages
>>> l = find_packages(where='.')
>>> l
['waitress', 'waitress.tests', 'waitress.tests.fixtureapps']
>>> 

on obient une liste, de tous les dossiers contenant un fichier __init__.py.

Si l'on ne souhaite pas installer le répertoire waitress/tests, il faut le mentionner :

>>> l = find_packages(where='.', exclude=['waitress.tests'])
>>> l
['waitress', 'waitress.tests.fixtureapps']
>>> 

waitress/tests/fixtureapps/ est toujours présent (la compilation échouera, car le module tests sera absent). Il faut également le préciser tous les sous-dossiers

>>> l = find_packages(where='.', exclude=['waitress.tests', 'waitress.tests.fixtureapps'])
>>> l
['waitress']
>>> 

On peut utiliser un joker (ou wildcard).

>>> l = find_packages(where='.', exclude=['waitress.test*'])
>>> l
['waitress']
>>> 

Le plus gros du travail est fait, il ne reste plus qu'à rechercher un fichier MANIFEST.in, ou SOURCES.txt, et de supprimer les lignes correspondantes à ce module (on crée alors un patch).

Une dernière chose, la fonction find_packages() se trouve dans le fichier setup.py, on va également le patcher.

lundi 21 novembre 2011

Upgrade openSUSE

logo openSUSE

La dernière version de openSUSE est sortie le 16 novembre. C'est la distribution Linux que j'utilise actuellement sur mon ordinateur principal. J'ai profité de ce week-end pour faire la mise à jour.

Je suis reparti complètement de zéro car :

  • le partitionnement ne me convenait plus
  • j'étais sous GNOME2 (2.32)

Désormais, j'utilise KDE4, et je vais pouvoir me consacrer un peu plus à la création de paquets RPM.

Dans ce billet, je vais présenter, les principales modifications que j'ai apporté, afin d'avoir un système qui me convienne.

Lire la suite...

samedi 5 novembre 2011

Mercurial en tant qu'application WSGI

Logo Mercurial

Aujourd'hui, j'ai soumis un PR (pour FreeBSD), concernant une mise à jour majeur, du gestionnaire de version, Mercurial.

J'en ai profité pour le tester un peu plus en profondeur, notamment, je me suis intéressé au module, hgweb. Il permet d'afficher via une page Web, un dépôt Mercurial.

Lire la suite...

vendredi 28 octobre 2011

Conflits entre paquets dans Arch Linux

Arch Linux logo

Des conflits peuvent intervenir entre des paquets, au sein même, d'un dépôt officiel sous Arch Linux ppc.

Il faut savoir que Arch Linux (i686 et x86_64) est une distribution dite en rolling release, c'est à dire, mise à jour continuellement sans freeze pour la sortie d'une version stable.

Du côté de la version PowerPC, la fréquence des mises à jour, est nettement moins rapide [1]. Donc on pourrait s'attendre à une « cohérence » entre les différents paquets pré-compilés, et bien ce n'est pas forcément le cas, la preuve avec udisks.

Notes

[1] On peut très bien compiler ses propres paquets.

Lire la suite...

mercredi 26 octobre 2011

Configuration de « Music Player Daemon » sous FreeBSD

Ayant vu passer l'annonce d'une mise à jour du client Xfce pour mpd, (Xfmpc), je me suis empressé de le mettre à jour. Or je n'ai jamais utilisé ce démon.

Cette page est donc plus un pense-bête qu'autre chose.

Tout d'abord, on va installer les dépendances nécessaires à Xfmpc :

  • GTK+2
  • Glib2
  • libxfce4ui (sous FreeBSD, ce composant s'appelle libxfce4menu, on le trouve dans l'arborescence à x11/libxfce4menu)
  • libxfce4util
  • libmpd

On peut activer le mode maintainer, il faut pour cela lang/vala.

Sur mon système la dernière bibliothèque (libmpd) est absente, donc je l'installe de cette manière :

root@bornem:/usr/ports/audio/libmpd # make install clean

Cependant il manque le « démon », que l'on devrait trouver dans /usr/local/etc/rc.d/. Il faut pour cela installer audio/musicpd.

root@bornem:/usr/ports/audio/libmpd # cd ../musicpd
root@bornem:/usr/ports/audio/musicpd # make config
root@bornem:/usr/ports/audio/musicpd # make install clean

La commande make config permet d'activer (ou désactiver) certaines options durant la compilation.

Je ne souhaite pas que ce service soit lancé automatiquement au démarrage, donc je ne rajoute rien dans le fichier /etc/rc.conf. Cependant, pour utiliser Xfmpc, il faut le démarrer, nous allons donc copier le fichier de configuration générale (situé dans /usr/local/etc/musicpd.conf) dans le $HOME d'un utilisateur de la machine.

olivier@bornem:~ $ cp /usr/local/etc/musicpd.conf ~/.mpd.conf
olivier@bornem:~ $ ln -sf .mpd.conf .mpdconf

On peut maintenant éditer le fichier de configuration (.mpd.conf). Voici mes modifications :

music_directory   "~/Musique"
playlist_directory    "~/.mpd/playlists"
db_file     "~/.mpd/mpd.db"
log_file      "~/.mpd/mpd.log"
state_file      "~/.mpd/state"
sticker_file      "~/.mpd/sticker.sql"

user        "olivier"

port        "6600"

#
# An example of an OSS output:
# 
audio_output {
  type    "oss"
  name    "ATI IXP 400"
  device    "/dev/dsp"  # optional
##  format    "44100:16:2"  # optional
##  mixer_type      "hardware"  # optional
  mixer_device  "/dev/mixer"  # optional
##  mixer_control "PCM"   # optional
}

La dernière partie correspond à ma carte son, sur cet ordinateur.

On peut maintenant le lancer :

olivier@bornem:~ $ musicpd &

Lorsque l'on lance Xfmpc, il faut sélectionner dans la liste déroulante Base de données (cela correspond aux morceaux situés dans music_directory). Puis cliquer sur l'en deux pour l'ajouter à la liste de lecture.

La lecture se fait en sélectionnant Liste de lecture.

Xfmpc en action

samedi 21 août 2010

Astuces concernant KDE4 sous FreeBSD

Certains le savent peut-être, je suis un inconditionnel du gestionnaire de bureaux Xfce, mais il m'arrive, parfois de voir ailleurs ...

Dans cet article, je vais donc m'intéresser à KDE, et donner quelques astuces pour l'utiliser sous FreeBSD.

Lire la suite...

dimanche 4 juillet 2010

Serveur dédié sous FreeBSD, part. II

Dans un précédent billet, on a vu les principales démarche pour avoir un serveur dédié « aux petits oignons ».

On va s'intéresser, à comment mettre à jour son système (hors ports), lors de la publication d'avis de sécurité, grâce à un outil développé par Colin Percival.

Lire la suite...

Serveur dédié sous FreeBSD, part. I

Depuis environs deux ans, j'expérimente, l'hébergement Web, par la location d'un serveur dédié.

J'ai décidé de changer d'hébergeur, auparavant, j'étais chez BSD Virtual Machines, le service est convenable. On passe commande, le serveur est immédiatement à notre disposition. Cependant on dispose d'aucun « service » en cas d'erreur. C'est pourquoi je me suis tourné vers Digicube.

Le seul problème avec un serveur dédié, c'est qu'il faut bien souvent « repasser » dernière l'installateur automatique. De plus, comme l'on n'a pas accès, physiquement à la machine, la moindre erreur se traduit souvent par une réinstallation.

Celui que j'ai acquit ne déroge pas à la règle.

Lire la suite...

vendredi 19 mars 2010

Ne pas oublier les fondamentaux !!!

Pour le prochain billet, j'étais à la recherche d'un outil permettant de convertir des PDF en image (si possible en PNG). J'étais donc à la recherche d'un « pdf2png », et au détour d'un lien je tombe sur le logiciel ImageMagick. Cela tombe bien, sur chacune de mes machines, je le rajoute quand, il n'est pas présent.

Il s'agit d'un logiciel (s'utilisant en ligne de commande) extrêmement puissant dans la manipulation d'images. Il est tellemenent efficace, qu'on l'utilise généralement à seulement 2% de ces capacités.

Donc pour convertir un PDF en une image PNG, par exemple, il faut utiliser la commande convert.

convert Install_party_2010_VillesSA.pdf install-party.png

Le seul inconvénient, c'est que l'image obtenue fait la même taille (en pixels) que le PDF, or j'aimerais plutôt avoir une vignette. Il faut rajouter l'option -resize à notre précédente commande.

convert Install_party_2010_VillesSA.pdf -quality 90 -resize 55% install-party.png

Remarque : Plus la valeur du pourcentage est petit, plus l'image sera petite.