[root@hogeHoge user]# 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.8 (default, Jul 23 2017, 19:25:49)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]
If you cannot solve this problem yourself, please go to
the yum faq at:
http://yum.baseurl.org/wiki/Faq
久しぶりにサーバー(CentOS7)にログインし、
「yum update」を実行したら
「No module named yum」エラーが出てしまいました。orz
まさかの仕様変更お疲れ様でーすと、しれっと開発者様のせいにしつつ、絶望感を伴いながらも必死にエラーと闘っていました。
試行錯誤の末、ようやくその原因を見つけることができましたため、共有したいと思います。似たような症状の方の助けになれれば幸いです。
No module named yum の解決方法
当方の Linux(centOS7) でこのエラーが出てしまった原因は、新しくPythonをインストールしたことにありました。
それでは、解決の仕方を見てみましょう。
*.config ファイルを削除する
まずは、問題を起こしているファイルを削除します。
[root@hogeHoge user]# cd /etc/ld.so.conf.d/
[root@hogeHoge ld.so.conf.d]# rm -f python27.conf
[root@hogeHoge ld.so.conf.d]# /sbin/ldconfig
/sbin/ldconfig で共有ライブラリを再読込みします。
*.config のファイル名を変更する
「*.conf」形式のファイル名でなくすればOKですね。
[root@hogeHoge user]# cd /etc/ld.so.conf.d/
[root@hogeHoge ld.so.conf.d]# mv python27.conf python27.conf.disabled
[root@hogeHoge ld.so.conf.d]# /sbin/ldconfig
/sbin/ldconfig で共有ライブラリを再読込みします。
これで、yumが再び動作するようになるはずです。
*.confファイルの名づけ方は千差万別ですから、ご自身のサーバーーで悪さをしているパスを見つけてください。
これで動作しなかった場合は、以下のブログが参考になるかもしれません。
pythonのバージョン上げるとyumが動かなくなった
No module named yum エラーになってしまった原因
原因の一つとして
共有ライブラリのパスを新たに設定してしまうことで yum が動かなくなることがあります。
Python の共有ライブラリのパスを変更した
CentOS7 には、元々
Python2.7.5 が入っています。
しかし、mod_python3.3.1 をインストールしたかったので、
Python2.7.8 をインストールしました。
mod_python3.3.1 をインストールするためには、どうしても新しいバージョンの Python でないとインストール時にエラーになってしまうためです。
そこで、新たな Python をインストールに利用するために、共有ライブラリのパスを変更しました。
/etc/ld.so.conf.d/ ディレクトリ内に
*.conf という名前のファイルを設置すると共有ライブラリのパスを変更できます。
このエラーの原因となった、当方のやらかしてしまった操作を参考にコマンドを交えて紹介したいと思います。
↓↓↓
現在、共有ライブラリに読み込まれているPython(標準のPython)は、
Python2.7.5 です。
「python -V」で、標準のPythonを確認します。
[root@hogeHoge user]# python -V
Python 2.7.5
現在、Python 2.7.5が標準のPythonということになります。
*.conf の
「*」は、任意の名前という意味のため、ここでは
「python27.conf」という名前をつけて保存しています。
※ 好きなファイル名で大丈夫です。
[root@hogeHoge user]# vi /etc/ld.so.conf.d/python27.conf
python 2.7.8の場所のパスを記述します。
/usr/local/lib
標準のPythonは、「/usr/local/lib」ディレクトリにあるPythonと指定します。
「/sbin/ldconfig」というコマンドで、共有ライブラリにpython27.confを再読込みします。
[root@hogeHoge user]# /sbin/ldconfig
Python 2.7.8 に変更しました。
[root@hogeHoge user]# python -V
Python 2.7.8
標準の Python は、Python 2.7.8 になりました。
さてと、yum でもアップデートすっかなーと。
[root@hogeHoge user]# yum update
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.8 (default, Jul 23 2017, 19:25:49)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]
If you cannot solve this problem yourself, please go to
the yum faq at:
http://yum.baseurl.org/wiki/Faq
あ? yum...ぶっ壊れとるがな、
ゴルァーー!!!
|||orz
ちなみに、2018年4月頃にサーバーを構築したときは、Pythonの共有ライブラリのパスを新たに設定してもyumは正常に動作しました。
しかし、2018年8月にyum updateを行ってみると、アップデート完了後にyumが「no module named yum」になってしまいました。
最後に
自前のサーバー構築は、時に壁にぶち当たって大変な目に遭いますが、インターネットに情報としてまだ出回っていないエラーを自力で解決できたときの達成感は何ともいえません。
サーバー操作に慣れることができ、さまざまな構築を試す中で試行錯誤したことは、必ず自分自身の財産になるはずです。
ブログ運営をしているなら、記事としてサーバー構築の経験を執筆できます。
それでは次回にまたご期待を!