2017-08-22 3 views
4

Da ich einige Probleme mit Ansible hatte (ich bin auf Mac), die anscheinend in der neuesten dev Version behoben wurden, habe ich ansible via pip deinstalliert (sudo pip uninstall ansible) und die neuste dev Version aus dem Github Repo mit dem klassischen Setup neu installiert. . py-Methode, die erfolgreich zu enden schien (full output hereWarum finde ich keine Antwort, wenn ich es mit setup.py installiere?

So dann habe ich versucht, mit es:

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

ich habe, wo er installiert ist, von der vollen Ausgabe ich oben verlinkten ich fand, dass es installiert ist. in /usr/local/lib/python2.7/site-packages, und tatsächlich dort finde ich ein Ei:

$ 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 

Wenn ich Python starten und überprüfen Sie die Website-Pakete Ordner ich einen anderen Ordner:

>>> 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 

aber das ist ein symbolischer Link auf den gleichen Ordner:

$ 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 

Also ich denke, das Problem ist, dass kein Symlink zu dem Ansible-Paket in /usr/local/bin/ erstellt wird. Aber ich bin mir nicht sicher, wie ich einen solchen Symlink erstellen könnte und warum er überhaupt nicht erscheint.

Weiß jemand, wie ich von hier weiterkommen kann? Alle Tipps sind willkommen!

+0

Können Sie Ihre Umgebungsvariable zeigen, ich kann sie nicht reproduzieren. – aristotll

+0

@aristotll - Ich bin mir nicht sicher, welche Umgebungsvariable du meinst, aber um sicher zu sein, hier ist eine vollständige Paste von 'os.environ': https://pastebin.com/b0AuuAaV Gibt dir das irgendwas? – kramer65

+0

Können Sie das Ergebnis von 'which python' anzeigen? – aristotll

Antwort

2

Wenn Sie ansible aus der Shell aufrufen, bash in Ihrem $PATH für eine Datei mit dem Namen ansible suchen, die ausführbar ist. Dies ist möglicherweise nicht das einzige Problem, aber dies ist die unmittelbare Ursache für den Fehler, den Sie sehen. Die .egg Datei selbst ist keine ausführbare Datei, sondern nur eine Datei, die zum Verteilen des Codes verwendet wird.

Wenn ansible korrekt installiert wurde, sollten Sie es finden, indem Sie locate oder die OSX Finder GUI verwenden. Der Name sollte genau übereinstimmen, ohne Dateierweiterungen. Sie werden wahrscheinlich auch finden ansible-connection, ansible-console, etc. an der gleichen Stelle, wo Sie die ansible ausführbare finden. Wenn Sie es finden, großartig! Probieren Sie es aus und fügen Sie das Verzeichnis auf Ihrem $PATH in einem Terminal in etwa so:

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

Wo /path/to/ansible ist das Verzeichnis, in dem Sie die ausführbaren Dateien gefunden.Diese Änderung an der $PATH Variable ist temporär und wird verschwinden, wenn Sie Ihre Shell schließen. Wenn Sie Ansible jetzt von bash aus ausführen können, können Sie die Änderung permanent vornehmen, indem Sie diesen Export an das Ende Ihrer $HOME/.bash_profile-Datei anfügen oder indem Sie eine Regel in /etc/paths.d (von Apple empfohlen) hinzufügen. Sehen Sie mehr darüber, wie genau Sie die here tun können, wenn Sie mit ihnen nicht vertraut sind.

Nun, wenn das nicht das Problem ist und Sie die ansible ausführbare Datei nicht finden können, dann ist die Installation selbst Ihr Problem. Sie könnten auch versuchen, eine virtuelle Umgebung (falls Sie es installiert haben), um sicherzustellen, dass die Version von GitHub sind ziehen nicht gebrochen:

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

Zum Zeitpunkt des Schreibens, das gibt mir über einen Arbeits ansible installieren.

+0

Ich kannte den 'locate' Befehl nicht, und es war sehr hilfreich. Es fand mich die folgende ausführbare Datei, die ich manuell aufrufen kann, um ansible auszuführen: '/ usr/local/Keller/python/2.7.13_1/Frameworks/Python.framework/Versions/2.7/bin/ansible.Soll ich nun manuell einen symbolischen Link zu dieser Datei in '/ usr/local/bin /' erstellen, sollte ich den Ordner '/usr/local/Cellar/python/2.7.13_1/Frameworks/Python.framework/Versions/2.7/ bin/'auf meinen Weg, oder hast du noch einen Vorschlag? – kramer65

+0

Sie können den Symlink entweder manuell erstellen (http://osxdaily.com/2015/08/06/make-symbolic-links-command-line-mac-os-x/), oder Sie können den '/ usr/loca/Cellar /.../ 2.7/bin' Ordner zu Ihrer '$ PATH'-Variable, wie ich im Beitrag erwähnt habe. Ich würde den zweiten Ansatz empfehlen, wenn Sie pip verwenden, um mehr als nur ansible zu installieren, aber der Symlink ist in Ordnung, wenn Sie nur ansible wollen. – rnorris

+0

Ehrfürchtig, das hat es gelöst, und ich habe noch etwas gelernt. Vielen Dank! – kramer65

0

Ich schlage vor, zu deinstallieren ansible und neu zu installieren es pip mit nach the method suggested in the Ansible docs:

Oder wenn Sie sich für die neueste Entwicklungsversion:

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

Wenn Sie die Installation auf OS X Mavericks, können Sie etwas Lärm von Ihrem Compiler finden. Eine Lösung ist folgendes zu tun:

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

Leser, die virtualenv können auch ansible unter virtualenv installieren, obwohl wir nicht darüber würde empfehlen, sich Sorgen zu machen und einfach zu installieren ansible global. Verwenden Sie easy_install nicht, um Ansible direkt zu installieren.

+0

Danke für die Ideen! Dein erster Vorschlag 'pip install git..' läuft ohne Probleme, aber danach gibt mir der Befehl' ansible --version' immer noch '-bash: ansible: command not found', obwohl ich' ansible 'aus Python heraus perfekt importieren kann . Nach der Deinstallation (erneut erfolgreich) habe ich Ihren zweiten Vorschlag, der erfolgreich abgeschlossen wurde, ausprobiert, aber auch einen '-bash: ansible: command not found' gefunden, obwohl' import ansible' aus Python ebenfalls perfekt funktionierte. Ich denke, es ist nur ein Symlink aus '/ usr/local/bin /' fehlt und ich habe keine Ahnung, wie man es erstellt. Irgendeine Idee? – kramer65

+0

@ kramer65 Haben Sie versucht, es nach der Installation von einer neuen Shell auszuführen? Oder wenn Sie in einem virtualenv installieren, deaktivieren Sie es und aktivieren Sie es erneut, oder führen Sie es direkt aus dem Binärverzeichnis des Virtualenv aus ('Scripts' unter Windows, sonst' bin'). – taleinat

Verwandte Themen