我在 Debian 8 服务器上将 ansible 从版本 2.0 升级到 2.3.1,并按照 Ansible 提供的说明进行操作:
添加到来源列表:
deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main
运行以下命令:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 sudo apt-get 更新 sudo apt-get install ansible
我检查了which ansible
,显示指向/usr/local/bin。
当我运行 echo $PATH 时,我看到列出了/usr/local/bin。我是否需要运行额外的步骤来获取正确版本的 Ansible?
我没有输出。但是当我运行 apt 时,它成功更新到 ansible 2.3.1
更新:ansible 最初是通过 pip 安装的。当我运行`pip install --upgrade ansible 时,我得到:
Running setup.py (path:/tmp/pip-build-jyjjV6/cryptography/setup.py) egg_info for package cryptography
no previously-included directories found matching 'docs/_build'
warning: no previously-included files matching '*' found under directory 'vectors'
Downloading/unpacking pynacl>=1.0.1 (from paramiko->ansible)
Downloading PyNaCl-1.1.2.tar.gz (3.1MB): 3.1MB downloaded
Running setup.py (path:/tmp/pip-build-jyjjV6/pynacl/setup.py) egg_info for package pynacl
c/_cffi_backend.c:15:17: fatal error: ffi.h: No such file or directory
#include <ffi.h>
^
compilation terminated.
Traceback (most recent call last):
File "<string>", line 17, in <module>
File "/tmp/pip-build-jyjjV6/pynacl/setup.py", line 232, in <module>
"Programming Language :: Python :: 3.6",
File "/usr/lib/python2.7/distutils/core.py", line 111, in setup
_setup_distribution = dist = klass(attrs)
File "/usr/local/lib/python2.7/dist-packages/setuptools/dist.py", line 268, in __init__
self.fetch_build_eggs(attrs['setup_requires'])
File "/usr/local/lib/python2.7/dist-packages/setuptools/dist.py", line 312, in fetch_build_eggs
replace_conflicting=True,
File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 846, in resolve
dist = best[req.key] = env.best_match(req, ws, installer)
File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 1091, in best_match
return self.obtain(req, installer)
File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 1103, in obtain
return installer(requirement)
File "/usr/local/lib/python2.7/dist-packages/setuptools/dist.py", line 379, in fetch_build_egg
return cmd.easy_install(req)
File "/usr/local/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 639, in easy_install
return self.install_item(spec, dist.location, tmpdir, deps)
File "/usr/local/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 669, in install_item
dists = self.install_eggs(spec, download, tmpdir)
File "/usr/local/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 852, in install_eggs
return self.build_and_install(setup_script, setup_base)
File "/usr/local/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 1080, in build_and_install
self.run_setup(setup_script, setup_base, args)
File "/usr/local/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 1068, in run_setup
raise DistutilsError("Setup script exited with %s" % (v.args[0],))
distutils.errors.DistutilsError: Setup script exited with error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
Complete output from command python setup.py egg_info:
c/_cffi_backend.c:15:17: fatal error: ffi.h: No such file or directory
#include <ffi.h>
^
compilation terminated.
Traceback (most recent call last):
File "<string>", line 17, in <module>
File "/tmp/pip-build-jyjjV6/pynacl/setup.py", line 232, in <module>
"Programming Language :: Python :: 3.6",
File "/usr/lib/python2.7/distutils/core.py", line 111, in setup
_setup_distribution = dist = klass(attrs)
File "/usr/local/lib/python2.7/dist-packages/setuptools/dist.py", line 268, in __init__
self.fetch_build_eggs(attrs['setup_requires'])
File "/usr/local/lib/python2.7/dist-packages/setuptools/dist.py", line 312, in fetch_build_eggs
replace_conflicting=True,
File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 846, in resolve
dist = best[req.key] = env.best_match(req, ws, installer)
File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 1091, in best_match
return self.obtain(req, installer)
File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 1103, in obtain
return installer(requirement)
File "/usr/local/lib/python2.7/dist-packages/setuptools/dist.py", line 379, in fetch_build_egg
return cmd.easy_install(req)
File "/usr/local/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 639, in easy_install
return self.install_item(spec, dist.location, tmpdir, deps)
File "/usr/local/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 669, in install_item
dists = self.install_eggs(spec, download, tmpdir)
File "/usr/local/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 852, in install_eggs
return self.build_and_install(setup_script, setup_base)
File "/usr/local/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 1080, in build_and_install
self.run_setup(setup_script, setup_base, args)
File "/usr/local/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 1068, in run_setup
raise DistutilsError("Setup script exited with %s" % (v.args[0],))
distutils.errors.DistutilsError: Setup script exited with error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
----------------------------------------
Cleaning up...
Command python setup.py egg_info failed with error code 1 in /tmp/pip-build-jyjjV6/pynacl
Storing debug log for failure in /root/.pip/pip.log
当我尝试运行 apt-get install 和运行/usr/bin/ansible --version 时,我得到:
Traceback (most recent call last):
File "/usr/bin/ansible", line 46, in <module>
from ansible.module_utils._text import to_text
ImportError: No module named _text
理想情况下,我想通过 pip 升级,但我似乎无法让它运行。不过,我会选择使用 apt-get。
最佳答案
DEB 包在 /usr/bin/ansible
中安装 ansible,我猜你之前的安装不是来自 DEB 包(而是 pip
?)并且它解释为什么你有 2 个版本的 ansible。
根据您的 PATH
定义,您不会获得新版本。
您应该清理以前的安装(pip uninstall
?)
更新:pip install --upgrade
失败,因为它正在尝试构建一些可依赖的 C 绑定(bind)。
你应该卸载用pip
安装的版本,然后重新安装DEB包:
pip uninstall --yes ansible
apt install --yes --reinstall ansible
从系统包和 pip 混合安装从来都不是一个好主意...
关于python - Ansible 更新仍然显示旧版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44827842/