Developer/Posting

MySQL_OSError: mysql_config not found (Ubuntu 18.04) / E: 문제를 바로잡을 수 없습니다. 망가진 고정 패키지가 있습니다.

codingzipsa 2020. 12. 23. 11:46
반응형

1. 문제 확인

회사 서버 내 미니콘다 설치 후 pip를 이용하여 프로젝트 필요 라이브러리 설치를 시도하였다.

하지만 라이브러리 중 mysqlclient 설치하려고 하는데 오류가 발생하였다.

에러메세지는 아래와 같다.

 

Collecting mysqlclient
  Using cached mysqlclient-2.0.2.tar.gz (88 kB)
    ERROR: Command errored out with exit status 1:
     command: /home/liberabit/miniconda3/envs/twenty/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-kw_9xvw4/mysqlclient_da16b6521d1f41169c3f52880bfe6d9c/setup.py'"'"'; __file__='"'"'/tmp/pip-install-kw_9xvw4/mysqlclient_da16b6521d1f41169c3f52880bfe6d9c/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-zkox_45r
         cwd: /tmp/pip-install-kw_9xvw4/mysqlclient_da16b6521d1f41169c3f52880bfe6d9c/
    Complete output (12 lines):
    /bin/sh: 1: mysql_config: Permission denied
    /bin/sh: 1: mariadb_config: Permission denied
    /bin/sh: 1: mysql_config: Permission denied
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-install-kw_9xvw4/mysqlclient_da16b6521d1f41169c3f52880bfe6d9c/setup.py", line 15, in <module>
        metadata, options = get_config()
      File "/tmp/pip-install-kw_9xvw4/mysqlclient_da16b6521d1f41169c3f52880bfe6d9c/setup_posix.py", line 65, in get_config
        libs = mysql_config("libs")
      File "/tmp/pip-install-kw_9xvw4/mysqlclient_da16b6521d1f41169c3f52880bfe6d9c/setup_posix.py", line 31, in mysql_config
        raise OSError("{} not found".format(_mysql_config_path))
    OSError: mysql_config not found
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

 

구글링을 해보니 libmysqlclient-dev 설치가 되어있지 않아 생긴 문제라고 한다.

apt를 이용하여 설치를 진행! 하지만 '망가진 고정 패키지가 있습니다...?'

 

$ sudo apt install libmysqlclient-dev
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
몇몇 패키지를 설치할 수 없습니다. 요청한 상황이 불가능할 수도 있고,
불안정 배포판을 사용해서 일부 필요한 패키지를 아직 만들지 않았거나,
아직 Incoming에서 나오지 않은 경우일 수도 있습니다.
이 상황을 해결하는데 다음 정보가 도움이 될 수도 있습니다:

다음 패키지의 의존성이 맞지 않습니다:
 libmysqlclient-dev : 의존: zlib1g-dev 하지만 %s 패키지를 설치하지 않을 것입니다
E: 문제를 바로잡을 수 없습니다. 망가진 고정 패키지가 있습니다.

 

2. 문제 해결

결론은 의존 패키지를 에러 메세지에 나온대로 잘 설치해주면 된다!

위 메세지에서 마지막 2번째 줄, 의존: zlib1g-dev를 설치 시도하며 나오는 메세지에 따라 이어 설치하였더니 해결되었다.

아래는 내가 의존 패키지를 설치하고 libmysqlclient-dev까지 설치를 마치는 과정이다.

1) zlib1g-dev 설치 시도 -> libc6-dev 또는 libc-dev 설치를 유도

 

$ sudo apt install zlib1g-dev
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
몇몇 패키지를 설치할 수 없습니다. 요청한 상황이 불가능할 수도 있고,
불안정 배포판을 사용해서 일부 필요한 패키지를 아직 만들지 않았거나,
아직 Incoming에서 나오지 않은 경우일 수도 있습니다.
이 상황을 해결하는데 다음 정보가 도움이 될 수도 있습니다:

다음 패키지의 의존성이 맞지 않습니다:
 zlib1g-dev : 의존: libc6-dev 하지만 %s 패키지를 설치하지 않을 것입니다 혹은
                      libc-dev
E: 문제를 바로잡을 수 없습니다. 망가진 고정 패키지가 있습니다.

 

2) libc6-dev 설치 시도 -> libc6 설치를 유도

 

$ sudo apt install libc6-dev
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
몇몇 패키지를 설치할 수 없습니다. 요청한 상황이 불가능할 수도 있고,
불안정 배포판을 사용해서 일부 필요한 패키지를 아직 만들지 않았거나,
아직 Incoming에서 나오지 않은 경우일 수도 있습니다.
이 상황을 해결하는데 다음 정보가 도움이 될 수도 있습니다:

다음 패키지의 의존성이 맞지 않습니다:
 libc6-dev : 의존: libc6 (= 2.27-3ubuntu1.2) 하지만 2.27-3ubuntu1.3 패키지를 설치할 것입니다
E: 문제를 바로잡을 수 없습니다. 망가진 고정 패키지가 있습니다.

 

3. libc6=2.27-3ubuntu1.2 설치 시도 -> 완료!

하단 메세지 중 libmysqlclient가 설치되었다는 내용이 보인다.

 

sudo apt install libc6=2.27-3ubuntu1.2
패키지 목록을 읽는 중입니다... 완료
  node-inflight node-inherits node-ini node-is-builtin-module node-isexe node-json-stringify-safe
  node-lockfile node-lru-cache node-mime node-minimatch node-mkdirp node-mute-stream node-node-uuid
  node-nopt node-normalize-package-data node-npmlog node-once node-osenv node-path-is-absolute
  node-pseudomap node-qs node-read node-read-package-json node-request node-retry node-rimraf
  node-semver node-sha node-slide node-spdx-correct node-spdx-expression-parse node-spdx-license-ids
  node-tar node-tunnel-agent node-underscore node-validate-npm-package-license node-which node-wrappy
  node-yallist nodejs-doc
Use 'sudo apt autoremove' to remove them.
제안하는 패키지:
  glibc-doc
다음 패키지를 지울 것입니다:
  libc6-dbg
다음 패키지를 다운그레이드할 것입니다:
  libc6
0개 업그레이드, 0개 새로 설치, 1개 업그레이드, 1개 제거 및 1개 업그레이드 안 함.
2,827 k바이트 아카이브를 받아야 합니다.
이 작업 후 40.4 M바이트의 디스크 공간이 비워집니다.
계속 하시겠습니까? [Y/n] Y
받기:1 http://security.ubuntu.com/ubuntu bionic-security/main amd64 libc6 amd64 2.27-3ubuntu1.2 [2,827 kB]
내려받기 2,827 k바이트, 소요시간 2초 (1,266 k바이트/초)
패키지를 미리 설정하는 중입니다...
(데이터베이스 읽는중 ...현재 232827개의 파일과 디렉터리가 설치되어 있습니다.)
Removing libc6-dbg:amd64 (2.27-3ubuntu1.3) ...
dpkg: 경고: downgrading libc6:amd64 from 2.27-3ubuntu1.3 to 2.27-3ubuntu1.2
(데이터베이스 읽는중 ...현재 232537개의 파일과 디렉터리가 설치되어 있습니다.)
Preparing to unpack .../libc6_2.27-3ubuntu1.2_amd64.deb ...
Unpacking libc6:amd64 (2.27-3ubuntu1.2) over (2.27-3ubuntu1.3) ...
libc6:amd64 (2.27-3ubuntu1.2) 설정하는 중입니다 ...
Processing triggers for libc-bin (2.27-3ubuntu1.3) ...
(twenty) liberabit@liberabit-server:~$ sudo apt install libmysqlclient-dev
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
다음 패키지가 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  gyp javascript-common libc-ares2 libhttp-parser2.7.1 libjs-async libjs-inherits libjs-jquery
  libjs-node-uuid libjs-underscore libuv1 libuv1-dev linux-hwe-5.4-headers-5.4.0-42 node-abbrev
  node-ansi node-ansi-color-table node-archy node-async node-balanced-match node-block-stream
  node-brace-expansion node-builtin-modules node-combined-stream node-concat-map node-cookie-jar
  node-delayed-stream node-forever-agent node-form-data node-fs.realpath node-fstream
  node-fstream-ignore node-github-url-from-git node-glob node-graceful-fs node-gyp node-hosted-git-info
  node-inflight node-inherits node-ini node-is-builtin-module node-isexe node-json-stringify-safe
(데이터베이스 읽는중 ...현재 232537개의 파일과 디렉터리가 설치되어 있습니다.)
Preparing to unpack .../0-libc-dev-bin_2.27-3ubuntu1.2_amd64.deb ...
Unpacking libc-dev-bin (2.27-3ubuntu1.2) ...
Selecting previously unselected package linux-libc-dev:amd64.
Preparing to unpack .../1-linux-libc-dev_4.15.0-128.131_amd64.deb ...
Unpacking linux-libc-dev:amd64 (4.15.0-128.131) ...
Selecting previously unselected package libc6-dev:amd64.
Preparing to unpack .../2-libc6-dev_2.27-3ubuntu1.2_amd64.deb ...
Unpacking libc6-dev:amd64 (2.27-3ubuntu1.2) ...
Selecting previously unselected package libmysqlclient20:amd64.
Preparing to unpack .../3-libmysqlclient20_5.7.32-0ubuntu0.18.04.1_amd64.deb ...
Unpacking libmysqlclient20:amd64 (5.7.32-0ubuntu0.18.04.1) ...
Selecting previously unselected package zlib1g-dev:amd64.
Preparing to unpack .../4-zlib1g-dev_1%3a1.2.11.dfsg-0ubuntu2_amd64.deb ...
Unpacking zlib1g-dev:amd64 (1:1.2.11.dfsg-0ubuntu2) ...
Selecting previously unselected package libmysqlclient-dev.
Preparing to unpack .../5-libmysqlclient-dev_5.7.32-0ubuntu0.18.04.1_amd64.deb ...
Unpacking libmysqlclient-dev (5.7.32-0ubuntu0.18.04.1) ...
Selecting previously unselected package manpages-dev.
Preparing to unpack .../6-manpages-dev_4.15-1_all.deb ...
Unpacking manpages-dev (4.15-1) ...
linux-libc-dev:amd64 (4.15.0-128.131) 설정하는 중입니다 ...
libmysqlclient20:amd64 (5.7.32-0ubuntu0.18.04.1) 설정하는 중입니다 ...
libc-dev-bin (2.27-3ubuntu1.2) 설정하는 중입니다 ...
manpages-dev (4.15-1) 설정하는 중입니다 ...
libc6-dev:amd64 (2.27-3ubuntu1.2) 설정하는 중입니다 ...
zlib1g-dev:amd64 (1:1.2.11.dfsg-0ubuntu2) 설정하는 중입니다 ...
libmysqlclient-dev (5.7.32-0ubuntu0.18.04.1) 설정하는 중입니다 ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Processing triggers for libc-bin (2.27-3ubuntu1.3) ...

 

4. mysqlclient 설치

다시 pip를 이용하여 mysqlclient 설치 시도, 성공 메세지 확인!

 

Building wheels for collected packages: mysqlclient
  Building wheel for mysqlclient (setup.py) ... done
  Created wheel for mysqlclient: filename=mysqlclient-2.0.1-cp38-cp38-linux_x86_64.whl size=103737 sha256=6ac86b08d2045cacd7dc6db80a8a7a7e5255cec2292d
  Stored in directory: /.cache/pip/wheels/b9/b0/63/fb1bf1bfddaf244627c94fa2eb59e706d1170f4ca4f8b72d59
Successfully built mysqlclient

 

인제 마음 편하게 mysql 접속을 마무리 지을 수 있을 것 같다:)

혹시 틀린 부분이나 다른 좋은 솔루션이 있다면 댓글 부탁드립니다!

반응형