mai 01 2008

Ajouter des polices de caractères sous GNU/Linux

Tag: Debian GNU/Linux, X Window SystemSylvain @ 18:19

L’opération peut se faire aisément grâce aux interfaces graphiques disponibles dans KDE, Gnome et consors mais en ligne de commande, comment fait-on ?

C’est très simple : si vous souhaitez partager vos nouvelles polices de caractères pour tous les utilisateurs, copiez les dans le répertoire « /usr/share/fonts/truetype/ » en tant que root puis mettez à jour le cache avec la commande fc-cache :

root@gnusquad:~# cp newfont.ttf /usr/share/fonts/truetype/
root@gnusquad:~# fc-cache -fv

Si vous souhaitez rendre disponible ces nouvelles polices uniquement pour un utilisateur donné, copiez les dans le répertoire « ~/.fonts » (créer le s’il n’existe pas) :

user@gnusquad:~$ mkdir .fonts
user@gnusquad:~$ cp newfont.ttf .fonts/
user@gnusquad:~$ fc-cache -fv

mai 01 2008

Modifier le contenu d’une révision dans un référentiel Subversion

Il peut parfois être utile de devoir modifier le contenu d’une révision dans un référentiel Subversion pour supprimer une information qui n’aurait jamais dû s’y trouver comme, par exemple, un mot de passe.

Logiciels utilisés :

  • Subversion 1.4.2
  • GNU Bash 3.1.17
  • GNU Sed 4.1.5

Commençons par créer un référentiel de test nommé « modification_revision » :

root@gnusquad:~# REPOS=/var/local/lib/svn/modification_revision
root@gnusquad:~# svnadmin create $REPOS

Effectuons une copie locale (checkout) de ce référentiel :

root@gnusquad:~# svn co file://$REPOS
Révision 0 extraite.

Ajoutons-y un fichier « exemple » et commitons le dans le référentiel :

root@gnusquad:~# cd modification_revision/
root@gnusquad:~/modification_revision# echo mon_password : gruikgruik > exemple
root@gnusquad:~/modification_revision# svn add exemple
A         exemple
root@gnusquad:~/modification_revision# svn ci -m "ajout d'un fichier"
Ajout          exemple
Transmission des données .
Révision 1 propagée.

Le but, maintenant, est de faire disparaître le mot de passe « gruikgruik » du référentiel afin que personne ne puisse le récupérer.

Commençons par effectuer un dump du référentiel dans le fichier ~/dump_svn :

root@gnusquad:~/modification_revision# cd
root@gnusquad:~# svnadmin dump $REPOS > dump_svn
* Révision 0 déchargée.
* Révision 1 déchargée.

Modifions le mot de passe dans le dump avec sed par exemple en veillant à mettre le même nombre de caractères sinon vous obtiendrez l’erreur suivante par la suite : « svnadmin: Fin prématurée des données dans le flux de sauvegarde » à cause du Content-length de la révision :

root@gnusquad:~# sed -i s/gruikgruik/xxxxxxxxxx/g dump_svn

Supprimons le référentiel et recréons en un vide :

root@gnusquad:~# rm -r $REPOS
root@gnusquad:~# svnadmin create $REPOS

Importons le dump :

root@gnusquad:~# svnadmin load $REPOS < dump_svn
<<< Début d'une nouvelle transaction basée sur la révision 1
     * ajout de : exemple ...
svnadmin: Sommes de contrôle différentes, fichier '/exemple' :
   attendu :  6fe4a181ffeec4b6da1b63d377f14fb4
   obtenu :  def10992a3cb890493d37440f3538fd8

Subversion nous informe que les sommes de contrôle sont différentes ce qui est tout à fait normal vu que l’on a modifié le mot de passe, mettons donc à jour celles-ci :

root@gnusquad:~# sed -i s/6fe4a181ffeec4b6da1b63d377f14fb4/def10992a3cb890493d37440f3538fd8/ dump_svn

Puis pour en finir, réimportons proprement le dump :

root@gnusquad:~# rm -rf $REPOS
root@gnusquad:~# svnadmin create $REPOS
root@gnusquad:~# svnadmin load $REPOS < dump_svn
<<< Début d'une nouvelle transaction basée sur la révision 1
     * ajout de : exemple ... fait.

------- Révision 1 propagée (commit) >>>

Et voilà, notre référentiel ne contient plus de traces du mot de passe « gruikgruik ».


« Page précédente