安装mysql-devel时报错【File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:】

在安装mysql-devel时遇到错误,由于yum依赖的python版本与系统当前版本不兼容。解决方案是修改yum配置文件和urlgrabber-ext-down文件,将python版本指定为2.7来保持兼容。

安装mysql-devel时报错,由于yum包管理是使用python2.x写的,到python3.1后,语法兼容性导致问题出现 

[root@VM_0_15_centos ~]# yum install mysql-devel
  File "/usr/bin/yum", line 30
    except KeyboardInterrupt, e:
                            ^
SyntaxError: invalid syntax

解决方法: 
修改yum配置文件,将python版本指向以前的旧版本

查看旧版本:

[root@VM_0_15_centos bin]# cd /usr/bin
[root@VM_0_15_centos bin]# ll pyth*
lrwxrwxrwx  1 root root   24 Dec 29 16:21 python -> /usr/local/bin/python3.7
lrwxrwxrwx. 1 root root    9 Jan  9  2018 python2 -> python2.7
-rwxr-xr-x. 1 root root 7136 Aug  4  2017 python2.7
[root@VM_0_15_centos bin]# 

 

vi /usr/bin/yum

#!/usr/bin/python2.7


[root@VM_0_15_centos bin]# vi /usr/bin/yum
#!/usr/bin/python2.7
import sys
try:
    import yum
except ImportError:
    print >
[root@wpf-centos7 ~]# certbot --apache -d yourdomain.com -d www.yourdomain.com /usr/lib/python2.7/site-packages/josepy/util.py:9: CryptographyDeprecationWarning: Python 2 is no longer supported by the Python core team. Support for it is now deprecated in cryptography, and will be removed in the next release. from cryptography.hazmat.primitives.asymmetric import rsa ^CTraceback (most recent call last): File "/usr/bin/certbot", line 9, in <module> load_entry_point('certbot==1.11.0', 'console_scripts', 'certbot')() File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 378, in load_entry_point return get_distribution(dist).load_entry_point(group, name) File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2566, in load_entry_point return ep.load() File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2260, in load entry = __import__(self.module_name, globals(),globals(), ['__name__']) File "/usr/lib/python2.7/site-packages/certbot/main.py", line 2, in <module> from certbot._internal import main as internal_main File "/usr/lib/python2.7/site-packages/certbot/_internal/main.py", line 17, in <module> from certbot import crypto_util File "/usr/lib/python2.7/site-packages/certbot/crypto_util.py", line 13, in <module> from cryptography import x509 # type: ignore File "/usr/lib64/python2.7/site-packages/cryptography/x509/__init__.py", line 8, in <module> from cryptography.x509.base import ( File "/usr/lib64/python2.7/site-packages/cryptography/x509/base.py", line 23, in <module> from cryptography.x509.extensions import Extension, ExtensionType File "/usr/lib64/python2.7/site-packages/cryptography/x509/extensions.py", line 630, in <module> class ReasonFlags(Enum): File "/usr/lib/python2.7/site-packages/enum/__init__.py", line 257, in __new__ enum_class._value2member_map_[value] = enum_member KeyboardInterrupt [root@wpf-centos7 ~]# certbot --apache -d gxlscc.fun -d www.gxlscc.fun /usr/lib/python2.7/site-packages/josepy/util.py:9: CryptographyDeprecationWarning: Python 2 is no longer supported by the Python core team. Support for it is now deprecated in cryptography, and will be removed in the next release. from cryptography.hazmat.primitives.asymmetric import rsa Traceback (most recent call last): File "/usr/bin/certbot", line 9, in <module> load_entry_point('certbot==1.11.0', 'console_scripts', 'certbot')() File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 378, in load_entry_point return get_distribution(dist).load_entry_point(group, name) File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2566, in load_entry_point return ep.load() File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2260, in load entry = __import__(self.module_name, globals(),globals(), ['__name__']) File "/usr/lib/python2.7/site-packages/certbot/main.py", line 2, in <module> from certbot._internal import main as internal_main File "/usr/lib/python2.7/site-packages/certbot/_internal/main.py", line 21, in <module> from certbot._internal import account File "/usr/lib/python2.7/site-packages/certbot/_internal/account.py", line 17, in <module> from acme.client import ClientBase # pylint: disable=unused-import File "/usr/lib/python2.7/site-packages/acme/client.py", line 39, in <module> requests.packages.urllib3.contrib.pyopenssl.inject_into_urllib3() # type: ignore File "/usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py", line 133, in inject_into_urllib3 _validate_dependencies_met() File "/usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py", line 175, in _validate_dependencies_met "'pyOpenSSL' module missing required functionality. " ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer. [root@wpf-centos7 ~]#
最新发布
11-27
<think>好的,用户遇到了yum无法使用的问题,提示是“坏的解释器:没有那个文件或目录”,特别是涉及到Python2.7。首先,我需要回忆一下yum和Python之间的关系。yum是基于Python编写的工具,所以它依赖于系统中特定的Python解释器路径。如果用户卸载了Python2.7或者路径发生了变化,yum就无法找到正确的解释器,导致这个错误。 根据用户提供的引用内容,特别是引用[1]和[2],问题通常是因为/usr/bin/python这个软链接指向了不存在的Python2.7。所以第一步应该是检查系统中是否存在Python2.7,或者是否被错误地删除。如果用户确实卸载了Python2.7,可能需要重新安装它,或者调整yum的脚本指向现有的Python版本。 接下来,引用[3]提到可能需要检查Python的包是否包含yum所需的模块,比如yum相关的库文件。如果这些文件缺失,可能需要从其他服务器拷贝,或者通过其他方式恢复。 我需要分步骤来解决问题。首先,确认Python2.7的安装情况。如果已经删除,需要重新安装。其次,检查软链接是否正确指向存在的Python解释器。可能需要将/usr/bin/python重新链接到可用的Python版本,比如Python2.7。如果用户系统中同有Python2和Python3,需要注意不要破坏其他依赖Python3的应用。 另外,可能还需要检查yum的脚本文件,确保它们的shebang行指向正确的Python路径。例如,查看/usr/bin/yum的第一行是否是#!/usr/bin/python,如果是的话,而该路径的Python不存在,就需要修改这个路径到正确的Python解释器位置。 还有可能出现的情况是,用户安装了其他版本的Python,但yum需要特定版本的支持。这候可能需要安装对应的Python2.7兼容包,或者调整环境变量,使得yum能够找到正确的解释器。 最后,如果用户无法自行恢复Python2.7,可能需要考虑升级系统到使用Python3的yum版本,但CentOS等系统可能仍然依赖Python2.7,所以这种方法可能不适用。这种情况下,重新安装Python2.7和相关yum包可能是必要的。 总结来说,解决步骤大致是:检查Python安装情况,修复软链接,恢复yum所需的Python库,或者重新安装必要的包。需要逐步引导用户进行操作,确保每一步都正确执行,避免进一步破坏系统环境。</think>### 解决方案:修复 yum 调用 Python2.7 的“坏的解释器”错误 此问题通常是由于系统中缺失 `/usr/bin/python2.7` 解释器或软链接失效导致的。以下是具体解决步骤: --- #### **步骤 1:确认 Python2.7 是否正常安装** 1. **检查 Python2.7 是否存在** 运行以下命令验证 Python2.7 是否安装: ```bash ls /usr/bin/python2.7 ``` 如果提示文件不存在,则需要重新安装 Python2.7。 2. **安装 Python2.7(若缺失)** - 对于 CentOS/RHEL 系统: ```bash yum install python2 ``` *注意:如果 yum 已无法使用,需手动下载 Python2.7 RPM 包或从其他服务器拷贝相关文件[^3]。* --- #### **步骤 2:修复软链接** 1. **检查 `/usr/bin/python` 的指向** 运行以下命令查看软链接目标: ```bash ls -l /usr/bin/python ``` 如果输出类似 `lrwxrwxrwx 1 root root 7 Apr 1 2020 /usr/bin/python -> python2`,需确保最终指向 `python2.7`。 2. **重新创建软链接** 若链接错误或失效,执行以下命令修复: ```bash ln -sf /usr/bin/python2.7 /usr/bin/python ``` --- #### **步骤 3:修复 yum 配置文件** 1. **修改 yum 脚本的 Python 解释器路径** 打开 `/usr/bin/yum` 文件: ```bash vi /usr/bin/yum ``` 将首行的 `#!/usr/bin/python` 改为 `#!/usr/bin/python2.7` 或实际存在的 Python 路径。 2. **同步修复其他相关工具** 检查 `/usr/libexec/urlgrabber-ext-down` 等文件,确保其首行 Python 路径正确。 --- #### **步骤 4:验证 yum 功能** 运行以下命令测试 yum 是否恢复: ```bash yum --version ``` 如果输出包含 Python 2.7.x 版本信息,则修复成功[^1][^2]。 --- #### **补充:恢复缺失的 yum 依赖包** 若修复后仍报错,可能是 `yum` 的 Python 模块缺失(如 `/usr/lib/python2.7/site-packages/yum`)。需从其他正常服务器拷贝以下目录到本机: - `/usr/lib/python2.7/site-packages/yum` - `/usr/lib/python2.7/site-packages/rpmUtils` - `/usr/lib/python2.7/site-packages/iniparse` 拷贝后重启终端即可。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值