Subversion : ajouter et mettre à jour un plugin WordPress sur le dépôt officiel photo

Subversion : ajouter et mettre à jour un plugin WordPress sur le dépôt officiel

wordpress-svn-logo

De temps en temps, je mets mes plugins WordPress sur le dépôt officiel mais j’utilise assez rarement subversion – connu également sous le doux nom svn – et j’ai tendance à en oublier la syntaxe.

Voici donc un petit aide-mémoire pour l’utilisation de subversion avec les plugins WordPress.

Ajouter un plugin sur le dépôt officiel WordPress

1. On crée un répertoire local sur notre machine pour y accueillir notre projet:

mkdir my-local-dir

2. On synchronise le dépôt avec un check-out en donnant le slug du plugin:

svn co https://plugins.svn.wordpress.org/your-plugin-name my-local-dirCode language: JavaScript (javascript)

Résultat:

> A	my-local-dir/trunk
> A	my-local-dir/branches
> A	my-local-dir/tags
> Checked out revision 1135625.

Subversion vient d’ajouter ( “A” signifie “add” ) tous les répertoires du dépôt central à notre copie locale.

3. On copie tous les fichiers du plugin dans le répertoire trunk/:

cd my-local-dir/
my-local-dir/$ cp ~/my-plugin.php trunk/my-plugin.php
my-local-dir/$ cp ~/readme.txt trunk/readme.txtCode language: JavaScript (javascript)

4. On prépare l’ajout des fichiers du plugin au dépôt central:

my-local-dir/$ svn add trunk/* assets/*
> A	trunk/my-plugin.php
> A	trunk/readme.txtCode language: PHP (php)

5. On donne un message à notre check-in et on envoie les fichiers au dépôt central :

my-local-dir/$ svn ci -m 'Adding first version of my plugin'
> Adding	trunk/my-plugin.php
> Adding	trunk/readme.txt
> Transmitting file data .
> Committed revision 1135626.
Code language: JavaScript (javascript)

Voilà, vous venez d’ajouter votre plugin au dépôt officiel de WordPress !

Supprimer un fichier sur le dépôt

Pour supprimer un fichier sur le dépôt, il faut supprimer le fichier avec svn delete puis commettre les changements avec svn commit. C’est lors du commit que le fichier est supprimé du dépôt :

svn delete myfile
> D         myfile

svn commit -m "Deleted file 'myfile'."
> Deleting       myfile
> Transmitting file data .
> Committed revision 1135629.Code language: JavaScript (javascript)

Lire la suite

Bash : réparer les tables MySQL en cas de crash photo

Bash : convertir une liste de fichiers MP3 en Ogg Vorbis (et vice-versa)

Bash

Pour les besoins du Centre de Kriya Yoga France, j’ai été amené à devoir convertir toute une floppée de fichiers MP3 au format Ogg Vorbis afin qu’il soient lus nativement en HTML5 dans les navigateurs compatibles avec la balise audio.

J’ai utilisé la commande avconv dans un terminal.

Convertir des MP3 en Ogg Vorbis

Voici le script que j’ai écrit pour me simplifier la vie et convertir ma liste de MP3 au format Ogg Vorbis:

for i in *.mp3; do avconv -i $i -codec:a libvorbis -aq 4 ${i/%mp3/ogg}; doneCode language: PHP (php)

Cela recherche tous les fichiers MP3 du répertoire dans lequel on se trouve, utilise le codec libvorbis, encode dans une qualité supérieure ou égale à 128Kbps et nomme le fichier avec la bonne extension (.ogg pour l’Ogg Vorbis).

Convertir des Ogg Vorbis en MP3

Si vous souhaitez convertir des fichiers Ogg Vorbis au format MP3 :

for i in *.ogg; do avconv -i $i -codec:a libmp3lame -aq 2 ${i/%ogg/mp3}; doneCode language: PHP (php)

Cela recherche tous les fichiers OGG du répertoire dans lequel on se trouve, utilise le codec libmp3lame, encode dans une qualité supérieure ou égale à 192Kbps et nomme le fichier avec la bonne extension (.mp3).

Lire la suite

debian-8-jessie

Serveur dédié : la mise à jour vers Debian 8 Jessie

Hier soir, j’ai mis à jour le serveur : nous passons de Debian 7.8 (wheezy) à 8.0 (jessie).

Tout s’est plutôt bien passé, il y a eu environ 10 minutes de downtime, le temps que je comprenne ce qui avait changé, notamment dans la configuration Apache et celle de Postfix.

Voici un petit compte-rendu de la mise à jour.

Mise à jour des dépôts

On édite notre fichier source APT :

nano /etc/apt/sources.listCode language: PHP (php)

et on remplace toutes les occurences de wheezy par jessie.

Chez moi, cela donne :

# DEBIAN
deb http://mirror.ovh.net/debian/ stable main contrib non-free
deb-src http://mirror.ovh.net/debian/ stable main contrib non-free

deb http://security.debian.org/ stable/updates main contrib non-free
deb-src http://security.debian.org/ stable/updates main contrib non-free

# mod security
deb http://ftp.debian.org/debian/ jessie-backports mainCode language: PHP (php)

Préparation à la mise à jour de Debian

J’ai commencé par vérifier qu’aucun paquet n’était à moitié installé :

dpkg --audit

ou en attente :

dpkg --get-selections | grep 'holdCode language: JavaScript (javascript)

Rien? Tout va bien, on continue et on simule une installation avec :

apt-get -o APT::Get::Trivial-Only=true dist-upgradeCode language: PHP (php)

Le résultat est une longue liste de paquets, suivie du message suivant:

439 upgraded, 192 newly installed, 5 to remove and 1 not upgraded.
Need to get 275 MB of archives.
After this operation, 259 MB of additional disk space will be used.
E: Trivial Only specified but this is not a trivial operation.Code language: JavaScript (javascript)

Nos sauvegardes sont faites, on se lance.

Mise à jour Debian

On rafraichit les dépôts et on lance l’installation:

apt-get update && apt-get upgradeCode language: JavaScript (javascript)

On obtient un laïus avec ce qui change. J’aperçois plusieurs pages sur Apache, on y reviendra. Cela dure à peu près une dizaine de minutes, bien que je n’ai pas vraiment minuté.

Une fois l’installation terminée, on résout les dépendances et les paquets manquants avec :

apt-get dist-upgradeCode language: JavaScript (javascript)

Je lance le site pour voir : paf, erreur 403.

Lire la suite

HPLIP : résoudre l'erreur "no system tray detected on this system" photo

HPLIP : résoudre l’erreur “no system tray detected on this system”

Lors du démarrage de ma machine, sous Ubuntu, il n’est pas rare que j’obtienne le message d’erreur “no system tray detected on this system”. Le message exact se présente sous cette forme :

hplip-no-system-tray

Voici comment remédier à ce problème en quelques secondes.

HPLIP et la barre des tâches

HPLIP est le petit gestionnaire d’imprimante HP qui se loge dans la barre des tâches et permet d’avoir un accès rapide aux options de l’imprimante.

Si le chargement du système n’est pas assez rapide et qu’HPLIP se lance avant que la barre des tâches n’ait été créé, le message s’affiche.

Ajout d’un délai pour charger HPLIP

Ma solution est toute simple : il suffit de retarder le chargement d’HPLIP. Pour cela, direction Applications > Outils système > Préférences > Applications au démarrage.

Sélectionnez ensuite HP System Tray Service puis cliquez sur le bouton modifier.

Remplacez la commande d’origine (hp-systray -x) par:

sh -c "sleep 45; exec hp-systray"Code language: JavaScript (javascript)

Voici ce que cela donne en image:

hplip-delayed

Et voilà, problème réglé.

Raspberry Pi: copier une image disque sur une carte SD photo

Raspberry Pi: copier une image disque sur une carte SD

rpi-sd

Dans le cadre de nos petits projets de domotique, Jac s’est dernièrement intéressé à Calaos, à installer sur un Raspberry Pi.

Calaos permet de créer une box domotique en utilisant un simple Raspberry Pi, ce qui peut-être une alternative économique aux box que l’on peut trouver dans le commerce.

Dans ce tutoriel, nous allons voir comment copier une image disque sur une carte SD, en prenant Calaos comme exemple mais le principe est le même pour n’importe quelle image ou distribution.

Téléchargement de Calaos

Calaos est disponible depuis le site officiel. Il suffit de télécharger le dernier fichier rpi-sdimg en date.

Copie de l’image disque sur une carte SD vierge

Il convient tout d’abord de copier l’image sur la carte SD mais il faut que celle-ci soit vierge et fraichement formatée, histoire d’éviter tout potentiel conflit ultérieur.

Formatage de la carte SD

Pour formater une carte SD, je lance Gparted et je formate la carte (vérifiez d’abord que vous avez bien sélectionné la carte SD) au format FAT32.

Démontage de la carte

Avant de lancer le processus de copie, il faut s’assurer que la carte SD n’est pas montée sur le système, grâce à la commande mount :

mount

Résultat:

sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=218592,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=207248k,mode=755)
/dev/disk/by-uuid/32a56ab1-1849-49af-a77e-369a8017c22c on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=1037600k)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
/dev/sda3 on /home type ext4 (rw,relatime,errors=remount-ro,data=ordered)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,nosuid,nodev,noexec,relatime)
none on /sys/fs/cgroup type tmpfs (rw,relatime,size=4k,mode=755)
systemd on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,name=systemd)
cgroup on /dev/cgroup/cpu type cgroup (rw,relatime,cpu,release_agent=/usr/local/sbin/cgroup_clean)
/dev/mmcblk0p1 on /media/matt/982C-483D type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0077,codepage=437,iocharset=utf8,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)Code language: JavaScript (javascript)

La dernière ligne, qui commence par /dev/mmcblk0p1, nous indique que la carte est montée sur notre système. Nous la démontons donc:

umount /dev/mmcblk0p1

Copie de l’image disque

L’image disque ne peut être copiée comme un simple fichier sur la carte SD. C’est comme une image disque que l’on grave : on doit monter un système de fichiers et copier toute une arborescence bien définie.

Heureusement, il existe une commande qui fait tout cela en une seule ligne, la commande dd:

dd if=calaos-image-raspberrypi-v2.0-20150215122010.rootfs.rpi-sdimg of=/dev/mmcblk0Code language: JavaScript (javascript)

Résultat:

540672+0 enregistrements lus
540672+0 enregistrements écrits
276824064 octets (277 MB) copiés, 129,386 s, 2,1 MB/s

Et voilà, l’image de CalaOS est maintenant copiée comme il faut sur notre carte SD.

Bash : réparer les tables MySQL en cas de crash photo

Bash : message “there are stopped jobs” à la fermeture du terminal

Bash

Ce week-end, j’effectue quelques petites modifications sur les fichiers du serveur et, voulant annuler une faute de frappe, j’effectue un Ctrl + Z, par habitude.

Ma fenêtre d’édition du fichier se ferme. Surpris, je la rouvre puis continue mon travail. Au moment de fermer ma session SSH, lors du traditionnel exit, j’obtiens ce message :

logout
There are stopped jobs.

Et là, pas moyen de quitter la session proprement. Cela est dû à ce fameux Ctrl + Z.

Bash et les tâches de fond

Dans Bash, un “stopped job” est une tâche qui a été reléguée temporairement en tâche de fond. Elle n’est pas active mais continue de consommer des ressources comme la mémoire système.

Cette tâche n’étant pas attachée à notre fenêtre de terminal, elle n’envoie rien en sortie et ne reçoit rien en entrée de la part de l’utilisateur.

Reprendre la main sur le shell

Pour savoir quelles sont les tâches de fond en cours sur le système, il suffit de taper la commande jobs:

jobs

Cela liste toutes les tâches reléguées au second plan.

Ensuite, il suffit de taper la commande fg (foreground) pour basculer la tâche de fond vers notre fenêtre active. Si nous voulons basculer vers la première tâche, nous entrons :

fg 1

Il suffit alors de quitter proprement la tâche pour pouvoir ensuite fermer notre session.

vlc-son-coupe

Linux : corriger le son saccadé sous VLC lors de la lecture de fichiers audio

logo-vlc

Aujourd’hui, sur ma machine tournant sous Ubuntu, je me suis aperçu qu’il m’était impossible de lire de la musique avec VLC : le son de mes fichiers était saccadé, coupant l’écoute toutes les deux secondes avant de s’éteindre complètement.

Le module de sortie audio de VLC

Si cela vous arrive, et avant d’appeler le marabout, voici une solution pour remédier ce problème:

  1. Ouvrez VLC > Outils > Préférences
  2. Sélectionnez ensuite Audio > Sortie
  3. Changez maintenant le module de sortie pour Automatique, Pseudo-sortie audio, désactivé.
  4. Validez et enregistrez les réglages de VLC.

En images

Voici une capture d’écran du réglage à modifier :

vlc-son-coupe

N’hésitez pas à essayer plusieurs modules de sortie – chez moi, cela a réglé le problème immédiatement.

opera-developer

Linux : installer le plugin Flash sous Opera Developer

opera-developer

Après avoir mis à jour Ubuntu récemment, j’ai testé la nouvelle version d’Opera : Opera Developer qui s’adresse aux développeurs web.

Si vous recherchez un navigateur ultra-rapide, essayez-le ! Je m’en sers comme navigateur d’appoint et il est vraiment plus rapide que la version classique d’Opera.

Seul hic : Flash n’était pas activé par défaut donc il faut faire une petite manipulation qui prend 15 secondes montre en main. Ceci-dit, on avait eu le même problème pour installer Flash sous Chromium.

Ce tutoriel permet donc ‘installer Flash rapidement sous Opera Developer en utilisant PepperFlash et FFmpeg sous Ubuntu et Linux Mint.

Installation de PepperFlash

Sous Mint et Ubuntu, il suffit d’installer le paquet pepperflashplugin-nonfree pour installer Pepper Flash :

sudo apt-get install pepperflashplugin-nonfreeCode language: JavaScript (javascript)

Une fois le paquet installé, il suffit de relancer le navigateur.

Lire la suite

Installer Wine sous Ubuntu 14.04 LTS Trusty Tahr photo

Installer Wine sous Ubuntu 14.04 LTS Trusty Tahr

Après installation d’Ubuntu 14.04 (Trusty), je me rappelle que wine a été supprimé du système lors de la mise à jour d’Ubuntu.

Qu’à cela ne tienne, on va le réinstaller.

Ajouter le PPA ubuntu-wine

En deux lignes, on ajoute le PPA et on installe wine1.7 :

sudo add-apt-repository ppa:ubuntu-wine/ppa -y && sudo apt-get update
sudo apt-get install wine1.7Code language: JavaScript (javascript)

A ce stade, wine aurait dû s’installer normalement. Mais pas chez moi, non.

Lire la suite

MySQL : résoudre l'erreur "mysql_connect(): Headers and client library minor version mismatch" photo

MySQL : résoudre l’erreur “mysql_connect(): Headers and client library minor version mismatch”

Après la mise à jour vers MySQL 5.6, certaines applications peuvent renvoyer l’avertissement PHP suivant :

PHP Warning: mysql_connect(): Headers and client library minor version mismatch. Headers:50535 Library:50617Code language: CSS (css)
icon-mysql

C’est le cas lorsqu’une application est liée à l’utilisation d’une version spécifique de libmysqlclient18 alors qu’elle est connectée à un serveur MySQL qui tourne sur une version différente.

C’est libmysqlclient18 qui renvoie cet avertissement mais dans certains cas, cela peut impacter l’application et tient plus de l’erreur que de l’avertissement.

MySQL Native Driver

La solution est toute simple : il suffit d’utiliser le pilote MySQL Native Driver php5-mysqlnd au lieu du paquet php5-mysql.

Les avantages de php5-mysqlnd sont multiples : il vient en remplacement de php5-mysql, n’est pas lié à la librairie libmysqlclient, ne renvoie pas d’avertissement “version mismatch” et possède pas mal d’autres caractéristiques intéressantes.

Lire la suite

Ubuntu : installer Pepper Flash sous Chromium pour lire les vidéos Flash photo

Ubuntu : installer Pepper Flash sous Chromium pour lire les vidéos Flash

Suite à une mise à jour de Chromium, il y a quelques années, j’ai perdu la possibilité de lire les vidéos flash sous Chromium. Bon, étant utilisateur de FireFox, je ne trouvais pas vraiment cela gênant, sauf pour les vidéos YouTube et Dailymotion.

Et puis aujourd’hui, cela m’a un peu agacé alors je me suis un peu penché sur le problème.

Pepper Flash et Chromium

Si on utilise Chrome, pas de souci, le plugin Pepper Flash comme le lecteur PDF natif sont inclus. Si on utilise Chromium par contre, le navigateur est nu et il faut installer Pepper Flash soi-même.

Installer Pepper Flash sous Chromium avec Ubuntu

Si vous possédez Ubuntu 14.04+, un installeur Pepper Flash Player installer est disponible dans les dépôts, il suffit de l’installer avec :

sudo apt-get install pepperflashplugin-nonfree && sudo update-pepperflashplugin-nonfree --installCode language: JavaScript (javascript)

Lire la suite

Ubuntu logo within an update icon

Ubuntu : résoudre l’erreur “xulrunner-bin: error while loading shared libraries: libhunspell-1.2.so.0”

ubuntu-update

Aujourd’hui, j’ai mis à jour mon installation d’Ubuntu 12.04 LTS (precise) vers la version 14.04 LTS (trusty).

Vu qu’il y a quelques années entre les deux distributions, cela a pris quelques heures mais je trouve le système beaucoup plus réactif. J’ai quand même eu une petite erreur, histoire de justifier cet article.

Problème de dépendances avec le paquet xulrunner

Après l’installation, le nettoyage des paquets obsolètes et un petit redémarrage, apt-get m’a indiqué qu’il y avait un problème de dépendance avec ce message d’erreur :

/var/lib/dpkg/info/xulrunner-1.9.2.prerm: 8: /var/lib/dpkg/info/xulrunner-1.9.2.prerm: /usr/sbin/update-alternatives: not found
/usr/lib/xulrunner-1.9.2.9/xulrunner-bin: error while loading shared libraries: libhunspell-1.2.so.0: cannot open shared object file: No such file or directory
dpkg: error processing xulrunner-1.9.2 (--configure):
 subprocess installed post-installation script returned error exit status 127
Errors were encountered while processing:
 xulrunner-1.9.2
E: Sub-process /usr/bin/dpkg returned an error code (1)Code language: JavaScript (javascript)

Après avoir essayé de réinstaller et supprimer libhunspell et xulrunner sans succès, je me suis dit qu’il fallait passer à autre chose.

La solution : éditer le fichier xulrunner-1.9.2.prerm

En suivant à tâtons les liens du message d’erreur, il se trouve qu’il suffit d’éditer le fichier /var/lib/dpkg/info/xulrunner-1.9.2.prerm pour corriger le problème.

Lire la suite