ansible をアップグレードしようとしたらエラー
pip install –upgrade ansible でエラー。
pip install --upgrade ansible Collecting ansible Downloading ansible-2.2.1.0.tar.gz (2.5MB) 100% |################################| 2.5MB 404kB/s build/temp.macosx-10.10-x86_64-2.7/_openssl.c:1107:27: error: unknown type name 'EVP_PKEY_CTX' int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *); ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. error: command 'clang' failed with exit status 1 ---------------------------------------- Failed building wheel for cryptography Running setup.py clean for cryptography creating build/temp.macosx-10.10-x86_64-2.7/build/temp.macosx-10.10-x86_64-2.7 clang -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Users/kubotad/.pyenv/versions/2.7.9/include/python2.7 -c build/temp.macosx-10.10-x86_64-2.7/_openssl.c -o build/temp.macosx-10.10-x86_64-2.7/build/temp.macosx-10.10-x86_64-2.7/_openssl.o build/temp.macosx-10.10-x86_64-2.7/_openssl.c:680:30: error: expected function body after function declarator typedef LHASH_OF(CONF_VALUE) Cryptography_LHASH_OF_CONF_VALUE; ^ build/temp.macosx-10.10-x86_64-2.7/_openssl.c:886:5: error: expected ')' DH *DHparams_dup(DH *); ^ /usr/include/openssl/dh.h:164:25: note: expanded from macro 'DHparams_dup' #define DHparams_dup(x) ASN1_dup_of_const(DH,i2d_DHparams,d2i_DHparams,x) ^ Command "/Users/kubotad/.pyenv/versions/app1/bin/python2.7 -u -c "import setuptools, tokenize;__file__='/private/var/folders/1s/14vkt60n019bjctmy0rvg6cm0000gn/T/pip-build-UehdPg/cryptography/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /var/folders/1s/14vkt60n019bjctmy0rvg6cm0000gn/T/pip-bUFtd6-record/install-record.txt --single-version-externally-managed --compile --install-headers /Users/kubotad/.pyenv/versions/app1/include/site/python2.7/cryptography" failed with error code 1 in /private/var/folders/1s/14vkt60n019bjctmy0rvg6cm0000gn/T/pip-build-UehdPg/cryptography/
↑このコマンドは、後で気づいたけど
/Users/kubotad/PycharmProjects/app1/.python-version
というファイルがある場所で実行した。
なので、pyenvの中のpythonバージョンで実行されている。
sudoでやってみても失敗。
sudo pip install --upgrade ansible Password: The directory '/Users/kubotad/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. The directory '/Users/kubotad/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. ^ build/temp.macosx-10.10-x86_64-2.7/_openssl.c:1107:27: error: unknown type name 'EVP_PKEY_CTX' int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *); ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. error: command 'clang' failed with exit status 1 ---------------------------------------- Command "/Users/kubotad/.pyenv/versions/app1/bin/python2.7 -u -c "import setuptools, tokenize;__file__='/private/tmp/pip-build-E79wWq/cryptography/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-wAEgKs-record/install-record.txt --single-version-externally-managed --compile --install-headers /Users/kubotad/.pyenv/versions/app1/include/site/python2.7/cryptography" failed with error code 1 in /private/tmp/pip-build-E79wWq/cryptography/
↓このコマンドは多分ホームディレクトリで実行した。
% pip install --upgrade ansible Downloading/unpacking ansible Downloading ansible-2.2.1.0.tar.gz (2.5MB): 2.5MB downloaded Running setup.py (path:/private/var/folders/1s/14vkt60n019bjctmy0rvg6cm0000gn/T/pip_build_kubotad/ansible/setup.py) egg_info for package ansible changing mode of /Users/kubotad/.pyenv/versions/2.7.9/bin/ansible-pull to 755 changing mode of /Users/kubotad/.pyenv/versions/2.7.9/bin/ansible-vault to 755 Running setup.py install for PyYAML checking if libyaml is compilable clang -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Users/kubotad/.pyenv/versions/2.7.9/include/python2.7 -c build/temp.macosx-10.10-x86_64-2.7/check_libyaml.c -o build/temp.macosx-10.10-x86_64-2.7/check_libyaml.o build/temp.macosx-10.10-x86_64-2.7/check_libyaml.c:2:10: fatal error: 'yaml.h' file not found #include <yaml.h> ^ 1 error generated. libyaml is not found or a compiler error: forcing --without-libyaml (if libyaml is installed correctly, you may need to specify the option --include-dirs or uncomment and modify the parameter include_dirs in setup.cfg) Found existing installation: setuptools 7.0 Uninstalling setuptools: Successfully uninstalled setuptools Running setup.py install for pycrypto Traceback (most recent call last): File "<string>", line 1, in <module> File "/Users/kubotad/.pyenv/versions/2.7.9/lib/python2.7/site-packages/setuptools/__init__.py", line 10, in <module> from six.moves import filter, map ImportError: No module named six.moves Complete output from command /Users/kubotad/.pyenv/versions/2.7.9/bin/python2.7 -c "import setuptools, tokenize;__file__='/private/var/folders/1s/14vkt60n019bjctmy0rvg6cm0000gn/T/pip_build_kubotad/pycrypto/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/1s/14vkt60n019bjctmy0rvg6cm0000gn/T/pip-ijhgF2-record/install-record.txt --single-version-externally-managed --compile: Traceback (most recent call last): File "<string>", line 1, in <module> File "/Users/kubotad/.pyenv/versions/2.7.9/lib/python2.7/site-packages/setuptools/__init__.py", line 10, in <module> from six.moves import filter, map ImportError: No module named six.moves ---------------------------------------- Cleaning up... Command /Users/kubotad/.pyenv/versions/2.7.9/bin/python2.7 -c "import setuptools, tokenize;__file__='/private/var/folders/1s/14vkt60n019bjctmy0rvg6cm0000gn/T/pip_build_kubotad/pycrypto/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/1s/14vkt60n019bjctmy0rvg6cm0000gn/T/pip-ijhgF2-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /private/var/folders/1s/14vkt60n019bjctmy0rvg6cm0000gn/T/pip_build_kubotad/pycrypto Storing debug log for failure in /Users/kubotad/.pip/pip.log
~% pip install six Downloading/unpacking six Downloading six-1.10.0-py2.py3-none-any.whl Installing collected packages: six Successfully installed six Cleaning up...
~% pip install setuptools Requirement already satisfied (use --upgrade to upgrade): setuptools in ./.pyenv/versions/2.7.9/lib/python2.7/site-packages Cleaning up... [kubotad@Kubotads-iMac](19:34:07)~%
Ansibleの修復
関連パッケージを変えたので試しに、ansible のバージョンを確認したらエラー。壊れた。
~% ansible --version ERROR! Unexpected Exception: No module named markupsafe the full traceback was: Traceback (most recent call last): File "/Users/kubotad/.pyenv/versions/2.7.9/bin/ansible", line 80, in <module> from ansible.cli.adhoc import AdHocCLI as mycli File "/Users/kubotad/.pyenv/versions/2.7.9/lib/python2.7/site-packages/ansible/cli/adhoc.py", line 28, in <module> from ansible.executor.task_queue_manager import TaskQueueManager File "/Users/kubotad/.pyenv/versions/2.7.9/lib/python2.7/site-packages/ansible/executor/task_queue_manager.py", line 29, in <module> from ansible.executor.play_iterator import PlayIterator File "/Users/kubotad/.pyenv/versions/2.7.9/lib/python2.7/site-packages/ansible/executor/play_iterator.py", line 30, in <module> from ansible.playbook.block import Block File "/Users/kubotad/.pyenv/versions/2.7.9/lib/python2.7/site-packages/ansible/playbook/__init__.py", line 27, in <module> from ansible.playbook.play import Play File "/Users/kubotad/.pyenv/versions/2.7.9/lib/python2.7/site-packages/ansible/playbook/play.py", line 27, in <module> from ansible.playbook.base import Base File "/Users/kubotad/.pyenv/versions/2.7.9/lib/python2.7/site-packages/ansible/playbook/base.py", line 29, in <module> from jinja2.exceptions import UndefinedError File "/Users/kubotad/.pyenv/versions/2.7.9/lib/python2.7/site-packages/jinja2/__init__.py", line 33, in <module> from jinja2.environment import Environment, Template File "/Users/kubotad/.pyenv/versions/2.7.9/lib/python2.7/site-packages/jinja2/environment.py", line 13, in <module> from jinja2 import nodes File "/Users/kubotad/.pyenv/versions/2.7.9/lib/python2.7/site-packages/jinja2/nodes.py", line 19, in <module> from jinja2.utils import Markup File "/Users/kubotad/.pyenv/versions/2.7.9/lib/python2.7/site-packages/jinja2/utils.py", line 531, in <module> from markupsafe import Markup, escape, soft_unicode ImportError: No module named markupsafe [kubotad@Kubotads-iMac](19:34:36)~%
% pip install markupsafe Downloading/unpacking markupsafe Downloading MarkupSafe-0.23.tar.gz Cleaning up... setuptools must be installed to install from a source distribution Storing debug log for failure in /Users/kubotad/.pip/pip.log
% pip install -U pip Downloading/unpacking pip from https://pypi.python.org/packages/b6/ac/7015eb97dc749283ffdec1c3a88ddb8ae03b8fad0f0e611408f196358da3/pip-9.0.1-py2.py3-none-any.whl#md5=297dbd16ef53bcef0447d245815f5144 Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB): 1.3MB downloaded Installing collected packages: pip Found existing installation: pip 1.5.6 Uninstalling pip: Successfully uninstalled pip Successfully installed pip Cleaning up... [kubotad@Kubotads-iMac](19:39:23)~% [kubotad@Kubotads-iMac](19:39:24)~% [kubotad@Kubotads-iMac](19:39:24)~% pip install setuptools Requirement already satisfied: setuptools in ./.pyenv/versions/2.7.9/lib/python2.7/site-packages Requirement already satisfied: six>=1.6.0 in ./.pyenv/versions/2.7.9/lib/python2.7/site-packages (from setuptools) Collecting appdirs>=1.4.0 (from setuptools) Using cached appdirs-1.4.0-py2.py3-none-any.whl Collecting packaging>=16.8 (from setuptools) Using cached packaging-16.8-py2.py3-none-any.whl Collecting pyparsing (from packaging>=16.8->setuptools) Using cached pyparsing-2.1.10-py2.py3-none-any.whl Installing collected packages: appdirs, pyparsing, packaging Successfully installed appdirs-1.4.0 packaging-16.8 pyparsing-2.1.10
markupsafe がインストールできた。
~% pip install markupsafe Collecting markupsafe Installing collected packages: markupsafe Successfully installed markupsafe-0.23
直った。
% ansible --version ansible 2.2.1.0 config file = configured module search path = Default w/o overrides
app1 env
pyenv に入っているpythonでは、まだAnsibleが2.1.0.0のままだった。
pip install --upgrade cryptography
を実行するとエラーになる。
% pip install -U pip Requirement already up-to-date: pip in /Users/kubotad/.pyenv/versions/app1/lib/python2.7/site-packages
ansible==2.2.1.0 の環境
% pip freeze ansible==2.2.1.0 appdirs==1.4.0 Jinja2==2.8.1 MarkupSafe==0.23 packaging==16.8 paramiko==2.1.1 pyparsing==2.1.10 PyYAML==3.12 six==1.10.0 virtualenv==15.0.2
ansible==2.1.0.0 の環境
% pip freeze amqp==1.4.9 ansible==2.1.0.0 anyjson==0.3.3 appdirs==1.4.0 billiard==3.3.0.23 boto==2.41.0 bpmappers==0.8.2 celery==3.1.23 cffi==1.9.1 Django==1.8.13 django-celery==3.1.17 django-kombu==0.9.4 ecdsa==0.13 enum34==1.1.6 Fabric==1.11.1 idna==2.2 ipaddress==1.0.18 Jinja2==2.8.1 kombu==3.0.35 MarkupSafe==0.23 packaging==16.8 paramiko==1.17.1 psycopg2==2.6.2 pyasn1==0.2.2 pycparser==2.17 pycrypto==2.6.1 pyparsing==2.1.10 pytz==2016.4 PyYAML==3.12 redis==2.10.5 six==1.10.0
openssl
openssl version
でバージョンを確認したら、0.9.8 だった。
upgradeしようとしてもすでにインストール済みというメッセージがでる。
http://stackoverflow.com/questions/15185661/update-openssl-on-os-x-with-homebrew
% brew link openssl --force Linking /usr/local/Cellar/openssl/1.0.2h_1... 1601 symlinks created
opensslをアップグレードしたら、cryptography がインストールできるようになった。
pip install --upgrade cryptography Successfully built cryptography Installing collected packages: cryptography Successfully installed cryptography-1.7.2
ansible
% pip install --upgrade ansible Collecting ansible Installing collected packages: paramiko, ansible Found existing installation: paramiko 1.17.1 Uninstalling paramiko-1.17.1: Successfully uninstalled paramiko-1.17.1 Found existing installation: ansible 2.1.0.0 Uninstalling ansible-2.1.0.0: Successfully uninstalled ansible-2.1.0.0 Successfully installed ansible-2.2.1.0 paramiko-2.1.1
うまくいった。