PythonとMariaDBをインストールしたので、せっかくだからPythonからMariaDBを触りたいと思い。
いい感じのパッケージないかなーと調べていたら「mysqlclient」というものがあるようなので、それを使ってみようと意気揚々とインストールしようとしたらめちゃくちゃエラー吐いてしんどかった話です。
同じような人がいたときの助けになればよいと思いまとめておきます。
あと、たぶん次同じようなことをしようとしたときにまとめてないと忘れる。
環境
OS
cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
Kernel
uname -a
Linux ********** 3.10.0-862.11.6.el7.x86_64 #1 SMP Tue Aug 14 21:49:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Python
python --version
Python 3.6.6
MariaDB
# yum list installed
MariaDB-server.x86_64 10.3.14-1.el7.centos @mariadb-main
pipでmysqlclientをインストールする
とりあえずインストールしてみる。
# pip install mysqlclient
Failed building wheel for mysqlclient
Running setup.py clean for mysqlclient
Failed to build mysqlclient
Installing collected packages: mysqlclient
Running setup.py install for mysqlclient … error
まあ、なんとなく予想していましたよ・・・
pipをアップデートする
エラー内容を確認すると、以下メッセージが表示されていました。
You are using pip version 19.0.3, however version 19.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
英検4級の英語力によると、おそらく「pipのバージョンが古いのでアップデートせよ」というように読めたので、指示通りアップデート。
# pip install --upgrade pip
Collecting pip
Downloading https://files.pythonhosted.org/packages/5c/e0/be401c003291b56efc55aeba6a80ab790d3d4cece2778288d65323009420/pip-19.1.1-py2.py3-none-any.whl (1.4MB)
100% |????????????????????????????????| 1.4MB 17.6MB/s
Installing collected packages: pip
Found existing installation: pip 19.0.3
Uninstalling pip-19.0.3:
Successfully uninstalled pip-19.0.3
Successfully installed pip-19.1.1
OK!
gccを導入する。
unable to execute 'gcc': No such file or directory
error: command 'gcc' failed with exit status 1
以上のエラーも吐いていたので、同じく対応します。
とはいえこれは簡単で、
「gcc入ってねーぞコンパイルできねーじゃねーか」
って怒られているだけです。ので、入れてあげます。
# yum install gcc
インストール:
gcc.x86_64 0:4.8.5-36.el7_6.2
依存性関連をインストールしました:
cpp.x86_64 0:4.8.5-36.el7_6.2 glibc-devel.x86_64 0:2.17-260.el7_6.4
glibc-headers.x86_64 0:2.17-260.el7_6.4 kernel-headers.x86_64 0:3.10.0-957.12.1.el7
libmpc.x86_64 0:1.0.1-3.el7 mpfr.x86_64 0:3.1.1-4.el7
依存性を更新しました:
libgcc.x86_64 0:4.8.5-36.el7_6.2 libgomp.x86_64 0:4.8.5-36.el7_6.2
完了しました!
新しいサーバを立てるとついついここら辺を忘れちゃうんですよね・・
テンプレートを作れって話ですけど・・。
pipインストールリベンジその1
# pip install mysqlclient
MySQLdb/_mysql.c:37:20: 致命的エラー: Python.h: そのようなファイルやディレクトリはありません
#include "Python.h"
ぬわあああああん
python-develを導入する
そもそもPython.hって何ぞや?って調べてみると、python-develに入っているモジュールのようです。
ので、とりあえずpython-develをインストールしてみる。
# yum install python-devel
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
base: ftp-srv2.kddilabs.jp
epel: epel.scopesky.iq
extras: ftp-srv2.kddilabs.jp
updates: ftp-srv2.kddilabs.jp
パッケージ python-devel-2.7.5-77.el7_6.x86_64 はインストール済みか最新バージョンです
何もしません
あれ?
って一瞬思ったのですが、よく考えたら使っているpythonは3.6。
よって、python-develも3.6用のものを導入しないといけません。
# yum install python36-devel
インストール:
python36-devel.x86_64 0:3.6.6-5.el7
依存性関連をインストールしました:
dwz.x86_64 0:0.11-3.el7 perl-srpm-macros.noarch 0:1-8.el7
python-rpm-macros.noarch 0:3-23.el7 python-srpm-macros.noarch 0:3-23.el7
python3-rpm-macros.noarch 0:3-23.el7 redhat-rpm-config.noarch 0:9.1.0-87.el7.centos
zip.x86_64 0:3.0-11.el7
完了しました!
OK!
pipインストールリベンジその2
# pip install mysqlclient
/bin/ld: -lmariadb が見つかりません
collect2: エラー: ld はステータス 1 で終了しました
error: command 'gcc' failed with exit status 1
ヌゥン!ヘッ!ヘッ! ア゛ア゛ア゛ア゛ァ゛ァ゛ァ゛ァ゛ア゛↑ア゛↑ア゛↑ア゛↑ア゛ア゛ア゛ァ゛ァ゛ァ゛ァ゛!!!! ウ゛ア゛ア゛ア゛ア゛ア゛ア゛ァ゛ァ゛ァ゛ァ゛ァ゛ァ゛ァ!!!!! フ ウ゛ウ゛ウ゛ゥ゛ゥ゛ゥ゛ン!!!! フ ウ゛ゥ゛ゥ゛ゥン!!!!
(酸欠)
MariaDB-sharedをインストールする
/bin/ld: -lmariadb が見つかりません
これって何ぞや?と調べてみると、「MariaDB-devel」「MariaDB-shared」がインストールされていないときに出力される可能性のあるエラーとのこと。
MariaDB-develはすでにインストールされていたので、MariaDB-sharedをインストールしてみる。
# yum install MariaDB-shared
インストール:
MariaDB-shared.x86_64 0:10.3.14-1.el7.centos
完了しました!
これで・・・タノムゥ・・・
pipインストールリベンジその3
# pip install mysqlclient
Collecting mysqlclient
Using cached https://files.pythonhosted.org/packages/f4/f1/3bb6f64ca7a429729413e6556b7ba5976df06019a5245a43d36032f1061e/mysqlclient-1.4.2.post1.tar.gz
Building wheels for collected packages: mysqlclient
Building wheel for mysqlclient (setup.py) … - \ done
Stored in directory: /root/.cache/pip/wheels/30/91/**/2ee952bce05b1247*****5c6710c6130e49468a5240ae27134
Successfully built mysqlclient
Installing collected packages: mysqlclient
Successfully installed mysqlclient-1.4.2.post1
成し遂げたぜ。
まとめ
とりあえずこれでmysqlclientが使えるようになったはずです。
思ったのは、pipってやっぱ便利だわってこと。
これソースインストールだったらもっと手間かかってただろうなあ・・・。
コメント