Voici une petite liste d'erreurs fréquentes et de diagnostics.

Cette page sera progressivement complétée avec des suggestions et des astuces en fonction de la connaissances acquise à partir des statistiques (principalement quelle requête d'un moteur de recherche a abouti sur le site).

Vous pouvez aussi participer à l'amélioration de la page par le forum Help.

Installation

Veuillez relire les instructions d'installation et vérifiez soigneusement chaque étape.

Initialisation

Ces erreurs sont communes à genxref et à la navigation.

Erreurs de configuration

Fatal: Couldn't open configuration file xxx

lxr.conf n'existe pas ou ne peut pas être lu.
Le fichier décrit par le paramètre 'filetypeconf' n'existe pas ou ne peut pas être lu.

lxr.conf doit être dans le même répertoire que les scripts (i.e. diff, ident, search, showconfig et source).
Il n'y a pas de contrainte d'emplacement pour 'filetypeconf'.
Vérifiez aussi que le fichier peut être lu par "tout le monde".
Fatal: Single tree operation requested and x trees found in configuration file

Le paramètre 'routing' est égal à 'single' et lxr.conf décrit plusieurs arbres.

Corrigez lxr.conf pour résoudre cette incohérence.
Fatal: Can't find config for xxx

La valeur de l'option --url= doit correspondre à l'une des combinaisons 'host_names'/'virtroot', à l'un des paramètres 'baseurl' ou 'baseurl_aliases' de lxr.conf. La valeur de l'option --tree= doit éventuellement être égale au paramètre 'treename' de l'un des arbres.

Vérifiez l'orthographe de la ligne genxref ou de vos paramètres.
Fatal: No file type mapping in xxx
Fatal: No file script interpreter mapping in xxx

lxr.conf et le fichier optionnel 'filetypeconf' ne contiennent pas les paramètres 'filetype' ou 'interpreters'.

Utilisez les fichiers standard, copiez les sections concernées dans votre fichier personnalisé de configuration ou exécutez l'assistant de configuration.
Si vous persistez à vouloir ciseler votre propre fichier de configuration, relisez attentivement le Manuel de l'utilisateur.
Fatal: Couldn't make directory xxx

LXR essaye de créer les répertoires décrits par les paramètres 'tmpdir', 'glimpsedir' ou 'glimpsedirbase' et 'swishdir' ou 'swishdirbase' s'ils n'existent pas.

Vérifiez que les emplacements peuvent être atteints en écriture par "tout le monde".
Fatal: Both Glimpse and Swish-e have been specified in xxx
Fatal: Neither Glimpse nor Swish-e have been specified in xxx

Les deux paramètres 'glimpsebin' et 'swishbin' ont été définis. LXR ne peut déterminer lequel utiliser pour cet arbre.
Ou bien, aucun de ces paramètres n'a été défini pour un arbre stocké dans des fichiers ordinaires.

Note: Il est possible de travailler sans recherche en plein texte. Voyez cette astuce.
Corrigez lxr.conf de façon que l'un des paramètres soit défini.

Erreurs liées à la base données

Fatal: Cant't find database xxx

Le paramètre 'dbname' ne décrit pas correctement la base de données (soit avec un moteur non reconnu, soit sans aucun moteur).

Corrigez lxr.conf.
Fatal: Cant't open connection to database xxx

L'accès à la base de données est ouvert avec les valeurs des paramètres 'dbname', 'dbuser' et 'dbpass'.

Vérifiez que ces paramètres décrivent correctement la base de données et permettent au moins l'accès en lecture. Vérifiez aussi que le démon de la base de données est activé et que la base de données définit les permissions d'accès correctes pour le serveur web.
Fatal: Can't create Index xxx

Habituellement précédé par une autre erreur, comme Can't open connection to database yyy ou par une erreur système au sujet d'un verrou ou d'un "socket" (si elle n'apparaît pas à l'écran, consultez le journal du serveur web).

Vérifiez la description de la base de données dans lxr.conf et vos droits d'accès à la base. Éventuellement, avez-vous oublié d'activer le démon de la base de données?
Fatal: Disconnect failed: xxx

Une erreur est survenue lors de la déconnexion de la base de données. Cela signifie habituellement qu'une transaction est encore active.

Signalez cette erreur comme bug.

Erreurs liées au stockage de l'arbre

Fatal: Can't create file access object xxx

Ceci ne doit pas arriver. Si votre arbre est stocké dans un dépôt Subversion, vérifiez d'abord que l'accès à la bibliothèque svn est possible.

Signalez cette erreur comme bug.
Fatal: xxx subprocess died unexpectedly

Le service demandé à Git, Mercurial (hg) ou Subversion (svn) s'est terminé en erreur.

Vérifiez que les binaires du VCS sont installés et qu'ils peuvent être exécutés par "tout le monde".
Fatal: Error executing "xxx"; rcs not installed? (CVS)

L'extraction d'un fichier d'un dépôt CVS a échoué.

Vérifiez que les binaires de CVS sont installés et qu'ils peuvent être exécutés par "tout le monde".
Warning: Oops! Out of sync! (CVS)

L'information CVS sur les différences doit être retraitée pour attribuer chaque ligne à sa révision. LXR a perdu ses repères pendant l'analyse du fichier.

Signalez cette erreur comme bug avec une copie du fichier CVS original (d'extension ,v), pas le fichier extrait.

genxref

No matching configuration xxx
No 'sourceroot' for xxx

Le paramètre 'sourceroot' manque dans une description d'arbre de lxr.conf.

Corrigez lxr.conf.
Variable 'v' needed to define versions xxx

La variable 'v' (version) manque dans une description d'arbre de lxr.conf.

Corrigez lxr.conf.
No version to index

Une demande explicite d'indexation par --version=xxx n'a pas pu être satisfaite. Le message qui précède en donne la raison.

No corresponding directory xxx in source root

La version figure dans la variable 'v' mais n'existe pas dans le répertoire source.

Version xxx not listed in lxr.conf, but a directory exists in source root

La version ne figure pas dans la variable 'v' mais son répertoire existe dans les sources.
Cette erreur résulte généralement d'un ajout de version mal finalisé. Corrigez la variable 'v' dans lxr.conf ou ajoutez son répertoire dans le répertoire source.
Pas d'indexation en plein texte

Un moteur de recherche en plein texte est installé mais l'arbre source n'est pas analysé.

La recherche en plein texte et l'indexation sont désactivées si l'arbre-source est stocké dans un VCS.
Sinon, ni 'glimpsedir', ni 'glimpsedirbase' n'ont été définis. Corrigez lxr.conf.
Can't create xxx/.glimpse_exclude (glimpse)

genxref traduit la liste d'exclusion de répertoires 'ignoredirs' en une forme utilisable par glimpse. Ce n'est possible que si les permissions sur le répertoire 'glimpsedir' ou 'glimpsedirbase' autorisent l'écriture.

Vérifiez et éventuellement modifiez les permissions du répertoire 'glimpsedir' ou 'glimpsedirbase'.
Can't open xxx/filenames for writing (swish-e)

genxref crée un fichier dans lequel swish-e range les noms des fichiers constituant l'arbre. Ce n'est possible que si les permissions sur le répertoire 'swishdir' ou 'swishdirbase' autorisent l'écriture.

Vérifiez et éventuellement modifiez les permissions du répertoire 'swishdir' ou 'swishdirbase'.
Couldn't exec xxx

Une erreur a empêché le lancement de l'indexeur en plein texte.

Vérifiez que 'glimpseindex' ou 'glimpsebin' désignent bien l'exécutable de l'indexeur en plein texte.
err: No unique words indexed (swish-e)

swish-e n'a pas pu trouver de texte à indexer et c'est sa façon bizarre de dire "Fichier non trouvé".

Vérifiez votre configuration. Rappelez-vous que le répertoire 'sourceroot' contient des sous-répertoires dont le nom est égal à un nom de version. Au cas où vous voulez travailler sur une seule version, vous devez quand même la placer dans un sous-répertoire, aussi curieux que cela paraisse.
Can't run ctags

Une erreur a empêché le lancement de ctags.

Vérifiez que le paramètre 'ectagsbin' désigne bien l'analyseur de fichier.
ctags: No files specified. Try "ctags --help"

genxref extrait la bonne version de fichier du dépôt dans un fichier temporaire. Cette copie est possible seulement si les permissions du répertoire 'tmpdir' autorisent l'écriture.

Vérifiez et éventuellement changez les permissions du répertoire 'tmpdir'.
commit ineffective with AutoCommit enabled at lib/LXR/Indexyyy line zzz.

Résulte d'un changement de méthode de gestion pour la base de données de LXR.

Peut être ignoré sans danger. Toutefois, si cela arrive avec la version 1.0 ou ultérieure, signalez-le comme bug.

Navigation

Écran vide (pas même un en-tête ou un pied de page)

LXR a rencontré une erreur avant la fin de l'initialisation HTTP. Ceci résulte en général d'une mauvaise configuration du serveur web.

Le serveur web n'a pas pu router l'URL vers LXR, parce que cet URL ne correspond à aucun service LXR connu.

Si cet incident suit une reconfiguration manuelle après un basculement d'arbre unique à arbres multiples (ou vice versa), vérifiez que vous avez bien apporté les changements nécessaires aux fichiers de configuration pour le serveur web apache-lxrserver.conf, lighttpd-lxrserver.conf, nginx-lxrserver.conf ou thttpd-lxrserver.conf.
Internal Server Error (HTTP Error 500 avec Apache)

Les contrôles d'accès d'Apache ont énormément changé entre les versions 2.2 et 2.4 entraînant une incompatibilité entre les directives. La version installée ne correspond pas à votre configuration.

Corrigez manuellement le fichier .htacess ou appliquez cette astuce.
Warning: Template file xxx does not exist
Warning: Template xxx is not defined

Beaucoup d'actions de navigation nécessitent un patron pour la mise en page des résultats. Dans le premier cas, le paramètre de configuration décrit un fichier inexistant, tandis que dans le second cas le paramètre n'est pas défini.

Donnez une valeur correcte au paramètre ou créez le fichier manquant. Vérifiez d'abord que le patron est défini. Les patrons sont recherchés par défaut dans l'arborescence du répertoire racine de LXR sinon votre fichier de configuration lxr.conf doit être modifié pour désigner un emplacement personnalisé. Éventuellement, consultez la page sur les chemins de fichier.

Listage de fichier ou de répertoire

The directory/file xxx does not exist

Si le répertoire ou le fichier n'existe pas dans cette version: il ne s'agit alors pas d'une erreur.
Si le répertoire ou le fichier existe vraiment, il peut être écarté par une règle d'exclusion (par exemple un répertoire interdit par la liste du paramètre de configuration 'ignoredirs' ou la fonction de filtrage –toujours– non documentée). Sinon, cela signifie que LXR n'a pas les droits d'accès.

Vérifiez d'abord les permissions du répertoire et de ses parents. Si elles sont correctes, votre arbre n'est pas visible de LXR; vérifiez ensuite le fichier lxr.conf. Lisez également attentivement la page sur les chemins de fichier.
xxx cannot be displayed from this browser

Vous avez cliqué sur un hyperlien vers un fichier graphique.

Soit votre arbre n'est pas visible du server web (lisez attentivement la page sur les chemins de fichier, puis cette règle de configuration), soit votre navigateur ne prend pas en charge le format graphique (modifiez éventuellement le paramètre de configuration 'graphicfile').

Recherche d'identificateur

Fatal: Identifier search not available without 'htmlident' template

Les résultats de recherche sont mis en page à l'aide du patron 'htmlident'. Sans celui-ci, rien ne peut être fait.

Vérifiez le paramètre 'htmlident' dans lxr.conf et faites-le désigner un fichier de patron valide.

Affichage des différences entre versions

Fatal: *** Diff subprocess died unexpectedly

Une erreur est survenue pendant l'exécution de l'utilitaire GNU diff.

Vérifiez le code d'erreur et signalez le comme un bug.

Recherche en plein texte

Warning: Free-text search disabled by configuration file!
Warning: Free-text search not available with VCSs!

Soit vous avez configuré LXR sans recherche en plain texte, soit votre arbre source est stocké dans un système de gestion de version.

Dans les deux cas, c'est un comportement normal. La recherche en plein texte peut cependant être réactivée dans le premier cas en installant un moteur de recherche, définissant les paramètres de configuration concernés et relançant genxref.
Warning: Free-text search engine required for file search, and no freetext search engine is configured

Un paramètre nécessaire à la recherche en plein texte n'a pas une valeur correcte: 'glimpsebin', 'glimpsedir' ou 'glimpsedirbase' ou 'swishbin', 'swishdir' ou 'swishdirbase'.

Désactivez la recherche en plein texte (voir cette astuce) ou donnez les bonnes valeurs aux paramètres (installez éventuellement un moteur de recherche).
Fatal: Free-text search not available without 'htmlsearch' template

Les résultats de recherche sont mis en page à l'aide du patron 'htmlsearch'. Sans celui-ci, rien ne peut être fait.

Vérifiez le paramètre 'htmlsearch' dans lxr.conf et faites-le désigner un fichier de patron valide.
Warning: Version xxx has not been indexed and is unavailable for searching

LXR a essayé d'ouvrir un fichier de cache interne du moteur de recherche, lequel semble absent. Ceci se produit si vous avez ajouté une nouvelle version à l'arbre après l'indexation par genxref.

Relancez genxref pour indexer la version incriminée (vous pouvez aussi réindexer toutes les versions).
Search failed

Vous avez lancé une recherche en plein texte. La ligne suivante est le message brut émis par le moteur de recherche.

glimpse ou swish-e n'a pas pu traiter la requête. Signifie généralement qu'il n'y a pas de correspondance.
Fatal: Glimpse subprocess died unexpectedly

Une erreur est survenue pendant le traitement de la recherche en plein texte par Glimpse.

Vérifiez le code d'erreur et assurez-vous que l'exécutable désigné par le paramètre 'glimpsebin' est accessible. Si vous ne trouvez pas d'explication, signalez l'erreur comme un bug.
Unexpected return value x from Glimpse

Glimpse n'a pas pu traiter la demande de recherche en plein texte.

Si x est 2, des fichiers sont inaccessibles. Ce sont généralement les caches auxiliaires, qui n'ont peut-être pas été créés ou ont des permissions incorrectes. Le répertoire correspondant est défini par le paramètre de configuration 'glimpsedir' ou 'glimpsedirbase'.

Affichage de la configuration

Fatal: Can't display configuration without 'htmlconfig' template

La configuration est mise en page à l'aide du patron 'htmlconfig'. Sans celui-ci, rien ne peut être fait.

Vérifiez le paramètre 'htmlconfig' dans lxr.conf et faites-le désigner un fichier de patron valide.

Analyse des langages

Fatal: Unable to load xxx Lang class

La table dans le paramètre 'filetype' associe les extensions de fichier aux analyseurs de langage du répertoire Lang/. Aucun n'a été trouvé pour le langage donné.

Si vous avez modifié le paramètre 'filetype' (ou, de façon équivalente, le fichier templates/filetype.conf), corrigez vos modifications ou écrivez l'analyseur manquant. Sinon, signalez l'erreur comme un bug.
Fatal: Unable to create xxx Lang object

Un message antérieur donne la cause de l'échec.

Si cette erreur se produit seule, signalez-la comme un bug.
Fatal: Can't open <generic.conf actual name> (analyseur générique)

La configuration de l'analyseur générique est conservée dans le fichier generic.conf (ou tout autre nom que vous lui avez donné par le paramètre 'genericconf'). L'analyseur générique ne fonctionne pas sans lui.

Vérifiez que le fichier de configuration de l'analyseur générique est bien là où le paramètre 'genericconf' prétend qu'il est et que cet emplacement peut être lu par "tout le monde".
Fatal: No langid for language xxx (analyseur générique)

langid est utilisé pour retrouver les mots-clefs et les symboles du langage dans la base de données. Il est primordial pour garder les choses en ordre.

Si vous avez modifié le fichier generic.conf, révisez vos modifications ou revenez au fichier d'origine. Sinon, signalez l'erreur comme un bug.

Erreurs consignées dans le journal du serveur web

Avant la version 2.0, le journal du serveur web était la seule source d'information pour le déverminage. À partir de la version 2.0, les erreurs sont toujours écrites dans le journal mais elles sont aussi affichées à l'écran, ce qui est plus sympathique.

Il y a cependant deux types d'erreurs qui demandent encore la lecture du journal:

  1. Le premier concerne les erreurs se produisant avant que LXR ait fini d'initialiser sa connexion HTTP. Rien ne peut être envoyé à l'écran. Notez que ce cas peut être totalement désespéré car, pour une erreur très précoce, les choses ont pu être si peu initialisées qu'il soit même impossible d'accéder au journal du serveur.
  2. Le second englobe toutes les erreurs directement générées par l'interpréteur Perl. Elles ne sont pas retournées à LXR et ne peuvent être retranscrites à l'écran.

Les erreurs les plus probables que vous pouvez rencontrer sont:

Fatal: sequence (?|...) not recognised in regex

C'est une erreur de syntaxe de Perl. L'expression régulière traitant la construction #include et ses équivalents dans d'autres langages utilise une particularité introduite en Perl 5.10. Si votre interpréteur Perl est d'une version plus ancienne, l'expression régulière est considérée comme incorrecte.

Mettez à jour votre Perl. Sinon, installez la version 0.11 de LXR qui est revenue en arrière avec une syntaxe compatible avec Perl 5.8 au prix d'une complication d'écriture.
Cette erreur ne devrait pas se produire en version 2.0, bien que la compatibilité totale avec 5.8 n'ait pas été rétablie.

Autres erreurs

Alertes SELinux pendant l'utilisation de LXR

Habituellement causées par un étiquetage incorrect du répertoire racine de LXR quand il n'est pas dans /var/www/cgi-bin/.

Réétiquetez le répertoire racine de LXR avec une catégorie autorisant les scripts CGI. La méthode la plus fiable est de dupliquer le contexte de /var/www/cgi-bin/: $ chcon --reference /var/www/cgi-bin/ -R /LXR/root/directory/
LXR ne fonctionne pas avec git

genxref et LXR se terminent en erreur lors de tentative d'accès au dépôt git.

La prise en compte de git n'est plus assurée par la bibliothèque standard de Perl. Corrigé par réécriture du module dans 1.0.
Pas de recherche en plein texte avec les VCS (CVS, git, …)

Vous pouvez naviguer dans votre arbre rangé dans un dépôt VCS. Mais vous recevez des erreurs quand vous essayez de lancer une recherche en plein texte.

Les moteurs de recherche gérés (glimpse et swish-e) n'ont aucune notion du format des dépôts VCS. Ils ne peuvent traiter que des fichiers ordinaires. Si vous avez connaissance d'un moteur de recherche convenable en logiciel libre, veuillez le recommander aux développeurs.