2017-08-22 4 views
4

Parce que j'ai eu quelques problèmes avec Ansible (je suis sur mac) qui semblait être corrigé dans la dernière version dev aujourd'hui, j'ai désinstallé ansible via pip (sudo pip uninstall ansible) et réinstallé la dernière version dev du github repo en utilisant l'installation classique. . méthode py, qui semblait mettre fin avec succès (full output herePourquoi est-ce que je ne peux pas trouver ansible quand je l'installe en utilisant setup.py?

alors j'ai essayé de l'utiliser:

$ ansible --version 
-bash: ansible: command not found 
$ which ansible 
$ 

J'ai vérifié où il est installé à partir de la sortie complète I lien ci-dessus, je trouve qu'il est installé. dans /usr/local/lib/python2.7/site-packages, et en effet là-bas, je trouve un œuf:

$ ls -l /usr/local/lib/python2.7/site-packages | grep ansible 
drwxr-xr-x 4 root admin  136 Aug 22 16:33 ansible-2.4.0-py2.7.egg 

Quand je commence Python et vérifiez le dossier site-packages que je trouve un autre dossier:

>>> import site; print site.getsitepackages()[0] 
/usr/local/Cellar/python/2.7.13_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages 

mais qui est un lien symbolique dans le même dossier:

$ ls -l /usr/local/Cellar/python/2.7.13_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages 
lrwxr-xr-x 1 hielke admin 54 Aug 13 22:36 /usr/local/Cellar/python/2.7.13_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages -> ../../../../../../../../../lib/python2.7/site-packages 

donc je suppose que la problème est qu'aucun lien symbolique est créé pour le package ansible dans /usr/local/bin/. Mais je ne sais pas comment je pourrais créer un tel lien symbolique et pourquoi il n'apparaîtrait pas en premier lieu.

Est-ce que quelqu'un sait comment je peux aller de l'avant? Tous les conseils sont les bienvenus!

+0

Pouvez-vous montrer votre variable d'environnement, je ne peux pas la reproduire. – aristotll

+0

@aristotll - Je ne suis pas sûr de la variable d'environnement que vous voulez dire, mais pour être sûr, voici un plein de 'os.environ': https://pastebin.com/b0AuuAaV Est-ce que cela vous dit quelque chose? – kramer65

+0

Pouvez-vous montrer le résultat de 'quel python'? – aristotll

Répondre

2

Lorsque vous invoquez ansible à partir du shell, bash va chercher dans votre $PATH un fichier nommé ansible qui est exécutable. Ce n'est peut-être pas le seul problème, mais c'est la cause immédiate de l'erreur que vous voyez. Le fichier .egg lui-même n'est pas un exécutable, c'est juste un fichier utilisé pour distribuer le code.

Si l'installation d'Ansible a été correctement installée, vous devriez pouvoir la trouver en utilisant locate ou l'OSX Finder GUI. Le nom doit correspondre exactement, sans extensions de fichier. Vous trouverez probablement aussi ansible-connection, ansible-console, etc dans le même endroit où vous trouvez le ansible exécutable. Si vous le trouvez, génial! Testez-le et ajoutez ce répertoire à votre $PATH dans un terminal comme ceci:

export PATH=$PATH:/path/to/ansible 

/path/to/ansible est le répertoire où vous avez trouvé les executables.Cette modification de la variable $PATH est temporaire et disparaîtra lorsque vous fermez votre shell. Si vous pouvez maintenant exécuter ansible à partir de bash, vous pouvez rendre le changement permanent en ajoutant cette exportation à la fin de votre fichier $HOME/.bash_profile, ou en ajoutant une règle dans /etc/paths.d (recommandé par Apple). Voir plus sur comment exactement faire ces here si vous n'êtes pas familier avec eux.

Maintenant, si ce n'est pas le problème et vous ne pouvez pas trouver l'exécutable ansible, alors l'installation elle-même est votre problème. Vous pouvez également essayer d'utiliser un environnement virtuel (si vous l'avez installé) pour vous assurer que la version que vous tirer de github n'est pas cassé:

git clone https://github.com/ansible/ansible.git 
cd ansible 
virtualenv venv 
source venv/bin/activate 
pip install . 
which ansible 

A ce jour, me donne le dessus d'un travail ansible installer.

+0

Je ne connaissais pas la commande 'locate', et c'était très utile. Il m'a trouvé le fichier exécutable suivant que je peux appeler manuellement pour exécuter ansible: '/ usr/local/Cellier/python/2.7.13_1/Frameworks/Python.framework/Versions/2.7/bin/ansible'.Dois-je maintenant créer manuellement un lien symbolique vers ce fichier dans '/ usr/local/bin /', dois-je ajouter le dossier '/usr/local/Cellar/python/2.7.13_1/Frameworks/Python.framework/Versions/2.7/ bin/'sur mon chemin, ou avez-vous encore une autre suggestion? – kramer65

+0

Vous pouvez créer manuellement le lien symbolique [comme si] (http://osxdaily.com/2015/08/06/make-symbolic-links-command-line-mac-os-x/), ou vous pouvez ajouter le Dossier '/ usr/loca/Cellar /.../ 2.7/bin' vers votre variable' $ PATH' comme je l'ai mentionné dans le post. Je recommanderais la deuxième approche si vous utilisez pip pour installer plus que simplement ansible, mais le lien symbolique est bien si vous voulez seulement ansible. – rnorris

+0

Génial, cela a résolu, plus j'ai appris une autre chose ou deux. Merci! – kramer65

0

Je suggère de désinstaller Ansible et réinstaller à l'aide pip selon the method suggested in the Ansible docs:

Ou si vous cherchez la dernière version de développement:

pip install git+https://github.com/ansible/[email protected]

Si vous installez sur OS X Mavericks, vous pouvez rencontrer du bruit de votre compilateur. Une solution consiste à effectuer les opérations suivantes:

$ sudo CFLAGS=-Qunused-arguments CPPFLAGS=-Qunused-arguments pip install ansible

Les lecteurs qui utilisent virtualenv peuvent également installer Ansible sous virtualenv, mais nous vous recommandons de ne pas se soucier et il suffit d'installer Ansible au niveau mondial. N'utilisez pas easy_install pour installer Ansible directement.

+0

Merci pour les idées! Votre première suggestion 'pip install git..' s'exécute sans problèmes, mais après la commande' ansible --version' me donne toujours '-bash: ansible: commande non trouvée', même si je peux' importer ansible' depuis Python . Après l'avoir désinstallé (encore avec succès) j'ai essayé votre deuxième suggestion, qui s'est terminée avec succès, mais m'a aussi donné un '-bash: ansible: command not found' même si' import ansible' de Python fonctionnait aussi parfaitement. Je suppose que c'est juste un lien symbolique depuis '/ usr/local/bin /' est manquant et je n'ai aucune idée comment le créer. Une idée? – kramer65

+0

@ kramer65 Avez-vous essayé de l'exécuter à partir d'un nouveau shell après l'installation? Ou si vous installez dans un virtualenv, désactivez-le et activez-le à nouveau, ou exécutez-le directement depuis le sous-répertoire binaires de virtualenv ('Scripts' sur Windows,' bin' sinon). – taleinat