先日、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_64Error Summary
-------------
どうやら競合ファイルとやらが1つや2つなら消せばいいんだけど、そうじゃなくスッゲー沢山あるそうな。
こんなんもうどうしようもないやん。。。凹
調べるとバージョンアップでpython36uはpython3に統一されているという(いろいろ調べすぎてソースがどこだか忘れちゃいましたが、エセだったらスミマセン)。
要するにCentOS7.7ではpython3が標準搭載だから他でpython3.6系を入れてると被ってしまうってことですね。
それって移行とか何やら難しそう・・・
てーことで、python3を気合いを入れて全部直しますよ!
ひとまず
python36uパッケージを削除
sudo yum remove python36u
けしちゃった・・・
そして新たにCentOS7.7でが標準となったpython3をインストール
sudo yum install python3
改めてyumアップデート
sudo yum update
更新されたカーネルバージョンは
これでカーネルのアップデートは完了です!
しかし・・・
あれ?肝心のDjangoページが表示されなくなったぞ・・・?
動かない・・悪化させた?
Apacheの設定を見直すと/etc/httpd/conf.modules.d/にwsgiの設定ファイルで指定されている
が無くなってます。そういやwsgiをアンインストールしちゃったもんな(気付くのに半日かかった)。
上のアンインストールとインストール一覧を見比べるとどうやら消した
python36u-mod_wsgi
python36u-devel
の代わりのものがインストールされていません。
以前のDjangoを設定する時の備忘録
ここで、
sudo yum install -y python36u python36u-libs python36u-devel python36u-pip
と
として
後からpython36u用のwsgiをインストールしていました。
あー、備忘録があって良かった!
同じようなパッケージを探しますとpython36用のものが沢山ありました。
(「python3に統一ちゃうんかーいっ!」ってツッコミが入りそう・・・、python36uを消して、どう違うのかわかんないpython36を入れるってどーなの?ってことですが、とりあえずpython3をインストールするとpython36系インストールされるようで、素直に動いてくれているので良しとします。)
sudo yum install python36-libs.x86_64(already installed)
で、develとwsgiをpython36バージョンで新規インストールしますと、
mod_wsgi_python3.6.soファイルが復活しました。
でも新たにファイルが作成され、中身がクリアされています。
<クリアされた中身>
# 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内容な全て纏めているのメインの設定ファイルをインクルードするだけ)
<過去記事>
<IfModule !wsgi_module>
LoadModule wsgi_module modules/mod_wsgi_python3.6.soInclude conf.modules.d/extra/main.conf
</IfModule>
最後に
/etc/yum.conf
の
exclude=kernel*
を忘れないように有効にして再起動。
やれやれ、今回は変に手こずりましたが無事にカーネルのアップデートは完了です。
今回のアップデートは本番環境のバックアップイメージを使ってアップデート試用のサーバーを新規で立ち上げてトライしました。
本番と同じ環境で何度でもトライ出来るというのはすごく心強くて助かりましたのでConohaのVPSはお勧めしておきます!(しかも料金は1サーバー1時間1円換算なので追加費用はかなり安い ※サーバーは停止時も料金加算されます。利用が終ったら削除しましょう)
↓1時間1円のVPSサーバー
CentOS8への移行も面倒そうだなー、やだなー。と思うのでした。