it-swarm.com.ru

Почему я не могу найти ansible, когда я устанавливаю его с помощью setup.py?

Поскольку у меня были некоторые проблемы с Ansible (я на Mac), который, похоже, был исправлен в последней версии для разработчиков сегодня, я удалил ansible через pip (Sudo pip uninstall ansible) и переустановил последнюю версию dev из репозитория github, используя классический метод setup.py , который, казалось, закончился успешно ( полный вывод здесь

Итак, я попытался использовать его:

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

Я проверил, где это установлено. Из полного вывода, на который я ссылался выше, я обнаружил, что он установлен в /usr/local/lib/python2.7/site-packages, и действительно там я нахожу Egg:

$ 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

Когда я запускаю Python и проверяю папку site-packages, я нахожу другую папку:

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

но это символическая ссылка на ту же папку:

$ 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

Таким образом, я предполагаю, что проблема в том, что не создается символическая ссылка на пакет ansible в /usr/local/bin/. Но я не уверен, как я мог создать такую ​​символическую ссылку и почему это не появилось бы во-первых.

Кто-нибудь знает, как я могу двигаться вперед отсюда? Все советы приветствуются!

4
kramer65

Когда вы вызываете ansible из командной консоли, bash будет искать в вашем $PATH файл с именем ansible, который является исполняемым. Возможно, это не единственная проблема, но это непосредственная причина ошибки, которую вы видите. Сам файл .Egg не является исполняемым файлом, это просто файл, используемый для распространения кода.

Если ansible был установлен правильно, вы сможете найти его с помощью locate или OSX Finder GUI. Имя должно точно совпадать, без расширений файла. Вы, вероятно, также найдете ansible-connection, ansible-console и т.д. Там же, где вы найдете исполняемый файл ansible. Если вы найдете это, отлично! Протестируйте его и добавьте этот каталог в ваш $PATH в терминале следующим образом:

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

Где /path/to/ansible - это каталог, где вы нашли исполняемые файлы. Это изменение переменной $PATH является временным и исчезнет, ​​когда вы закроете Shell. Если вы теперь можете запустить ansible из bash, то вы можете сделать изменение постоянным, добавив этот экспорт в конец вашего файла $HOME/.bash_profile или добавив правило в /etc/paths.d (рекомендованное Apple). Узнайте больше о том, как именно сделать это здесь , если вы не знакомы с ними.

Теперь, если это не проблема, и вы не можете найти исполняемый файл ansible, то проблема заключается в самой установке. Вы также можете попробовать использовать виртуальную среду (если она у вас установлена), чтобы убедиться, что версия, которую вы извлекаете из github, не сломана:

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

На момент написания вышеизложенного дает мне рабочую установку ansible.

3
rnorris

Я предлагаю удалить Ansible и переустановить его с помощью pip в соответствии с методом, предложенным в документации Ansible :

Или, если вы ищете последнюю версию для разработки:

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

Если вы устанавливаете на OS X Mavericks, вы можете столкнуться с некоторыми помехами от вашего компилятора. Обходной путь должен сделать следующее:

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

Читатели, использующие virtualenv, также могут установить Ansible под virtualenv, хотя мы рекомендуем не беспокоиться об этом, а просто установить Ansible глобально. Не используйте easy_install для прямой установки ansible.

0
taleinat