PHP 7.0 est disponible

Les paquets de la nouvelle version stable de PHP sont maintenant dans les dépôt stables. En plus des nouvelles fonctionnalités, les changements suivants sont appliqués. De manière générale, la configuration des paquets est maintenant plus proche de ce que le projet PHP préconise. Voir aussi le guide migration vers PHP 7.0.

Paquets supprimés

* php-pear
* php-mssql
* php-ldap : Ce module est dorenavant intégré dans le paquet php
* php-mongo : php-mongodb est une alternative, même si non compatible
* php-xcache : Utilisez plutôt php-opcache and optionnellement APCu
* graphivz : Le binding PHP va être supprimé.

Nouveaux paquets

* php-apcu-bc : Installez et activez ce module si les fonctions apc_* sont nécessaires.
* php-mongodb

Changements dans la configurations

* open_basedir n’est plus activé par défaut
* Les extensions openssl, phar et posix sont integrées par défaut
* php-fpm ne fournit plus une configuration logrotate. À la place syslog/journald est utilisé
* Le fichier service de php-fpm n’active plus PrivateTmp=true
* La configuration et le module de php-apache ont été renommés en php7_module.conf et libphp7.so

Article original

Suppression de Plasma 4

Étant donné que KDE 4 Desktop n’est plus maintenu depuis plusieurs mois, et qu’il est de plus en plus difficile de maintenir deux versions de Plasma, nous [NdT: Les développeurs Archlinux] avons décidé de le supprimer de nos dépôts. Plasma 5.5 vient de sortir, et devrait être assez stable pour le remplacer.

Les installations de KDE 4 ne vont pas être automatiquement mises à jour vers Plasma 5.
Cependant, nous recommandons à tous nos utilisateurs de mettre à jour ou de basculer sur une alternative le plus vite possible, étant donné que KDE 4 peut maintenant être cassé sans préavis.

Veuillez suivre le le wiki expliquant la marche à suivre pour mettre à jour vers Plasma 5.

Article Original

Changement de l’ABI C++

Avec GCC 5.x, deux versions de l’ABI sont prises en compte par libstdc++, et nous [NdT: Les developpeurs Archlinux] avons décidés de switcher sur la nouvelle ABI.

Bien que l’ancienne ABI C++ soit toujours disponible, il est recommandé que vous reconstruisiez tous les paquets ne provenants pas des dépots officiels afin de bénéficier de la nouvelle ABI.
Ceci est particulièrement important si ces paquets sont liés à des bibliothèques elles même liées à la nouvelle ABI.

Vous pouvez lister les paquets à reconstruire grâce au script bash suivant (mapfile est une commande « built-in » de bash) :

#!/bin/bash

while read pkg; do
    mapfile -t files < <(pacman -Qlq $pkg | grep -v /$)
    grep -Fq libstdc++.so.6 "${files[@]}" 2>/dev/null && echo $pkg
done < <(pacman -Qmq)

Texte de Allan McRae à ce sujet : lien

Article original

Xorg 1.18.0 est introduit dans [testing]

Xorg 1.18.0 est entré dans [testing] avec les modifications suivantes:

  • Vous pouvez maintenant choisir entre xf86-input-evdev et xf86-input-libinput.
  • xf86-input-aiptek ne sera pas mis à jour et sera supprimé lorsque xorg-1.18.0 sera déplacé vers [extra].

Avertissement:

Les pilotes NVIDIA ne sont pas encore compatibles avec Xorg 1.18.0. Vous pouvez bloquer la mise à jour en ajoutant --ignoregroup = xorg à la commande pacman ou en ajoutant ‘xorg‘ à IgnoreGroup dans pacman.conf.

Article original

Compte rendu du Meetup ArchLinux France du 10 Nov. 2015

Ce 10 Novembre 2015 a eu lieu le second meetup ArchLinux France, chez BlaBlaCar à Paris ! Pour rappel le premier Meetup avait eu lieu en Octobre 2014. Pour cette nouvelle édition, il y avait 5 présentations, et près de 70 personnes ! (vous pouvez retrouver le programme sur meetup).

Voici la liste des présentations et leurs slides (update: elles sont maintenant toutes disponibles !) :

J'ai pour ma part parlé de Yaourt, son histoire, son développement, ses features. Si vous souhaitez participer, n'hésitez pas à vous rendre sur le github du projet :)

Mes slides ci dessous :

Et quelques photos, tirées du 'Live Tweet' de @archlinuxfr :

Encore merci aux talkers, à tous ceux présents, et à BlaBlaCar (et Puckel_) pour le sponsoring de la salle et la collation !

Meetup Archlinux France à Paris le 10 Novembre chez BlaBlaCar

Un nouveau meetup Archlinux France est organisé à Paris le mardi 10 Novembre 2015, un an après le premier :) !

Pour ce second meetup, nous serons généreusement accueilli par BlaBlaCar !

Au programme, 5 présentations (rien que ça !) :

• Arch Linux Security Team Genesis (RbN)
• Arch Linux Security Projects (Remi Gacogne)
• Vous reprendrez bien un peu de yaourt? (Skunnyk)
• Ansible 101 (Julien Girardin)
• Arch Linux Archive / agetpkg (Sebastien Luttringer)

Toutes les informations sur le groupe Archlinux-France de Meetup !

Note: Nous sommes toujours à la recherche d’un sponsor boissons/nourriture !

Venez en parler sur le forum.

D-Bus lance dorénavant les bus utilisateurs

Les paquets systemd 226-1 et dbus 1.10.0-3 lancent désormais dbus-daemon une fois par utilisateur; toutes les sessions d’un utilisateur partageront la même «session» D-Bus. Le module pam_systemd s’assure que le DBUS_SESSION_BUS_ADDRESS correct est déterminé à la connexion.

Cela permet également à dbus-daemon de déléguer à systemd pour l’activation au lieu de multiplier les processus serveurs lui-même. Toutefois, actuellement, ce n’est pas couramment utilisé pour les services de session (par opposition aux services du système).

kdbus supportera uniquement ce modèle, donc ce sera aussi l’occasion d’aplanir quelques bugs et de réaliser plus facilement une transition future vers les bus du kernel. Veuillez-nous (NdT: développeurs d’Arch) faire connaître tous problèmes rencontrés.

Article original

Transférer et géolocaliser mes photos : un petit script

En matière de classement des photos, comme dans bien d'autres domaines, j'ai le sentiment de ramer à contre courant. L'heure est à l'utilisation de logiciels graphiques sophistiqués, prenant en charge depuis l'insertion de la carte SD (ou la connexion de l'APN) jusqu'au téléversement sur l'album en ligne. Digikam fait, paraît-il, cela très bien, mais je le trouve trop lourd et d'un emploi mal aisé. Je fondais quelques espoir sur oqapy, malheureusement je ne le trouve plus sur les dépôts Archlinux, même pas dans AUR... J'aime assez gthumb mais il ne sait pas faire tout ça.

Bref, je continue à travailler à la mimine selon un processus bien établi :

  • Créer un répertoire au nom significatif tant du point de vue chronologique que géographique (aaaammjj_Localisation)
  • Y copier les fichiers JPG et les renommer selon un shéma analogue (aaaammjj_hhmmss_Localisation_NomOriginel.JPG)
  • Y copier le ou les éventuel(s) fichiers gpx associés et géolocaliser les images
  • Sélectionner, recadrer et éventuellement retoucher les meilleurs clichés avant de les transférer vers notre album Piwigo

Pour renommer les photos j'utilise exiv2 de la manière suivante :

exiv2 -r %Y%m%d_%H%M%S_Localisation_:basename: mv *.JPG

Pour géolocaliser j’utilise Gpscorrelate, que j'ai présenté ici, qui est malheureusement abandonné par son créateur mais a l'avantage de disposer à la fois d'une version graphique et d'une version en ligne de commande.

gpscorrelate -g monFichierTrace.gpx -z [valeur] *.JPG

La valeur à associer à l'option -z est le décalage du fuseau horaire, par exemple +1:00 pour l’heure normale d’Europe centrale (CET : Paris, Bruxelles, Genève…) et +2:00 pour l’heure d’été d’Europe centrale (CEST). Ceci dans la mesure ou l’horodatage des photos est faite en heure locale et celle du GPS en UTC, ce qui est en principe le cas. Il y a d'autres options possible, voir la  documentation.

Bon, ce n'est pas trop compliqué, mais il faut se souvenir des options, tout ça.... Pourquoi ne pas automatiser le processus dans un petit script ?

#! /bin/bash 

#######################
##     photoman      ##
## interface à exiv2 ##
## et à gpscorrelate ##
#######################


declare -i nbRep=0
declare -i nbPhotos=0
declare -A DateTab

# chemin du répertoire photo
photoRep="/media/NAS/Public/Photos/"
# chemin du GPS
GPS="/run/media/vincent/GARMIN/Garmin/GPX"

IFS=$'\n'
shopt -s nullglob

# détection du GPS
if [ -d $GPS ]; then
    find $GPS -iname "*.gpx" > /tmp/tracesGPS
    if [ $(wc -l /tmp/tracesGPS | cut -d " " -f 1) != 0 ]; then        
        echo
        read -n 1 -s -p "un ou plusieurs fichiers gpx ont été trouvé dans le GPS. Les copier dans le(s) répertoire(s) photos [O/n] ? " copieTrace
        copieTrace="${copieTrace:=o}"
        case $copieTrace in
            o|O|y|Y ) Geolocalisation=true;;
            * ) Geolocalisation=false;;
        esac
    fi
else
    read -n 1 -s -p "Le GPS n'a pas été détecté : continuer quand même [o/N] ? " question
    question="${question:=n}"
    case $question in
            o|O|y|Y ) Geolocalisation=false ;;
            * ) exit;;
    esac
fi
echo

#traitement des photos
for fichier in *
do
    if [ ! -f $fichier ]; then continue; fi
    MimeType=$(file --mime-type $fichier)
    if [[ ${MimeType:(-10)} != "image/jpeg" ]]; then continue; fi
    datePhoto=$(exiv2 -g Exif.Photo.DateTimeOriginal $fichier | sed -r 's/^ *//;s/ {1,}/ /g'| cut -d " " -f 4 | sed 's/://g')
    repertoire=$photoRep${datePhoto:0:4}"/"
    if [ -z ${DateTab[$datePhoto]} ]; then 
        echo
        read -p "Veuillez indiquer une localisation correspondant à la journée du $datePhoto puis appuyez sur [Entrée] : " localisation
        echo
        DateTab[$datePhoto]="_"$(echo $localisation | sed 's/ /-/g')
        mkdir $repertoire$datePhoto${DateTab[$datePhoto]} 2> /dev/null
        ((nbRep++))
        # copier les fichiers gpx        
        if $Geolocalisation; then
            while read line  
                do   
                cp $line $repertoire$datePhoto${DateTab[$datePhoto]}
            done < /tmp/tracesGPS
        fi
    fi 
    fichierRenomme=$repertoire$datePhoto${DateTab[$datePhoto]}"/"$(echo $fichier | sed 's/ /-/g')
    cp $fichier $fichierRenomme
    ((nbPhotos++))
    exiv2 "-r%Y%m%d_%H%M%S"${DateTab[$datePhoto]}"_:basename:" mv $fichierRenomme
done

#Bilan
if [ $nbPhotos -eq 0 ]; then 
    echo
    echo "Il n'y a aucune photo à transférer dans ce répertoire"
    echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++"
    echo
    exit
fi
echo "$nbPhotos photos ont été transférées dans $nbRep répertoire(s)."
printf '\033[7m'
read -n 1 -s -p "===> Supprimer toutes les photos dans le répertoire d'origine [o/N] ? " question
question="${question:=n}"
printf '\033[0m'echo
case $question in
        o|O|y|Y ) rm -rf *.[jJ][pP][gG] ;;
        * ) : ;;
esac

#Géolocalisation
if ! $Geolocalisation; then exit; fi
read -n 1 -s -p "Géolocaliser les photos transférées [O/n] ? " question
question="${question:=o}"
case $question in
        o|O|y|Y ) : ;;
        * ) exit;;
esac
for i in "${!DateTab[@]}"
    do 
    cd $photoRep${i:0:4}"/"$i${DateTab[$i]}
    for f in "*.[gG][pP][xX]"
        do
        gpxFileDate=$(xml_grep 'trkpt' $f --nb_results 1 | xml_grep 'time' --text_only)
        UTCHour=$(date -d $(echo $gpxFileDate | sed "s/T/ /g" | sed "s/Z//g") +%k | sed "s/ //g")
        LocalHour=$(date -d $gpxFileDate +%k)
        TimeZone=$(( $LocalHour  - $UTCHour ))
        gpscorrelate -g $f -z $TimeZone *.[jJ][pP][gG]
    done
done

Quelques explications :

Les premières lignes servent de fichier ini : emplacement du répertoire photo et point de montage du GPS

Ensuite je détecte si le GPS est connecté et je vérifie (find -iname *.gpx) et s'il y a une (ou plusieurs) traces. On y reviendra plus tard

Puis pour chaque fichier du répertoire en cours
  • je teste s'il est de type image jpg,
  • j'extrais la date de prise de vue grace à exiv2
  • s'il n'existe pas je crée un répertoire correspondant à cette date (localisation demandée), j'y copie les éventuelles traces du GPS et j'incrémente un compteur (les noms des répertoires sont stockés dans un tableau associatif date => _localisation )
  • J'y copie le fichier photo, le renomme (aaaammjj_hhmmss_localisation_nomOririnel.JPG) et incrémenter un compteur
Une fois le transfert terminé je vide éventuellement le répertoire d'origine et je commence la géolocalisation proprement dite. Une seule difficulté, déterminer automatiquement la zone horaire qui s'applique ce jour (en supposant que l'APN est correctement réglé à l'heure locale).

Les trace gpx sont des fichiers XML. On peut évidement les exploiter à la hussarde à grand coup de sed ou de awk, mais un bon parseur vous facilitera la tache. J'utilise ici xml_grep fourni par le paquet perl-xml-twig (Archlinux) ou xml-twig-tools (Debian/Ubuntu). Il me permet ici d'extraire l'horodatage (UTC) du premier trackpoint, que j'exprime en heure locale pour calculer la différence.

J'appelle enfin gpscorrelate pour chaque fichier gpx, avec le décalage horaire calculé, et je l'applique à toutes les photos. En principe une photo n'est concernée que par une seule trace mais s'il arrivait que le fichier JPG contienne déjà des données exif gps elles ne seraient pas écrasées et un message d'erreur serait affiché.

Naturellement ce script ne répond précisément qu'à mes besoins personnels et probablement pas aux vôtres mais il démontre, je l'espère, qu'il n'est pas si difficile de réaliser soi-même l'application correspondant à ses desiderata.