10.11 El Capitan exiftool inopérant sur un de mes ordinateurs

soiziclecros

Membre expert
Club iGen
23 Janvier 2011
1 043
61
Lyon
Bonjour

J'utilise sans problème exiftool sur mon MacBook Pro.
Je l'ai installé aussi sur mon mini , installation correcte et reboot, le terminal dit qu'il ne connait pas la commande exiftool.
J'ai le même shell (bash) sur les deux ordi, la même version de système,.
Le téléchargement a été fait sur le site de Phil Harvey, version 10.23

Pouvez-vous m'aider ?
merci
 
Bonjour soiziclecros

Le binaire s'installe at: /usr/local/bin/exiftool > il te suffit de passer une commande du type :
Bloc de code:
sudo find /usr -name 'exiftool' -print
et si le binaire est bien installé > tu devrais obtenir le retour :
Bloc de code:
/usr/local/bin/exiftool

Par ailleurs, un simple :
Bloc de code:
exiftool
dans une fenêtre du «Terminal» et ↩︎ > tu obtiens l'affichage du man déroulant :
Bloc de code:
EXIFTOOL(1)           User Contributed Perl Documentation

--------------------​

Au cas où aucun exiftool ne se retrouverait at: /usr/local/bin > quel est l'OS de ton mini ? «El Capitan» ? Si tu fais depuis ta session un :
Bloc de code:
csrutil status
dans une fenêtre du «Terminal» > est-ce que tu obtiens un :
Bloc de code:
System Integrity Protection status: enabled.
ou non ? - Je ne pense pas que la localisation /usr/local soit protégée, mais si le SIP était activé > tu pourrais rebooter sur ta «Recovery HD» > dans son «Terminal» désactiver le SIP par :
Bloc de code:
csrutil disable
> re-démarrer sur ton OS > ré-installer exiftool et tester.

--------------------
Si exiftool est bien à sa place mais que tu ne puisses pas l'appeler directement, teste une commande commençant par :
Bloc de code:
/usr/local/bin/exiftool
> si ça passe > ce serait que le répertoire de binaires /usr/local/bin ne fait pas partie de ta variable d'environnement $PATH dans l'OS de ton mini...
 
Dernière édition par un modérateur:
voilà les résultats (capitan dernière version sur mes deux mac)


miniphot:~ soizic$ sudo find /usr -name 'exiftool' -print

Password:

/usr/local/bin/exiftool

miniphot:~ soizic$ exiftool

-bash: exiftool: command not found

miniphot:~ soizic$ csrutil status

System Integrity Protection status: enabled.

miniphot:~ soizic$

Sur le portable où tout marche j'ai aussi le SIP enabled. (Je l'avais fait sauter grâce à toi mais l'upgrade a dû remettre de l'ordre sans me demander la permission !
 
suite :

miniphot:~ soizic$ /usr/local/bin/exiftool

-bash: /usr/local/bin/exiftool: Permission denied


J'enlève le SIP ?, pas trop sure puisqu'il y est aussi sur l'autre…
$PATH n'évoque hélas qu'un trop lointain souvenir
 
Tu peux rajouter le chemin au répertoire de binaires /user/local/bin à ta variable d'environnement $PATH par la commande :
Bloc de code:
export PATH=$PATH:/usr/local/bin

Suite à quoi une commande informative :
Bloc de code:
echo $PATH
te retourne les adresses de ta variable d'environnement $PATH, listées en une seule chaîne avec un : comme séparation (avant et après une adresse) > en te crevant les yeux > tu devrais arriver à déceler une adresse =>
Bloc de code:
:/usr/local/bin:
et alors tu sais que ton édition a fonctionné.

Si tu tapes seulement :
Bloc de code:
exiftool
et ↩︎ pour valider > tu devrais avoir l'affichage du man d'exiftool.

Il faut peut-être utiliser sudo pour certaines commandes, non ? > genre :
Bloc de code:
sudo exiftool -----

Sinon, tu peux régler le cas du répertoire /usr/local (et de ses dépendances) qui doit avoir un user=root et un group=wheel > par la commande :
Bloc de code:
sudo chown -R soizic:admin /usr/local
avec frappe du mot-de-passe admin à l'aveugle. Personnellement, j'ai fait ça sur ce sous-répertoire. Il faudra peut-être que tu désactives le SIP avant si la commande est déniée, ou si un :
Bloc de code:
ls -al /usr/local
ne te ressort pas après une colonne de soisic admin sur le dossier parent et ses dépendances.

[Tu dois me trouver exagérément abstrus et dépourvu de ma rhétorique ordinaire > c'est que je suis sur le départ et que je vais être présumablement hors-ligne jusqu'à jeudi soir > tu subis donc ici une version télégraphique du maco...]
 
Super j'ai mis
sudo chown -R soizic:admin /usr/local
et tout fonctionne.
Bonne retraite silencieuse et reviens nous en pleine forme littéraire !
 
Tiens ça me rappelle un problème que j'avais vu y'a quelque temps avec Homebrew où j'avais eu un soucis de permissions par rapport au dossier /usr/local et la je l'ai re-eu. Je ne suis pas sur, mais j'ai l'impression que ce serait lié à un changement de mot de passe.
 
Bonne retraite silencieuse et reviens nous en pleine forme littéraire !
Hé ! Hé ! J'ai réussi à me faufiler dans un réseau et je peux donc ré-exercer ma prose en longitude...​

$PATH n'évoque hélas qu'un trop lointain souvenir

Disons en gros que lesdites « variables d'environnement » sont des préférences à géométrie variable touchant l'usage du Système d'OS X par l'utilisateur. Parmi ces préférences, la variable d'environnement $PATH ("chemin de l'utilisateur connecté") est une liste d'adresses à des répertoires (graphiquement invisibles) de binaires UNIX, exécutables en ligne de commande, que l'utilisateur définit comme ses dossiers de référence automatique. La variable $PATH va un peu jouer le rôle du «Trousseau de session» en ce qui concerne ces exécutables : elle évite à l'utilisateur qui veut appeler un utilitaire dans une fenêtre du «Terminal» d'avoir chaque fois à renseigner le chemin absolu à ce programme (genre : /usr/local/bin/exiftool) en tête d'une commande - ce qui serait suprêmement malcommode, par la longueur de la saisie mais aussi par l'effort de mémoire impliqué. Si je veux passer, par exemple, une commande diskutil : "il_est_où_?" le binaire diskutil > que je puisse mentionner son chemin absolu ?

Je ne vais pas m'amuser à chaque commande à commencer par un : whereis_machin pour savoir dans quel répertoire il gîte, afin de pouvoir mentionner un chemin absolu. Si, au contraire, tel et tel répertoire à utilitaires (comme /bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin etc.) sont listés par leurs adresses absolues dans un fichier-référence de l'utilisateur (genre : ~/.bash_profile) > alors il suffira désormais dans un shell bash du «Terminal» d'énoncer directement l'utilitaire en tête d'une commande (genre : diskutil, ou chown etc.) et le chemin absolu à ce binaire sera établi en coulisse. Un certain nombre d'adresses à des répertoires canoniques sont référencées a priori dans la variable $PATH de l'utilisateur, mais ce dernier peut rajouter des adresses, comme ici pour toi : /usr/local/bin qui paraissait faire défaut. Mais il est possible aussi de pointer vers n'importe quel dossier importé quodlibétiquement dans le volume de l'OS (par exemple à des dossiers d'utilitaires contenus dans le paquetage des Command Line Developer Tools > et désormais les binaires en question seront appelables directement dans des commandes.

La manière la plus commode (de mon point de vue) pour opérer ces ajouts d'adresses à la variable $PATH consiste dans la commande :
Bloc de code:
export PATH=$PATH:[chemin_absolu_au_dossier_de_binaires]

ça me rappelle un problème que j'avais vu y'a quelque temps avec Homebrew où j'avais eu un soucis de permissions par rapport au dossier /usr/local

Tu as raison : «El Capitan» est un OS qui fonctionne tout en mettant a priori plein de bâtons dans les roues de l'utilisateur. L'application «Homebrew», par exemple, est bien commode pour installer des utilitaires : il suffit de passer une commande de type :
Bloc de code:
brew install [NOM_DU_PROGRAMME]
et l'installation va s'opérer automatiquement. Le problème étant que ce programme affectionne la localisation /usr/local comme destination d'installation et que si ce sous-dossier local (et ce qui en relève) n'a pas les permissions pemettant cet usage (par exemple si user=root & group=wheel)> alors une rectification s'impose à user=me & group=admin (par exemple) pour débloquer cet espace d'atterrissage...

J'ai l'impression que c'était un problème additionnel pour soiziclecros et qu'un petit chown a rétabli la situation à son avantage...​
 
Dernière édition par un modérateur: