🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

yum

yumコマンドは、UNIX系OSのRPMパッケージのインストールなどを行うためのプログラムのことです。

Q&A

解決済

1回答

3143閲覧

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

kocyan

総合スコア19

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

yum

yumコマンドは、UNIX系OSのRPMパッケージのインストールなどを行うためのプログラムのことです。

0グッド

0クリップ

投稿2019/10/13 01:07

編集2019/10/13 01:14

現在OSのバージョンは、CentOS6.10を使っています・

表題の件ですが、pythonを入れ替えたのが原因です。
python3.4.10をインストールしました。
元々は、python2.7.14を使っていました。

yumを起動すると、下記のエラーが出ます。

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

色々googleで検索してみると、/usr/bin/yum の1行目を元使っていたpythonのバージョンに書き換えると使えるようになる!とありました。
ですが、python3をインストールした時点で要らない物と勝手に解釈して、python2を消してしまったのです。

python2.7.14は元々、Python-2.7.14.tgz をダウンロードして解凍後、configureして、make && make altinstall しています。
今回も同じようにconfigureして、make && make altinstallしたのですが、下記のエラーが出てyumがなおりません。

There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:

No module named yum

Please install a package which provides this module, or
verify that the module is installed correctly.

It's possible that the above module doesn't match the
current version of Python, which is:
2.7.14 (default, Oct 13 2019, 07:29:15)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-23)]

If you cannot solve this problem yourself, please go to
the yum faq at:
http://yum.baseurl.org/wiki/Faq

yumを下記コマンドで入れなおしてみたのですが、上記エラーが出て修復できていません。
rpm -Uhv --force http://mirror.centos.org/centos-6/6.10/os/x86_64/Packages/yum-3.2.29-81.el6.centos.noarch.rpm

どなたか分かる方、ご指導をお願いいたします。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fu7mu4

2019/10/13 05:15

「下記のエラーが出てyumがなおりません。 」というエラーはyum updateを実行した際にでるエラーでしょうか、またpythonのバージョンを書き換えればなおるという話の対応はどうされましたか? そのあたりを追記、修正してください。
kocyan

2019/10/13 14:06

>「下記のエラーが出てyumがなおりません。 」というエラーはyum updateを実行した際にでるエラーでしょうか yumコマンドのみ実行いたしました。 >またpythonのバージョンを書き換えればなおるという話の対応はどうされましたか? /usr/bin/yumをviで開き、#!/usr/bin/python を #!/usr/bin/python2.7に変えてみましたが、yumコマンドは復旧しませんでした。
guest

回答1

0

ベストアンサー

スタック・オーバーフローで似たような質問がありました。

python - yumが使えなくなりました。 - スタック・オーバーフロー

こちらの質問での質問者のコメントでは次のように書いています。

python3をインストールしてyumが動かなくなったからと、yumで使っているpythonを以前のバージョンに戻して動いたので解決しました!の記事を沢山みました。 どうして、以前のバージョンに戻すのでしょうか。 新しいバージョンにしても意味がないのではないでしょうか(笑 逆光してるのではないでしょうか!?

たぶん、同じ疑問を持っているのでは無いかと思いますので、それから回答します。

Pythonは2から3へバージョンをあげるとき互換性の無い変更をいくつか行いました。それらの変更のいくつかは文法レベルにまで及ぶため、これまでPython 2で動作していたアプリケーションを単純にPython 3で動作することはできませんでした。Python 3用に変換するツール(2to3)もありますが、このツールで必ずしもうまくいくとは限りませんでした。また、Python 2で動作させている環境がなくなる訳ではありませんので、2を切り捨てるわけには行きません。2と3の両方で動作するような書き方もあるのですが、Python 3用に書き換えるのと同じように、完全に自動化することはできず、多くの手作業の修正が必要になる物でした。そのため、YumをそのままPython 3に対応させることは諦めました。代わりに、Yumの後継として作られたdnfはPython 3に対応し、新しいRHELやCentOSではこちらを採用するようになりました。

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

以上の事から、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を入れていってください。

投稿2019/10/13 07:35

raccy

総合スコア21737

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kocyan

2019/10/14 08:45

ご回答、有難うございます。 スタック・オーバーフローと同じ質問になって申し訳ございません。 rpmでインストールしようとすると、「エラー: 依存性の欠如:」が出て先に進めません。 下記パッケージをrpmを使ってインストールしようとすると、エラー: 依存性の欠如が出ます。 python-2.6.6-66.el6_8.x86_64.rpm python-libs-2.6.6-66.el6_8.x86_64.rpm python-tools-2.6.6-66.el6_8.x86_64.rpm tkinter-2.6.6-66.el6_8.x86_64.rpm python-devel-2.6.6-66.el6_8.x86_64.rpm rpm -ivh python*.rpm エラー: 依存性の欠如: tkinter = 2.6.6-66.el6_8 は python-tools-2.6.6-66.el6_8.x86_64 に必要とされています tkinter = 2.6.6-66.el6_8の 2.6.6-66.el6_8 は何でしょうか。 グーグルでググっても意味がわかりません。 http://mirror.centos.org/centos/6.10/os/x86_64/Packages/ の中にも、2.6.6-66.el6_8 というパッケージは見当たりません。 よろしくお願いします。
kocyan

2019/10/14 21:36

解決できました。 解決方法として、元々インストールされていた、2.6.6-68.el6_10.x86_64系の python をアップデイトさせました。 rpm -ivh python-2.6.6-68.el6_10.x86_64.rpm python-libs-2.6.6-68.el6_10.x86_64.rpm python-devel-2.6.6-68.el6_10.x86_64.rpm python-tools-2.6.6-68.el6_10.x86_64.rpm tkinter-2.6.6-68.el6_10.x86_64.rpm その後に yum をアップデイトさせますと、下記エラーになりました。 No module named rpm その後必要なパッケージをネットで調べ、下記をインストールさせました。 rpm -Uhv --force http://mirror.centos.org/centos/6.10/os/x86_64/Packages/rpm-python-4.8.0-59.el6.x86_64.rpm rpm -Uhv --force http://mirror.centos.org/centos/6.10/os/x86_64/Packages/python-urlgrabber-3.9.1-11.el6.noarch.rpm rpm -Uhv --force http://mirror.centos.org/centos/6.10/os/x86_64/Packages/python-pycurl-7.19.0-9.el6.x86_64.rpm rpm -Uhv --force http://mirror.centos.org/centos/6.10/os/x86_64/Packages/yum-metadata-parser-1.1.2-16.el6.x86_64.rpm 有難うございました。 以上です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問