在上一篇文章中通过重装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个。
这里直接使用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 |
---|
通过上面的脚本处理后,即使CentOS7被设置成默认使用Python3.6来执行py脚本,yum工具也不会受到影响了。