Holic한 꿀팁/Python

Python3 사용시, yum이 작동하지 않을 때

달콤한방랑 2019. 12. 3. 17:37
728x90
반응형

Python을 다시 깔려고 했더니, 이번엔 yum이 말을 안 듣는 현상이 일어났다.

이리 저리 찾아보니, python을 버전2에서 3으로 변경했을 경우, 아래와 같이 yum이 깨지는 현상이 있는 듯 하다.

[root@localhost bin]# yum install httpd
  File "/usr/bin/yum", line 30
    except KeyboardInterrupt, e:
                            ^
SyntaxError: invalid syntax

구글링으로 이리저리 찾아해멘 결과! 드디어 대처방법을 찾았고 바로 실행해보았다.

<대처방법 1> python버전을 2로 표기한다.
※자신의 서버에 깔려있는 python폴더가 2면 2로, 2.7이면 2.7로 고쳐준다.

※#!/usr/bin/python에서 #!/usr/bin/python2.7이나 #!/usr/bin/python2로 변경해줌

vi /usr/bin/yum

#!/usr/bin/python2.7

버전 2로 고쳐준 다음에, yum커맨드를 사용하여 yum update등을 실행하면 움직이는 듯 하나

여기서 안되면 아래 커맨드를 실행해서 똑같이 버전2로 수정해준다. 

vi /usr/libexec/urlgrabber-ext-down

#!/usr/bin/python2.7

다시 한번 yum update을 실행하면 동작하는 듯..

<#!/usr/bin/python2로 변경시> 밑의 커맨드를 이용하면 한번에 해결! 

sed -i 's@/usr/bin/python@/usr/bin/python2@g' /usr/bin/yum
sed -i 's@/usr/bin/python@/usr/bin/python2@g' /usr/libexec/urlgrabber-ext-down

But!!! 내가 쓰는 환경에서는 내가 아무것도 모르고 무리해서 python을 버전2에서 3으로 변경해놓고

버전2를 지워버렸기에 아래와 같은 대처방법을 실시해도 고쳐지지 않았음..

이래서 초보는 서럽다...ㅠㅠ 서버도 파이썬도 아무것도 모르는 돌헤드인 나로써는 뭐가 뭔지 아득해졌고, 

결국 이곳 저곳 찾아본 결과, 파이썬 전체를 지워보라는 ...조언??을 받음..

 

<대처방법2> 수동으로 설치했던 버전2,버전3 파일 모두를 삭제한다

ひとまず、CentoOS 6のYumについては、どうやってもPython 2でしか動作しないのです。ですので、Python 2は必須です。また、CentOSのチーム、ひいては、RHELのチームは、Yumの動作をディストリビューションが提供するパッケージのPthyon 2でしか行っていません。つまり、同じPython 2でも、自前で入れてしまった場合は、うまくいかない可能性もあると言うことです。

<의역,직역>

어찌되었간에, CentoOS 6의Yum에 대해서는, 어떻게해도 Python 2만 동작합니다. 때문에 Python 2는 필수입니다.또한 CentOS팀,나아가서는 RHEL팀은Yum의동작을디스트리뷰션이제공하는패키지로서의Pythyon 2에서만움직입니다.즉,같은Pythyon 2라도직접인스톨을한경우에는제대로움직이지않을가능성이있다는것입니다.

以上の事から、CentOSに入っているPythonについては、パッケージのものを触らないことをお勧めします。別のバージョンのPythonが必要になった場合は、Software Collectionsのものを使って、OSとは別環境にする、pyenv等でそのユーザーにのみ有効なホームに入れる、virtualenvを使ってPython提供の仮想環境を使う、等とした方が、OSにあるPythonとは分離され、不要なトラブルに巻き込まれないと思います。

<의역,직역>

상기 내용을 토대로 CentOS에 설치된 Python에 대해서는 패키지 그 자체를 만지지 않는 것을 추장합니다.. *(쉣...)

다른 버전의 Python이 필요한 경우에는 Software Collections 에 있는 것을 사용하여 OS와는 다른 환경으로 하거나, pyenv등으로 특정 유저만이 유효한 홈에 설치하거나, virtualenv를 사용해서 Python에서 제공하는 가상환경을 사용하거나 하는 등의 방법이 OS에 이미 설치되어 있는 Python과는 분리되어서 불필요한 트러블에 휘말리지 않을 것 이라고생각됩니다. 

なお、修正する方法ですが、手動で入れてしまったPython(2も3も)を全て消して、Python 2をRPMから入れ直すしか無いでしょう。RPMはhttp://mirror.centos.org/centos/6/os/x86_64/Packages/からダウンロードできます。壊れてしまっているのはYumではなくPythonですので、Pythonを入れ直さないと意味がありません。それから、ユーザー権限で書き込める場所にPythonを入れていってください。

<의역,직역>

즉, 수정하는 방법은 수동으로 설치한 Python2,Python3을 전부 지우고, Python2를 RPM으로 다시 설치 하는 수 밖에 없을 것같네요. RPM은http://mirror.centos.org/centos/6/os/x86_64/Packages/ 에서 다운로드 가능합니다. 깨져버린 건 Yum이 아니라 Python이므로, Python을 다시 설치한다고 한 들 의미가 없습니다. 다시설치한 후에는 유저의 권한이 읽기 가능한 곳에 설치 해주세요.*(띠로리....)



출처: https://teratail.com/questions/216934

 

그러나, 여기서 문제는 수동으로 설치했던 파일이 무엇이었는 지 기억이 안난다는...

일단은 /usr/bin하위에 있는 내가 깔아둔?것 같은 python관련 파일들을 전부 지우고,

아래의 커맨드로 Centos의 버젼을 확인했다.

# cat /etc/redhat-release

그리고 나서 버젼에 맞는 rpm 패키지파일을 Centos사이트에 가서 다운 받았다.

내가 구축했던 환경은 버젼이 7.6.1810이었으므로, 나는 사이트(http://vault.centos.org/)에 가서 패키지 파일을 다운받았다.

패키지 파일은 아래와 같은 경로에 있었고, wget커맨드도 먹히지 않는 상태였기 때문에 curl코맨드로 파일을 다운했다

http://vault.centos.org/7.6.1810/os/x86_64/Packages/

 

Index of /7.6.1810/os/x86_64/Packages

 

vault.centos.org

 

curl -O http://vault.centos.org/7.6.1810/os/x86_64/Packages/python-2.7.5-76.el7.x86_64.rpm

위의 파일만 다운로드해서 rpm -ivh 로 패키지를 인스톨하려고 하자, 의존성이 결여되었다는 메세지가 나왔고,

의존성에 결여가 되었다는 뭐시기의 파일명을 사이트의 패키지 리스트에서 찾아 아래의 패키지도 깔았다.

curl -O http://vault.centos.org/7.6.1810/os/x86_64/Packages/python-libs-2.7.5-76.el7.x86_64.rpm

이제 괜찮겠지 하고  rpm -ivh로 인스톨을 하자, (정확히는  rpm -ivh *) 이번에는 파일끼리 경쟁한다고 해서

안되겠다싶어 강제 인스톨을 강행!!!

rpm -Uhv --force *

처리가 다 끝난 후에 python의 버전확인을 해보니 드디어!!!!  python2가 인스톨이 되었고, yum도 먹히게 되었다!

휴... 오랜 시간이 걸렸지만...ㅠㅠ 정말 뿌듯... 

나처럼 안되는 분들도 이러한 방법으로 해보면 될 듯 싶다..

암껏도 모르면 함부로 지우지 말자는 교훈을 얻었다..

 


참고 사이트 (일본어 사이트) 

 

yumが使えなくなりました。|teratail

現在OSのバージョンは、CentOS6.10を使っています・ 表題の件ですが、pythonを入れ替えたのが原因です。python3.4.10をインストールしました。元々は、python2.7.14を使っていました。 yumを起動すると、下記のエラーが出ます。 File "/

teratail.com

 

CentOSにyumをインストールする方法(例:CentOS5.3) | 独学PHP・MySQL学習入門

CentOSにyumをインストールする方法(例:CentOS5.3) CentOSにyumをインストールする方法です。 「yum」についての説明です。 Yellowdog Updater Modified (Yum)はLinuxのRPM互換パッケージ管理システムである。Yumは デューク大学のLinux@DUKEプロジェクトでSeth Vidalを始めとするボランティアによって開発された。Yumそのものはコマンドラインのユーテリティであるが、幾つかの外部ツールにより、そのGUIが提供されている。 引用:[w

www.php-mysql-linux.com

 

반응형