Guide de compilation et de configuration de PCManFM

De LXDE.org
Aller à : navigation, rechercher

Depuis 2010, PCManFM a subi une réécriture complète. Le nouveau PCManFM est donc complètement différent des anciennes versions 0.5.x. Les instructions de compilation, la façon de configurer et les fichiers de configuration le sont également. Sur cette page, on trouve les instructions de compilation et un guide de configuration.

Les paquets ont une façon d'être nommés totalement différente suivant les distributions. Seuls des noms génériques seront donc utilisés ici. Il faut donc se référer à la distribution utilisée pour connaître les noms des paquets.

Pré-requis de compilation

Dépendances de compilation

  • GTK+ 2 >= version 2.18 ;
  • Glib >= version 2.22 ;
  • Cairo >= version 1.8 ;
  • menu-cache >= version 0.3.2 (c'est une petite bibliothèque du projet LXDE utilisée pour l'intégration dans le menu) ;
  • Libtool ;
  • Pkg-config.
Note :
Libfm version 1.0 a de plus grandes exigences. Cela sera résolu avec la version 1.0.1.


Dépendances supplémentaires

Si on veut compiler depuis les sources du dépôt git plutôt que depuis les tarballs sortis, il faut ceci :

  • automake >= 1.11 ;
  • autoconf >= 2.63 ;
  • intltool >= 0.40 ;
  • gettext.

Obtenir le code source

Tarballs sortis

Les tarballs ne sont pas actualisés en permanence. Pour avoir des sources à jour, il faut utiliser git.

Le code source le plus récent de développement depuis git

Pour obtenir le code source depuis le dépôt git, il faut utiliser les commandes ci-dessous (si elles donnent une erreur [tiemout], il suffit de réessayer).

# cd /usr/src

# git clone <URL du dépôt>

Dépôts Subversion

Depuis 2010, le changement vers git a été effectué. L'ancien code source dans les dépôts svn a été conservé mais n'est plus maintenu et est obsolète. Merci d'éviter de l'utiliser.

Compilation du code source

Note :
Si un (ou des) composant(s) est (sont) déjà installé(s) sur le système (soit manuellement, soit par le gestionnaire de paquets de la distribution), faire ce qui suit écrasera les fichiers existant !


Après l'installation des pré-requis, la compilation devrait bien se passer.

Étape supplémentaire pour git

Le script de configuration est fourni uniquement dans les tarballs. Pour le code source téléchargé depuis le dépôt git, il faut le générer manuellement avec autogen.sh après l'installation des dépendances (voir également ci-dessous) :

# cd /usr/src/menu-cache

# ./autogen.sh

Il faut faire de même pour chaque composant. Si des erreurs apparaissent, c'est très probablement parce que toutes les dépendances n'ont pas été installées correctement.

Compilation et installation sur Ubuntu ou Debian

Installer toutes les dépendances exigées :

$ sudo apt-get install dpkg-dev autoconf automake autotools-dev intltool libglib2.0-dev libgtk2.0-dev libmenu-cache1-dev libtool pkg-config

Si on compile la version 1.0 depuis les sources git, il faut faut avoir le paquet valac en version supérieure ou égale à 0.13.0 également (note : la version 1.0.1 contient un bogue exigeant valac même en compilant depuis le tarball).

Libfm plus récent que la version 1.0 peut être compilé même si ce paquet n'est pas disponible au prix de la désactivation du support des actions personnalisées. Pour vérifier si valac en version 0.13.0 ou supérieure est bien installé, on peut utiliser la commande ci-dessous.

$ dpkg -l valac

Elle devrait donner une ligne telle que celle ci-dessous.

ii  valac             0.14.0-0ubuntu1   C# like language for the GObject system

« 0.14.0-0ubuntu1 » est un exemple de version du paquet valac.

Compilation et installation des composants :

  • libfm :
    • si valac est disponible en version 0.13 ou supérieure :

$ cd /usr/src/libfm

# ./configure --prefix=/usr && make

# DEB_MULTIARCH=`dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null` && rm -f /usr/lib/$DEB_MULTIARCH/libfm-*

$ sudo make install-strip

    • sans valac :

$ cd /usr/src/libfm

# ./configure --prefix=/usr --disable-actions && make

# DEB_MULTIARCH=`dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null` && rm -f /usr/lib/$DEB_MULTIARCH/libfm-*

$ sudo make install-strip

  • PCManFM :

$ cd /usr/src/pcmanfm

# ./configure --prefix=/usr && make

$ sudo make install-strip

Compilation et installation sur Fedora

Essayé sur Fedora 14 uniquement !

Installer toutes les dépendances exigées :

$ su -

# yum install make automake autoconf gcc gtk2 glib2 menu-cache libtool pkgconfig intltool

  • menu-cache :

$ cd /usr/src/menu-cache

# ./configure --prefix=/usr && make

# make install-strip

  • libfm :

$ cd /usr/src/libfm

# ./configure --sysconfdir=/etc --prefix=/usr && make

# make install-strip

  • PCManFM :

$ cd /usr/src/pcmanfm

# ./configure --sysconfdir=/etc --prefix=/usr PKG_CONFIG_PATH=/usr/lib/pkgconfig/ && make

# make install-strip

Note :
Pour les utilisateurs de versions 64 bits, il faut peut-être également lancer ceci :

# ln -s /usr/lib/libfm-gtk.so.0.0.0 /usr/lib64/libfm-gtk.so.0

# ln -s /usr/lib/libfm.so.0.0.0 /usr/lib64/libfm.so.0


Compilation et installation sur les autres distributions

Par défaut, les programmes seront installés dans /usr/local. Si on veut changer d'endroit, par exemple /usr/, il faut utiliser l'argument --prefix=<emplacement voulu> au fichier configure.

  • menu-cache :

# ./configure && make

{{|sudo make install-strip|$}}

  • libfm :

# ./configure --sysconfdir=/etc && make

$ sudo make install-strip

  • PCManFM :

# ./configure && make

$ sudo make install-strip

Il faut noter que --sysdir=/etc est nécessaire si on veut installer les fichiers de configuration dans /etc/. Sinon, les fichiers de configuration par défaut seront installés dans /usr/local/etc/.

Configuration correcte de l'environnement d'exécution

Dépendances d'exécution

  • GTK+ >= version 2.18 ;
  • Glib >= version 2.22 ;
  • menu-cache >= version 0.3.2 ;
  • lxmenu-data (les fichiers de données pour l'intégration au menu des applications) ;
  • gamin ou d'autres serveurs FAM (non requis pour Glib 2.27.1 ou plus récent) ;
  • gvfs et ses dépendances (optionnel mais hautement recommandé) :
    • dbus et dbus-glib (exigé par gvfs),
    • policykit-gnome (nécessaire pour l'authentification pour la gestion du volume),
    • les autres dépendances de gvfs sont toutes optionnelles ; cela dépend des options de configuration activées à la compilation de gvfs ; si un créateur de paquets de votre distribution inclut toutes les options et n'essaie pas de séparer les paquets (comme sur Ubuntu, par exemple), il y aura un grand nombre de dépendances ; cependant, ces dépendances ne sont pas obligatoires ; si on choisit de manière précautionneuse les options de configuration ou de séparer les paquets de façon plus sensible, ces dépendances sont toutes optionnelles et peuvent être réduites au minimum ; on peut rapporter un bogue à sa distribution si on trouve qu'il y a beaucoup de dépendances non voulues générées par gvfs puisqu'elles devraient être optionnelles.

Autres exigences

Si on veut utiliser le support de gvfs, il faut respecter quelques exigences :

  • Dbus devrait être lancé correctement :
    • si on utilise Gnome, Xfce ou LXDE, il n'est pas nécessaire de toucher à cela,
    • essayer env | grep DBUS ; si la sortie n'indique rien, alors Dbus n'est pas en fonctionnement et il faut le lancer,
    • utiliser man dbus-launch pour savoir comment l'utiliser ; la façon la plus simple de lancer Dbus est d'ajouter ce qui suit au fichier .xinitrc ou tout autre script de démarrage utilisé par le gestionnaire de fenêtres ;
## Essai d'un démon de bus existant, simplement par prudence
if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then
    ## S'il n'est pas trouvé, lancement d'un nouveau
    eval 'dbus-launch --sh-syntax --exit-with-session'
    echo "L'adresse du démon D-Bus par session est : $DBUS_SESSION_BUS_ADDRESS"
fi
  • l'agent d'authentification de Policykit doit être lancé (policykit-gnome) :
    • si on veut le lancer dans le script de démarrage, il faut utiliser la ligne ci-dessous,
/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1
    • si on utilise LXDE ou quelque chose supportant les spécifications de démarrage automatique (autostart) de freedesktop.org, on peut utiliser les commandes ci-dessous ;

# mkdir -p ~/.config/autostart

# cp /etc/xdg/autostart/polkit-gnome-authentication-agent-1.desktop ~/.config/autostart

Il faut ensuite éditer le fichier ~/.config/autostart/polkit-gnome-authentication-agent-1.desktop et y enlever la ligne suivante :

OnlyShowIn=GNOME;XFCE;

Ce programme n'est actuellement pas spécifique à Gnome mais cette ligne les désactive délibérément dans d'autres bureaux que Gnome et Xfce.

Sans ces deux programmes, gvfs ne fonctionnera pas correctement.

Pour désactiver le support de GVFS

On peut utiliser l'une des deux solutions suivantes :

  • retirer gvfs (devrait toujours fonctionner) ;
  • d'une façon plus élégante, on peut utiliser les commandes ci-dessous (cela fonctionne même si gvfs est installé).

# export GIO_USE_VFS="local"

# export GIO_USE_VOLUME_MONITOR="unix"

Utilisation de PCManFM avec Glib en version antérieure à la 2.27.1

La nouvelle fonctionnalité de Libfm de support des actions personnalisées dans le menu contextuel de fichier ne peut pas fonctionner avec une version antérieure à la 2.26. Pour compiler, il faut donc désactiver les actions en fournissant l'option --disable-actions au script de configuration.

Si on veut utiliser PCManFM avec Glib en version antérieure à la 2.27.1, on peut avoir de mauvaises réactions : PCManFM ne met pas à jour le contenu d'un répertoire quand on crée un fichier dedans ou qu'on y efface un fichier. Ce bogue peut intervenir si on installe Glib sans module. Pour y remédier, il faut donc installer tous les modules de Glib.

Options de ligne de commande

Utilisation :

 pcmanfm [OPTION...] [FILE1, FILE2,...] 

Options d'aide :

 -h, --help                           Affiche les options d'aide
 --help-all                           Affiche toutes les options d'aide
 --help-gtk                           Affiche les options de GTK+

Options de GTK+ :

 --class=CLASS                        Classe de programme comme utilisé par le gestionnaire de fenêtres
 --name=NAME                          Nom du programme comme utilisé par le gestionnaire de fenêtres
 --screen=SCREEN                      Écran de X à utiliser
 --sync                               Rend les appels à X synchrones
 --gtk-module=MODULES                 Charge les modules additionnels de GTK+
 --g-fatal-warnings                   Rend tous les avertissements fatals

Options de l'application :

 -p, --profile=PROFILE                Nom du profil de configuration
 -d, --daemon-mode                    Lance PCManFM comme démon
 --no-desktop                         Pas de fonction. Simplement pour être compatible avec Nautilus
 --desktop                            Lance le gestionnaire de bureau
 --desktop-off                        Éteint le gestionnaire de bureau s'il est lancé
 --desktop-pref                       Ouvre la fenêtre de dialogue des préférences de bureau
 -w, --set-wallpaper=FILE             Règle le fond d'écran avec l'image FILE
 --wallpaper-mode=MODE                Règle le mode du fond d'écran du bureau. MODE=(color[couleurs]|stretch[étirer]|fit[ajuster]|center[centrer]|tile[côte à côte])
 --show-pref=N                        Ouvre la boîte de dialogue des préférences sur la page N
 -n, --new-win                        Ouvre une nouvelle fenêtre
 --role=ROLE                          Rôle de la fenêtre pour utilisation par le gestionnaire de fenêtres
 --display=DISPLAY                    Affichage de X à utiliser

Procédure de rapport de bogues et guide de débogage de PCManFM

Nous avons réellement besoin d'aide pour l'améliorer. Si vous constatez un plantage, voici les instructions sur la façon de nous aider à le trouver.

Avertissement : Activer les options de débogage avec --enable-debug rendra PCManFM légèrement plus lent. Mais ceci aide énormément au débogage. Pour une utilisation en production, il ne faut pas les activer.

Étapes pour aider au débogage de PCManFM

  • Installer gdb ;
  • Compiler libfm et pcmanfm avec le support du débogage (ce qui suit n'est qu'un exemple, il faut se référer aux instructions pour sa distribution indiquées plus haut) :

# ./configure --enable-debug --sysconfdir=/etc

# make clean install (install-strip récupérera les informations de débogage nécessaires)

  • Tuer toutes les instances lancées de PCManFM :

# killall pcmanfm

  • Exporter certaines variables d'environnement de Glib afin d'aider au débogage. Ces variables d'environnement activent des programmes additionnels intégrés à Glib permettant de faciliter le débogage et pouvant parfois grandement aider au débogage :

# export G_DEBUG=fatal-criticals

# export G_SLICE=debug-blocks

# export G_MESSAGES_DEBUG=all

  • Lancer PCManFM avec gdb :

# gdb pcmanfm

  • Ensuite, dans gdb, taper « run » (on peut utiliser des arguments de ligne de commande habituels tels que --desktop à « run ») :

(gdb) run

  • Quand on obtient un plantage, taper « bt », dans gdb, pour obtenir les traces du plantage :

(gdb) bt

  • Nous envoyer les traces du plantage avec le rapport de bogue ; de bonnes traces peuvent être d'une grande aide pour trouver les bogues ; sans les traces de gdb, un rapport de bogue avec comme seule indication « PCManFM plante parfois » n'aide pas du tout et sera ignoré puisqu'il ne contient aucune information utile ;
  • un bon rapport de bogue devrait contenir les informations suivantes :
    • la distribution utilisée,
    • comment reproduire le bogue,
    • les traces de gdb ;
  • Envoyer le rapport de bogue au traqueur de bogues plutôt que par mél directement aux auteurs : http://sourceforge.net/tracker/?group_id=156956&atid=801864 (en anglais).

Priorité des rapports de bogue

Comme il est impossible de solutionner tous les bogues en même temps, les rapports de bogues doivent être priorisés. Voici quelque règles utilisées pour les prioriser :

  • Priorités 1 à 3 pour les bogues mineurs (sur des actions ou fonctionnalités optionnelles) :
1 : mauvaise documentation ;
2 : une fonctionnalité moindre ne fonctionne pas toujours ;
3 : des fonctionnalités supplémentaires sont nécessaires.
  • Priorités 4 à 6 pour les bogues majeurs (sur des actions principales comme les fenêtres, le glisser-déposer, etc.) :
4 : une action ne fonctionne parfois pas ;
5 : une action fonctionne mais pas de la façon attendue ;
6 : une action ne fonctionne pas du tout ou casse autre chose.
  • Priorités 7 à 9 pour les bogues critiques :
7 : un plantage dans certaines conditions ;
8 : un plantage fréquent, un gel ou un programme refusant de démarrer dans certaines conditions ;
9 : un programme provoque des défauts, des gels ou des plantages au démarrage.

Informations supplémentaires pour les créateurs de paquets

On peut personnaliser la configuration par défaut de libfm et de PCManFM. Les fichiers de configuration par défaut sont installés dans /etc.xdg/libfm/ et dans /etc/xgd/pcmanfm/. Il faut réaliser la personnalisation dans /etc/xdg/libfm/libfm.conf et dans /etc/xdg/pcmanfm/pcmanfm.conf. Si on ne connait pas les options supportées, on peut utiliser ~/.config/pcmanfm/pcmanfm.conf comme modèle. En dehors de cela, PCManFM supporte l'utilisation de profils différents. pcmanfm --profile=lxde permet, par exemple, d'utiliser lxde.conf au lieu de pcmanfm.conf. Ainsi, on peut utiliser pcmanfm --profile <fichier_de_config_personnalisé> dans son script de démarrage et il n'y a alors pas besoin de modifier le paquet en lui-même.