Comme ça doit bien arriver un jour ou l’autre, je me suis retrouvé avec un / quasi plein sur une Debian. Après les classiques aptitude clean, suppression des vieux noyaux, etc… il faut bien s’attaquer au répertoire qui prend la plupart de la place, c’est à dire /usr.
Comme j’ai l’habitude d’installer et peu de tout et de n’importe quoi pour découvrir, et de ne surtout rien désinstaller, je me retrouve vite avec une quantité de paquets inutiles. Pour m’aider à nettoyer tout ce bazar, j’ai fais un mini script qui affiche de manière triée la liste des paquets Debian avec leur taille.
Le voici :
1 2 3 4 5 6 | #!/bin/bash dpkg --get-selections |cut -f1 |while read package do dpkg -p $package |perl -ne "print \"\$1: $package\n\" if /^Installed-Size: (.*)$/" done |sort -rn |
Et voici le résultat (la taille est en ko bien sûr) :
romain@heimdall:~$ bash package-size.sh |head 84496: mysql-server-5.0 78328: linux-image-2.6.26-2-amd64 33904: apcupsd-doc 31780: erlang-nox 22812: vim-runtime 21440: linux-headers-2.6.26-2-common 19364: mysql-client-5.0 18880: smbclient 18304: perl 15934: libgtk2.0-common
romain@heimdall:~$ bash package-size.sh |wc -l 1432
Utiliser AWStats sans CGI
AWStats est un générateur de statistiques, le plus souvent utilisé pour générer des stats sur des serveurs web (il peut aussi être utilisé pour des serveurs mail, ftp…). C’est une appli en Perl, qui peut donc être appelé par le serveur web via CGI pour générer les pages HTML.
Sur Apache ou Lighttpd ça marche sans problème, mais sur un serveur web qui ne supporte pas CGI (NginX par exemple, à moins de passer par des hacks assez tordus) ça ne marche plus.
La solution est donc de dire à AWStats de générer les page HTML automatiquement après chaque mise à jour de sa base de données. Voici la procédure :
- Créez tout d’abord le répertoire qui contiendra les pages HTML, avec les bons droits :
mkdir /var/www/awstats/ chown www-data:www-data /var/www/awstats/
- Modifiez ensuite le fichier /etc/cron.d/awstats pour appelez le script awstats_buildstaticpages.pl au lieu de awstats.pl :
1 2 3 4
[ -x /usr/share/doc/awstats/examples/awstats_buildstaticpages.pl \ -a -f /etc/awstats/awstats.yoursite.conf -a -r /var/log/nginx/yoursite.access.log ] \ && perl /usr/share/doc/awstats/examples/awstats_buildstaticpages.pl -update \ -config=yoursite -dir=/var/www/awstats -awstatsprog=/usr/lib/cgi-bin/awstats.pl >/dev/null
À adapter bien sûr avec les bons noms de fichiers de conf et de log.
- N’oubliez pas d’ajouter un alias dans la conf de votre serveur web pour les icônes. Sous NginX, ça donne ça :
1 2 3
location /awstats-icon/ { alias /usr/share/awstats/icon/; }
Utiliser la fonction PHP imagerotate() sous Debian
imagerotate est une fonction PHP qui, comme son nom l’indique, permet de tourner une image selon un angle. Cependant elle n’est disponible que si PHP a été compilé avec la version embarqué de la bibliothèque GD.
Sous Debian ce n’est pas le cas, car cette version est difficilement maintenable au niveau sécurité (cf le bug report Debian)
Pour contourner le problème, en cherchant un peu sur le net (ici pa exemple), beaucoup de monde recompile PHP avec la version embarqué de GD. Ce n’est à mon avis pas la meilleure solution au niveau « maintenabilité ».
Voici donc 2 autres possibilités :
Utiliser les dépôts dotdeb
Les dépôts dotdeb contiennent des versions plus récentes et/ou modifiés de paquets Debian pour serveurs LAMP. Le paquet php5 présent dans dotdeb est justement compilé avec la version embarqué de la bibliothèque.
Réécrire la fonction imagerotate()
Si vous n’avez besoin que de cette fonction et que vous n’avez pas envi d’utiliser la version embarqué de GD, il est tout à fait envisageable de réécrire la fonction en question :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php if ( !function_exists( 'imagerotate' ) ) { function imagerotate( $source_image, $angle, $bgd_color ) { $angle = 360-$angle; // GD rotates CCW, imagick rotates CW $temp_src = '/tmp/temp_src_'. rand( 10000,99999 ) .'.jpg'; $temp_dst = '/tmp/temp_dst_'. rand( 10000,99999 ) .'.jpg'; if (!imagejpeg($source_image,$temp_src)){ return false; } $imagick = new Imagick(); $imagick->readImage($temp_src); $imagick->rotateImage(new ImagickPixel($bgd_color?$bgd_color:'black'), $angle); $imagick->writeImage($temp_dst); //trigger_error( 'imagerotate(): could not write to ' . $file1 . ', original image returned', E_USER_WARNING ); $result = imagecreatefromjpeg($temp_dst); unlink($temp_dst); unlink($temp_src); return $result; } } ?> |
Bloguez vos articles WordPress depuis Vim
BlogIt est un plugin Vim écrit en python, qui permet, via le protocole xmlrpc, d’interagir avec votre WordPress. Les avantages sont bien sûr de pouvoir bénéficier de toutes les commandes Vim lors de l’écriture d’un article, avec la coloration html par exemple, mais aussi de pouvoir préparer son article hors-ligne et de le commiter plus tard.
Fonctionnalités
- Création/édition/suppression/listage des articles et pages ;
- Prévisualisation hors-ligne de l’article dans un navigateur ;
- Publication/retrait d’un article ;
- En-tête de l’article (un peu comme pour les mails) permettant de définir le titre, les tags et catégories…
- Des hooks blogit_format et blogit_unformat, appelés respectivement juste avant un commit et juste après un edit, permettant de formater/déformater le texte avec des langages comme markdown, textile, reStructuredText… à l’aide de pandoc.
Installation
Je reprend un peu la procédure du wiki, mais traduite en français ici.
Tout d’abord, il vous faut un Vim compilé avec le support de python (rarement le cas par défaut) :
vim --version |grep python
Sous ArchLinux, il faut installer le paquet gvim, et sous Debian et dérivées, il s’agit du paquet vim-python (qui installera vim-gtk).
Vous pouvez ensuite récupérer l’archive et la décompresser dans votre ~/.vim/.
Il faut maintenant créer le fichier ~/.vim/passwords.vim qui contiendra les informations de connexion à votre blog :
1 2 3 | let blogit_username='Your blog user name' let blogit_password='Your blog password. Not the API-key.' let blogit_url='https://example.com/xmlrpc.php' |
Au passage, un chmod 600 sur ce fichier ne sera pas de trop…
Utilisation
Le script s’appelle via :Blogit. Un :Blogit help vous renverra la liste des commandes possibles :
Available commands:
:Blogit ls [blog] list all posts
:Blogit new [blog] create a new post
:Blogit this [blog] make this a blog post
:Blogit edit {id} [blog] edit a post
:Blogit page {id} [blog] edit a page
:Blogit commit save article
:Blogit push publish article
:Blogit unpush unpublish article (save as draft)
:Blogit rm {id} remove a post
:Blogit tags update and list tags and categories
:Blogit preview preview article in browser
:Blogit help display this notice
Je ne détaille pas plus, les commandes sont assez explicite selon moi.
Bonus
Vous voudriez surement rajouter des options automatiquement lors de l’édition des articles
(par exemple set spell pour la correction orthographique). Dans ce cas, il faut les
définir dans la méthode python init_vim_buffer() de la classe BlogPost du
plugin (attention à le faire dans la bonne classe, il y en a plusieurs), comme ceci :
vim.command('setlocal spell tw=80')
De même, il peut être sympa d’affecter une touche à la commande :Blogit commit, à l’aide de map :
vim.command('map <f9> :Blogit commit <CR>')
Article fièrement écrit avec Vim
.


