Lancer une appli ds X11

Philippe Guérin

Membre enregistré
27 Juin 2004
9
1
Bonjour à tous,

désolé pour ces questions fort basiques pour certains d'entre vous.
Je souhaitai faire tourner fontforge sur mon Mac (avec X11).
Je n'ai pas utiliser Fink ni FinkCommander. Simplement télécharger un package de FontForge sur mon bureau.
Maintenant j'ai bien un fichier exécutable fontforge dans /usr/local/bin/
Pour le lancer, je déplace son icone dans Terminal (il doit y avoir d'autres commandes plus unixienne, je suppose !).
Terminal m'affiche :

dyld: /usr/local/bin/fontforge can't open library: /lib/libgdraw.1.dylib (No such file or directory, errno = 2)
Trace/BPT trap

Il doit manquer des bibliothèqes, où puis-je les trouver ?
Ou mon installation, à partir du packae, n'est pas complète ?

Merci de vos conseils,

Phil
 
Hello,
Bienvenue sur les forums ;)
Il cherche la lib dans /lib... a mon avis c'est pas bon.
Commence par faire une recherche dans le terminal via cette commande :
find / -name libgdraw.1.dylib
Si elle est installée par ton soft, elle est certainement dans /usr/local/lib

A+
 
  • J’aime
Réactions: iManu
Salut !

En fait, c'est Terminal qui cherche cette biblio lorsque je veux lancer FontForge (Terminal m'affiche alors les lignes suivantes :
dyld: /usr/local/bin/fontforge can't open library: /lib/libgdraw.1.dylib (No such file or directory, errno = 2)
Trace/BPT trap

J'ai cherché sur /usr/local/lib, je trouve ces 2 fichiers :
libgdraw.la
libgunicode.la

QuoiKes ? En tout cas certainement pas libgdraw.1.dylib

A +

Philippe
 
Re,
Je vois pas trop pourquoi il va chercher dans /lib (qui n'existe pas) et je ne comprend pas le format de cette lib...
Si tu fais otool -L /usr/local/bin/fontforge , ca te donne quoi ?

A+
 
Si tu fais otool -L /usr/local/bin/fontforge , ca te donne quoi ?

A+[/QUOTE]

Terminal m'affiche ça :

/usr/local/bin/fontforge:
/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 14.0.0)
/lib/libgdraw.1.dylib (compatibility version 2.0.0, current version 2.8.0)
/lib/libgunicode.2.dylib (compatibility version 3.0.0, current version 3.2.0)
/usr/X11R6/lib/libSM.6.dylib (compatibility version 6.0.0, current version 6.0.0)
/usr/X11R6/lib/libICE.6.dylib (compatibility version 6.3.0, current version 6.3.0)
/usr/X11R6/lib/libXi.6.dylib (compatibility version 6.0.0, current version 6.0.0)
/usr/X11R6/lib/libX11.6.dylib (compatibility version 6.2.0, current version 6.2.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 60.2.0)
/usr/lib/libz.1.1.3.dylib (compatibility version 1.0.0, current version 1.1.3)

C'est curieux, car là il semble trouver les lib libgdraw et libgunicode?
 
Philippe Guérin a dit:
C'est curieux, car là il semble trouver les lib libgdraw et libgunicode?
Non, là il te dit simplement ce dont il a besoin.
Ca me semble curieux quand même quand on sait qu'il n'y a pas, normalement, de /lib sur ton Mac...
Et si tu re-installais ?
 
Réinstaller FontForge ?
Pourquoi pas !
Y a-t-il une procédure via Terminal pour installer le package de FontForge (actuellement sur mon bureau) ? Cela serait certainement plus propre que le bidouillage que j?ai dû faire?
Mais avant cela, une précision :
Dans un premier temps, j?avais dû faire de mauvaises manips (avec PICO).
Bref ! X11 plantais. Du coup, j?ai viré dans mon dossier utilisateur 2 fichiers intempestifs :
.xinitrc.save
.xinitrc.swp
et dans les préf, le fichier de préf de X11. X11 a pu redémarrer.
Maintenant j?ai dans mon répertoire un fichier .xinitrc.old. (le fichier xinitrc d?origine est toujours dans /private/etc/X11/xinit)?

Il y a peut-être un fichier d?initialisation ou d?environnment qui fout la « merde » (je me trouve aussi avec un fichier cshrc.swp)?
 
A vue de nez, comme ça, je ne crois pas que ton souci soit lié à X11.
De toutes façons, moi je ne l'utilise pas, j'ai simplement fait:
setenv DISPLAY :0
dans ma config tcsh (l'équivalent existe pour bash si c'est le shell que tu utilises), et j'utilise le terminal après avoir lancé X11 juste pour le serveur Xwindow (pas de Xterm).

Sur l'install, t'as quoi dans le fichier read me, ou dans la doc ?
T'as pas des variables à configurer ?
Ca me fait penser à une erreur que j'ai déja commise, qui est de donner /lib au lieu de lib comme chemin pour des librairies...
Dis nous en un peu plus et on pourra t'aider mieux :)
 
Si je me trompe pas... c'est des binaires qui sont dispo pour Mac que Philippe à téléchargé. Donc les libs nécessaires sont cencées être compilées en statique.
Donc, a mon avis, le package fourni n'est pas le bon.
Essaye de voir avec les sources ...

A+
 
Effectivement, j'ai téléchargé des binaires : il me semblait que c'était moins em? à utiliser que les sources (pour un Unixien fraîchement converti comme mézigue !).
Rien à faire de bon avec ce que j?ai ?
Au fait, ça veut dire quoi « compiler en statique » ?

Autrement, voilà ce que le package affiche :
Archive.bom, Archive.pax.gz, Info.plist, PkgInfo
ainsi que des Ressources.
Pour le read-me, je joins le texte (c?est mieux qu?une longue explication). Il demande de paramétrer une variable d'environnement MANPATH. Ce que j'avais dû faire (mais j'ai peut-être « foiré » à ce niveau).

A+

Phil
 
je viens de lire le readme.doc, et je vois rien de bien méchant...
La variable MANPATH, bien qu'importante (c'est la doc) n'est pas indispensable.
Par contre la variable PATH, elle, est importante.
Compiler en statique ou en dynamique, c'est juste deux manières d'installer. Dans la première (statique) tu construis le programme et les librairies dont il a besoin comme un seul morceau. C'est quelque part plus facile, mais ça fait un exécutable plus gros, et tu dupliques des librairies car tu risque d'en avoir plusieurs exemplaires sur ta machine au lieu d'un seul, qui serait appelé au lancement de l'application (dynamique). Pas forcément un souci, donc. Si je dis des bétises, Kabutop me corrigera...

Par contre, regarde ta variable PATH au cas où elle serait mal configurée.
elle devrait être à: /usr/local/bin
de même, DYLD_LIBRARY_PATH doit pointer vers /usr/local/lib
Si tu utilises tcsh, fais juste setenv pour voir toutes tes variables globales, ou bien echo $PATH puis echo $DYLD_LIBRARY_PATH et dis nous ce que ça dit...

De plus, t'as essayé ce que te conseillait Kabutop au début ?
find / -name libgdraw.1.dylib
Ca permettrait d'y voir plus clair... idem, dis nous le résultat.

Bon courage ;)
 
  • J’aime
Réactions: kabutop
On va peut-être y voir plus clair !

- Pour la variable PATH, je n'arrive pas à la localiser (et donc encore moins à la lire), elle n'est pas dans /usr/local/bin

- En faisant setenv j'ai entre autres ça :

SECURITYSESSIONID=20ffc0
HOME=/Users/philippeguerin
SHELL=/bin/bash
USER=philippeguerin
PATH=/sw/bin:/sw/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin
__CF_USER_TEXT_ENCODING=0x1F5:0:1
(?)
MANPATH=/sw/share/man:/usr/share/man:/usr/X11R6/man
INFOPATH=/sw/share/info:/sw/info:/usr/share/info
PERL5LIB=/sw/lib/perl5:/sw/lib/perl5/darwin
[localhost:~] philippe%

- Pour les commandes echo $PATh et echo $DYLD_LIBRARY_PATH, j'ai :
/sw/bin:/sw/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin
et :
tcsh: DYLD_LIBRARY_PATH: Undefined variable.

- Pour la commande conseillé par Kabuko : find / -name libgdraw.1.dylib, cela donne une longue liste (assez vexante !) de « Permission denied »
find: /.Trashes: Permission denied
find: /Library/Logs/Console/philippe: Permission denied
etc.

Curieux qu'il me mette encore SHELL=/bin/bash alors que je suis repassé en tcsh dans les préfs de Terminal.
Autrement, il y a certainement un pb de variable ou celle-ci n'est pas repérée (Undefined variable).

Merci de vos conseils (patients !)

A +
 
iManu a dit:
[...] Pas forcément un souci, donc. Si je dis des bétises, Kabutop me corrigera...
C'est exactement ca ;)

Par contre, je ne pense pas que cela vienne d'un problème de PATH. Il cherche /lib... Si il cherchait la lib, sans avoir le chemin complet, effectivement le problème pourrait être celui du PATH. Mais dans le cas ou le chemin de la lib est absolu, il n'y a pas besoin.
 
Philippe Guérin a dit:
On va peut-être y voir plus clair !
- Pour la commande conseillé par Kabuko : find / -name libgdraw.1.dylib, cela donne une longue liste (assez vexante !) de « Permission denied »
find: /.Trashes: Permission denied
find: /Library/Logs/Console/philippe: Permission denied
etc.
Il faut la lancer en root... sinon effectivement, comme tu n'as pas les droits pour accéder au répertoire, ca hurle :D
Reteste en root voir si tu trouves la lib. Si tu ne la trouves pas... c'est pas la peine de chercher plus loin. Si tu la trouves, tu la mets dans le repertoire de lib dispo dans echo $PATH.

A+
 
On approche ;)

Philippe Guérin a dit:
On va peut-être y voir plus clair !

- Pour la variable PATH, je n'arrive pas à la localiser (et donc encore moins à la lire), elle n'est pas dans /usr/local/bin
Elle n'a pas à être quelque part...
Par contre, tu vois le contenu de cette variable avec le setenv:

...
PATH=/sw/bin:/sw/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin
...
Remarque: setenv t'indique, dans un shell tcsh, toutes tes variables globales.
Faire un echo $PATH c'est juste pour afficher (echo) le contenu ($) de la variable globale PATH, ex:
- Pour les commandes echo $PATh , j'ai :
/sw/bin:/sw/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin

tcsh: DYLD_LIBRARY_PATH: Undefined variable.
Oui, là tu as un souci, ta variable n'est pas définie.
Tu remarques aussi que /usr/local n'est pas défini dans ta variable PATH, or elle devrait l'être (cf le ReadMe.doc).

- Pour la commande conseillé par Kabuko : find / -name libgdraw.1.dylib, cela donne une longue liste (assez vexante !) de « Permission denied »
Comme indiqué par Kabutop, tu peux passer en root et relancer la commande.
Si tu n'as pas activé l'utilisateur root, tu passes par sudo:
Bloc de code:
sudo find / -name libgdraw.1.dylib
Le terminal va te demander ton mot de passe administrateur, et hop...
C'est à mon avis le plus important à faire.

Ce qui suit est accessoire...
Curieux qu'il me mette encore SHELL=/bin/bash alors que je suis repassé en tcsh dans les préfs de Terminal.
Pas complètement.
En fait, ton shell par défaut est toujours bash (ce qui se voit par le setenv), mais dans tes prefs de terminal, tu lances automatiquement un tcsh (sur le bash en quelque sorte).
La manière 'propre' de définir ton shell par défaut est d'ouvrir l'application /utilitaires/Gestionaire NetInfo (ou NetInfo Manager en anglais). A ce niveau là, dans la seconde colonne, tu as une balise users, qui va t'afficher la liste des utilisateurs de ton système (c'est surprenant, il y en a plus que ce à quoi tu t'attendais ;). Si tu cliques sur ton nom (philippe?) tu vois apparaitre une série 'propriété' - 'valeur(s)'. Tu vas modifier la propriété shell en remplaçant /bin/bash par /bin/tcsh, et voilou...
Si tout est grisé, il faut d'abord t'authentifier en cliquant sur le cadenas en bas à gauche.

Autrement, il y a certainement un pb de variable ou celle-ci n'est pas repérée (Undefined variable).
Oui, clair... au moins 2 trucs à faire, même si je suis d'accord avec Kabutoc pour dire que c'est pas sûr que tu résolves ton problème comme ça (ça risque de pas suffire).
Comme tu as installé Fink, ça veut dire que tu dois avoir un fichier .tcshrc dans ton dossier utilisateur.
Ce fichier doit contenir:
Bloc de code:
 source /sw/bin/init.csh
(tu me diras si je me trompe...).
Je te conseille de créer un (ou plusieurs) fichier(s) qui contienne tes variables d'environnement.
Chez moi, j'ai crée un dossier tcsh_conf, qui contient des fichiers d'initialisation, ces fichiers étant 'sourcés' au démarrage du shell:

Bloc de code:
[2:47pm manu ~]% cat .tcshrc 
# init fink 
 source /sw/bin/init.csh
# personalisation de la config
 source ~/tcsh_conf/environnement
 source ~/tcsh_conf/path
# 
[2:48pm manu ~]% cd tcsh_conf/
[2:48pm manu ~/tcsh_conf]% cat environnement 
# variables globales
 setenv ABSOFT /Applications/Absoft
 setenv PRINTER E6-laser
 setenv HOST E6-TiBook
 setenv DISPLAY :0
 setenv LSCOLORS gxfxcxdxbxegedabagacad
 setenv DYLD_LIBRARY_PATH "$ROOTSYS/lib"
# autres
#
 setenv TERM xterm-color
 set prompt="%{\033[0;32m%}[%{\033[33m%}%t %n %{\033[33m%}%{\033[33m%}%c3%{\033[32m%}]%{\033[0m%}%# "
#
 set autolist
 set complete = enhance
#
 stty cs8 -istrip -parenb
 set dspmbyte = "utf8"
#
#
[2:48pm manu ~/tcsh_conf]% cat path 
# Les autres paths
 set path = ( $ROOTSYS/bin $path )
 set path = ( $ABSOFT/bin $path ) 
 set path = ( /usr/local $path ) 
 set path = ( /Users/manu/Documents/UnixPerso/scripts $path ) 
 set path = ( /opt/ibmcmp/xlf/8.1/bin $path ) 
#
[2:48pm manu ~/tcsh_conf]%

Il est clair que tu n'as pas besoin de toutes les variables que j'ai définies, mais il te faut au moins faire un copier/coller de ce qui est indiqué dans le readme, par exemple dans le ficher environnement:

Bloc de code:
setenv PATH ${PATH}:/usr/local/bin
        if ( "$MANPATH" == "" ) then
            setenv MANPATH /usr/local/man
        else
            setenv MANPATH ${MANPATH}:/usr/local/man
        endif
	   setenv DYLD_LIBRARY_PATH /usr/local/lib

L'intérêt:
Au démarrage de ton shell, tcsh 'cherche' un .tcshrc, et l'execute.
Dans ton cas, il va 'sourcer' successivement les fichiers:
/sw/bin/init.csh
~/tcsh_conf/environnement
~/tcsh_conf/path
si tu fais un setenv, tu vois qu'il a pris en compte le contenu de ces fichiers (par exemple dans PATH, tu auras entre autres /usr/local)
Ce qui est bien en pratique, c'est que le dossier tcsh_conf et les fichiers à l'intérieur sont visibles, et que tu peux les éditer facilement, pour rajouter des variables globales si tu en as besoin.

C'est des conseils, un peu en marge de ton problème, mais moi ça m'aide pas mal au quotidien...
J'espère que c'est à peu près clair, dis moi...
Je ne m'exprime pas forcément dans un 'pur' langage unixien, mais Kabutop est là pour relire ;)
 
J'aurais dû m'en douter pour le root !
Là il a trouvé libgdraw.1.dylib dans une partition d?un disque dur externe me servant de sauvegarde! En fait j'avais fait une sauvegarde récemment de tout un tas de choses y compris le fichier usr (ce n'est peut-être pas recommandé !).
Les lib ont bien été copiées, mais ? curieusement ? elles ont disparu du répertoire d?origine (sauf libgdraw.la et libgunicode.la).
Je rétablis ça donc en les mettant au bon endroit, dans un premier temps.

Autre point important, je ne trouve pas de fichier .tcshrc
Je vais le (re)créer. Faut-il y mettre en plus de la ligne que tu recommandes (source /sw/bin/init.csh) les 2 lignes suivantes ?
setenv PATH /usr/X11R6/bin :$PATH
setenv MANPATH /usr/X11R6/man :$MANPATH

Pour les autres réglages, je ne peux pas dire que cela me soit encore très clair, mais je règle d'abord ce problème avant de voir plus loin.

A +
:siffle:
 
  • J’aime
Réactions: kabutop
Si tu as trouvé la lib... c'est déjà bon signe ;)
Donc pour faire simple et voir si ca marche rapidement :
Tu vas créer le fameux /lib : mkdir /lib
Puis tu copies la lib dans ce repertoire (cp malib /lib) afin que ca soit exactement comme le otool -L
Si ca marche... on verra comment faire ca plus proprement.
Si ca marche pas... on va voir pourquoi :D
Courage !
 
Les choses avancent à grands pas !

Si j'ai bien compris, puisque terminal cherche dans le répertoire /lib, on ne va pas le contrarier. (C?est ce que j'appelle de la sagesse : se plier aux événements pour mieux les contrôler !)

:zen:

J'ai donc copier ces libs comme tu le préconises (curieusement, je viens de m'en rendre compte, il s'agit d'alias, j'ai donc copié l'alias + son original dans /lib).
Et j'ai pu démarrer l'application dans X11.
En ouvrant une fonte, le xterm affiche ceci :

Xlib: extension "XInputExtension" missing on display ":0.0".

Message d?erreur ? Mais, bon ! ça semble pour le reste bien marcher ! En revanche l'aide n?a pas dû se charger ; j'irai voir sur sourceforge.net si je peux la trouver.

Il me reste évidemment à paramétrer qq fichiers (dont le fichier .tcshcr que je n?ai pas encore recréer).

A + (et merci !).
 
Philippe Guérin a dit:
Les choses avancent à grands pas !
...
Xlib: extension "XInputExtension" missing on display ":0.0".
...
En revanche l'aide n?a pas dû se charger
...

Les 2 devraient pouvoir se régler comme indiqué, en faisant un .tcshrc qui appelle des fichiers de config.
Si tu n'as pas l'aide, c'est que la variable MANPATH n'est pas configurée (cf le readme.doc).
De même tu dois configurer la variable DISPLAY

Mais ça vient ;)