在上一篇文章中通过重装yum解决了无法使用Python3解释执行的问题,但是yum -y update
后又会使得之前设置的软链接(ln -s /usr/local/bin/python3.6 /usr/bin/python
)被替换成python2.7。为了把Python3设置为默认py解释器的同时保证yum能正常使用,还得从yum相关脚本下手。
不难猜测这些脚本都是使用py2语法,如果能把它们声明的解释器改成python2,那么问题就迎刃而解了。搜索了一下,发现在/usr/bin/
目录有7个yum相关的脚本,再加上前文提到的/usr/libexec/urlgrabber-ext-down
共8个。
1 解决方法
这里直接使用shell脚本来把这8个脚本文件中的/usr/bin/python
替换成/usr/bin/python2
。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 | #!/bin/bash
# FileName: python3caseyumbug2.sh
# Description: 修复CentOS7升级Python到3.6版本后yum不能使用的问题(续)
# Simple Usage: sh python3caseyumbug2.sh
# (c) 2018.01.28 vfhky https://typecodes.com/linux/python3caseyumbug2.html
# https://github.com/vfhky/shell-tools/blob/master/filehandle/python3caseyumbug2.sh
echo "begin handle /usr/bin/yum*."
ALL_YUM_FILES=$(find /usr/bin/ -type f -name "yum*")
for SINGLE_FILE in ${ALL_YUM_FILES}
do
sed -i 's/#!\/usr\/bin\/python$/#!\/usr\/bin\/python2/' ${SINGLE_FILE}
done
echo "begin handle /usr/libexec/urlgrabber-ext-down."
sed -i 's/\/usr\/bin\/python$/\/usr\/bin\/python2/' /usr/libexec/urlgrabber-ext-down
echo "done."
exit 0
|
2 后记
通过上面的脚本处理后,即使CentOS7被设置成默认使用Python3.6来执行py脚本,yum工具也不会受到影响了。
Comments »