콘텐츠로 건너뛰기

[ Solved ] file /bin/yum”, line 30 except keyboardinterrupt, e 파이썬3.x 설치후 yum 에러

    [root@~]# yum install java
    File "/usr/bin/yum", line 30
    except KeyboardInterrupt, e:
    ^
    SyntaxError: invalid syntax
    [root@~]# yum install php
    File "/usr/bin/yum", line 30
    except KeyboardInterrupt, e:
    ^
    SyntaxError: invalid syntax
    [root@~]# yum install php5-dg
    File "/usr/bin/yum", line 30
    except KeyboardInterrupt, e:
    ^
    SyntaxError: invalid syntax
    [root@~]#

    yum update

    yum install 패키지명

    파이썬 3.8버전 섨치 후 yum 업데이트 또는 패키지를 인스톨 하려고 할때 아래처럼 에러가 발생하였습니다.

    yum update
      File "/usr/bin/yum", line 30
        except KeyboardInterrupt, e:
                                ^
    SyntaxError: invalid syntax
    

    원인은 yum 동작시 3.x 버전에서 안정화되지 않은상태라 2.x 버전대로 실행을 해야합니다.

    위의 에러는 /usr/bin/python 폴더 혹은 심볼릭으로 연결된 파이썬의 버전이 2.x버전이 아닌 3.x 버전으로 되어져있을 때 위와같은 에러가 발생하며 yum 실행이 되지 않습니다.

    위의 경우에는 여러가지 방법으로 해결할 수있습니다.

    그 방법에 대해서 제가 직접 해보고 가장 좋은 방법이 무엇인지 결론으로 말씀드리도록 하겠습니다.

    파이썬 3.x 설치 후 yum 에러 날 경우 해결방법

    1. yum 실행명령줄에 파이썬 심볼릭링크를 강제로 2.x버전으로 맞춥니다.

    이 방법은 개인적으로 제일 무난한 방법으로 보입니다.

    제가 사용하는 방법은 2번과3번 방식입니다.

    ls -l /usr/bin/python*

    파이썬의 주소를 확인한 다음 아래 명령어로 파이썬의 2.x 버전대 주소를 강제로 변경합니다.

    제가 설치한 파이썬 버전은 2.7버전과 3.8버전 두가지입니다.

    vi /usr/bin/yum

    #! /usr/bin/python 으로 되어진 이 부분을

    #! /usr/bin/python2.7 이렇게 변경하고 한번더

    아래의 항목을 똑같이 python2.x 버전대 주소로 변경해줍니다.

    vi /usr/libexec/urlgrabber-ext-down

    그리고 yum update, yum install 명령어를 사용하면됩니다.

    2. update-alternatives 이용하여 파이썬 버전관리합니다.

    이 부분은 여러가지 버전의 모듈을 설치해놓고 2.x, 3.x, 4.x 등등 필요에 따라 2.x버전으로 돌려서 yum 업데이트, 인스톨을 하고 불필요시에는 파이썬 최신버전 혹은 원하는 버전으로 사용할 수 있는 방법입니다.

    update-alternatives --config python
    update-alternatives --config python
    
    There are 2 programs which provide 'python'.
    
      Selection    Command
    -----------------------------------------------
     + 1           /usr/bin/python2.7
    *  2           /usr/bin/python3.8
    
    Enter to keep the current selection[+], or type selection number: 1

    이렇게 2개의 버전을 등록해놓고 평소에는 3.8 버전으로 사용하다가 yum update, yum install 할 당시에만 살짝 2.7버전으로 돌리는 방식입니다.

    우선 등록부터 해야합니다.

    update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
    update-alternatives --install /usr/bin/python python /usr/bin/python3.8 2

    등록된 리수트를 확인해봅니다.

    update-alternatives --list
    libnssckbi.so.x86_64	auto	/usr/lib64/pkcs11/p11-kit-trust.so
    ld	auto	/usr/bin/ld.bfd
    mta	auto	/usr/sbin/sendmail.postfix
    cifs-idmap-plugin	auto	/usr/lib64/cifs-utils/cifs_idmap_sss.so
    iptables	auto	/usr/sbin/iptables-legacy
    java	auto	/usr/lib/jvm/java-17-amazon-corretto.x86_64/bin/java
    jre_17	auto	/usr/lib/jvm/java-17-amazon-corretto.x86_64/jre
    python	auto	/usr/bin/python3.8
    

    방금 추가한 python 항목에 3.8이 자동으로 설정되어져있네요.

    파이썬 2.x 변경할때에는 아래명령어를 사용하면됩니다.

    update-alternatives --config python

    그러면 python으로 등록된 2개의 링크가 보입니다.

    이중에서 2.7버전을 선택하겠습니다.

    
    There are 2 programs which provide 'python'.
    
      Selection    Command
    -----------------------------------------------
       1           /usr/bin/python2.7
    *+ 2           /usr/bin/python3.8
    
    Enter to keep the current selection[+], or type selection number: 1

    which python 명령어로 파이썬 경로를 확인해보면 그대로 동일한 /usr/bin/python 을 가리키지만 2.7 버전으로 변경됩니다.

    which python
    /usr/bin/python
    

    그리고 yum update 명령어로 확인해보니 정상적으로 되고 있습니다.

    다시 python3.8 버전으로 바꾸었더니 yum update 명령어가 동작하지 않네요 ㅎㅎ

    일단 yum update, install 할때만 1번 2.7으로동작!!

    3. 파이썬3.x 심볼릭을 python3으로 연결해줍니다.

    사실 3번째 지금 알려드리는 이 방법만 사용해도 무방합니다.

    대신 python 이라는 명령어로 3.x 버전을 사용못할 뿐이지 python3 이렇게 심볼릭 잡아서 사용한다면 아무 문제없이 사용할 수 있습니다

    yum update, install 명령어는 python 심볼릭이 연결되어져있으니

    3.x 버전은 python3 네이밍에 심볼릭을 연결해서 사용하는거죠.

    ln -s /usr/bin/python3.8 /usr/bin/python3

    이렇게 심볼릭을 만들어서 파이썬 3.x 버전 사용을 python3 hello.py 이런식으로 사용하면 됩니다.


    yum 명령어가 python 버전 차이로 인해서 오류가 생길수 있어 안정적인 버전인 2.x 버전대로 동작하는듯합니다.

    이로인해서 파이썬 버전을 버전별로 관리하거나 다른 네이밍의 심볼릭을 이용하여 사용할수 있는데요

    저는 2번 항목과 3번항목을 같이 사용하고 있습니다.

    하지만 계속 사용해보니 그냥 3번 항목만 따라 하더라도 큰 문제가 없다는것을 알게되었습니다.

    결론은 3번째 방법으로 python3 심볼릭 만들어서사용하자!

    파이썬 4.x 버전나오면 python4 심볼릭 만들어 쓰면되겠네요.