J'ai l'OpenSSL 9.8 par défaut (Mac OS X 10.6.8) et j'ai décidé d'installer la dernière version (1.0.1) via MacPorts (Sudo port install openssl
).
Ce sont des sorties de console de dont les commandes et whereis :
$ whereis openssl
/usr/bin/openssl
(c'est celui du système par défaut)
$which openssl
/opt/local/bin/openssl
(ceci est installé via MacPorts)
$ openssl version
OpenSSL 1.0.1c 10 May 2012
(il y a la version du port mac dans PATH)
Pourquoi différents chemins sont-ils retournés pour whereis
et which
, et est-ce correct? Est-il possible d'obtenir des résultats égaux?
Dans la page de manuel de whereis
, il est clairement indiqué (souligné par moi):
L'utilitaire whereis vérifie les répertoires binaires standard des programmes spécifiés, en imprimant les chemins de tous ceux qu'il trouve.
Le chemin recherché est la chaîne renvoyée par l'utilitaire sysctl (8) pour la chaîne `` user.cs_path ''
Contrairement à cela, which
est l'outil couramment utilisé pour vérifier l'emplacement d'un fichier binaire pour le chemin de votre utilisateur.
L'utilitaire which prend une liste de noms de commandes et recherche dans le chemin d'accès chaque fichier exécutable à exécuter si ces commandes avaient été réellement appelées .
Cela explique votre différence, puisque /opt/local/bin
n'est pas un chemin "standard" à l'échelle du système. Après tout, MacPorts est une installation totalement facultative, et sysctl
n'a que /usr/bin:/bin:/usr/sbin:/sbin
dans son user.cs_path
par défaut.
En général, tenez-vous en à which
ou which -a
pour trouver un binaire plutôt que d'utiliser whereis
.
Vous pouvez théoriquement changer user.cs_path
par
sysctl -w user.cs_path=/opt/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
mais je ne sais pas si c'est une si bonne idée.