DreamerDreamのブログ

夢想家の夢です。〜揚げたてのモヤっとしたものをラフレシアと共に〜

CentOSを7.6から7.7へアップデートしようとしたら失敗した python36uが使えなくなったっぽい

先日、CentOS7のカーネルアップデートがありあました。

僕はカーネルは通常アップデートしてしまわないように

/etc/yum.conf

ファイルに

exclude=kernel*

と書いて必ずバックアップを取ってからアップデートするように心がけています。今回はその処置のおかげで助かりました。

 

とりあえずカーネルアップデートを実行するのでバックアプとって#で設定をコメントアウト

 

カーネルバージョン確認

sudo cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

現在7.6ですね。

 

そしてアップデート

sudo yum update

でいつもは問題無くカーネルアップデート出来ていたのですが、見慣れないエラーががががっ!!?

 

Transaction check error:
file /usr/lib/python3.6/site-packages/pip/__init__.py from install of python3-pip-9.0.3-5.el7.noarch conflicts with file from package python36u-pip-9.0.1-1.ius.el7.noarch
file /usr/lib/python3.6/site-packages/pip/_vendor/requests/__init__.py from install of python3-pip-9.0.3-5.el7.noarch conflicts with file from package python36u-pip-9.0.1-1.ius.el7.noarch
file /usr/lib/python3.6/site-packages/pip/utils/__init__.py from install of python3-pip-9.0.3-5.el7.noarch conflicts with file from package python36u-pip-9.0.1-1.ius.el7.noarch

 

.

.

(長過ぎるので略)

.

.

file /usr/lib64/python3.6/config-3.6m-x86_64-linux-gnu/config.c from install of python3-devel-3.6.8-10.el7.x86_64 conflicts with file from package python36u-devel-3.6.8-1.el7.ius.x86_64
file /usr/lib64/python3.6/config-3.6m-x86_64-linux-gnu/python.o from install of python3-devel-3.6.8-10.el7.x86_64 conflicts with file from package python36u-devel-3.6.8-1.el7.ius.x86_64

Error Summary
-------------

 

 

どうやら競合ファイルとやらが1つや2つなら消せばいいんだけど、そうじゃなくスッゲー沢山あるそうな。

こんなんもうどうしようもないやん。。。凹

 

調べるとバージョンアップでpython36uはpython3に統一されているという(いろいろ調べすぎてソースがどこだか忘れちゃいましたが、エセだったらスミマセン)。

要するにCentOS7.7ではpython3が標準搭載だから他でpython3.6系を入れてると被ってしまうってことですね。

それって移行とか何やら難しそう・・・

 

てーことで、python3を気合いを入れて全部直しますよ!

ひとまず

python36uパッケージを削除

sudo yum remove python36u

f:id:DreamerDream:20190927130909p:plain

けしちゃった・・・


 

そして新たにCentOS7.7でが標準となったpython3をインストール

sudo yum install python3

f:id:DreamerDream:20190927130920p:plain

 

改めてyumアップデート

sudo yum update

更新されたカーネルバージョンは

CentOS Linux release 7.7.1908 (Core)

これでカーネルのアップデートは完了です!

 

しかし・・・

あれ?肝心のDjangoページが表示されなくなったぞ・・・?

動かない・・悪化させた?

 

Apacheの設定を見直すと/etc/httpd/conf.modules.d/にwsgiの設定ファイルで指定されている

/etc/httpd/modules/mod_wsgi_python3.6.so

が無くなってます。そういやwsgiをアンインストールしちゃったもんな(気付くのに半日かかった)。

 

上のアンインストールとインストール一覧を見比べるとどうやら消した

python36u-mod_wsgi

python36u-devel

の代わりのものがインストールされていません。

 

以前のDjangoを設定する時の備忘録

dreamerdream.hateblo.jp

ここで、

sudo yum install -y python36u python36u-libs python36u-devel python36u-pip

sudo yum install -y python36u-mod_wsgi

として

 

後からpython36u用のwsgiをインストールしていました。 

あー、備忘録があって良かった!

 

同じようなパッケージを探しますとpython36用のものが沢山ありました。

(「python3に統一ちゃうんかーいっ!」ってツッコミが入りそう・・・、python36uを消して、どう違うのかわかんないpython36を入れるってどーなの?ってことですが、とりあえずpython3をインストールするとpython36系インストールされるようで、素直に動いてくれているので良しとします。)

sudo yum install python36-libs.x86_64(already installed)

sudo yum install python36-devel.x86_64

sudo yum install python36-mod_wsgi.x86_64

で、develとwsgiをpython36バージョンで新規インストールしますと、

mod_wsgi_python3.6.soファイルが復活しました。

/etc/httpd/conf.modules.d/10-wsgi-python3.6.conf

でも新たにファイルが作成され、中身がクリアされています。

<クリアされた中身>

# NOTE:
# Only one mod_wsgi can be loaded at a time.
# Don't attempt to load if already loaded.
<IfModule !wsgi_module>
LoadModule wsgi_module modules/mod_wsgi_python3.6.so
</IfModule>

 

以前のものはご丁寧に/etc/httpd/conf.modules.d/10-wsgi-python3.6.conf.rpmsaveにコピーされていましたので、内容は以前のものと同じよう書き換えます。

(僕の場合はextra/main.confにwsgi内容な全て纏めているのメインの設定ファイルをインクルードするだけ)

 <過去記事>

dreamerdream.hateblo.jp

 

<IfModule !wsgi_module>
LoadModule wsgi_module modules/mod_wsgi_python3.6.so

Include conf.modules.d/extra/main.conf

</IfModule>

 

 

最後に

/etc/yum.conf

exclude=kernel*

を忘れないように有効にして再起動。

 

やれやれ、今回は変に手こずりましたが無事にカーネルのアップデートは完了です。

 

今回のアップデートは本番環境のバックアップイメージを使ってアップデート試用のサーバーを新規で立ち上げてトライしました。

本番と同じ環境で何度でもトライ出来るというのはすごく心強くて助かりましたのでConohaのVPSはお勧めしておきます!(しかも料金は1サーバー1時間1円換算なので追加費用はかなり安い ※サーバーは停止時も料金加算されます。利用が終ったら削除しましょう)

 

↓1時間1円のVPSサーバー

 

CentOS8への移行も面倒そうだなー、やだなー。と思うのでした。

kampa.me