만들려고 하는 프로그램이 pyCurl을 필요로 하는데, pip로 설치하려고 하다보니 시놀로지에서는 아래 메세지를 뱉는다.
FileNotFoundError: [Errno 2] No such file or directory: ‘curl-config’
Entware 를 깔고 python3-openssl 을 깔아줬더니 메세지가 변했다.
sudo opkg install python3-openssl
ModuleNotFoundError: No module named ‘setuptools’
setuptools 를 깔자
sudo opkg install python3-setuptools
뭐지. 다시 curl-config를 찾을 수 없다는 걸로 바뀌었다. 그런데 그냥 Terminal 에서 curl은 잘 있는데, 대체 왜 안되는건지 궁금하다.
sudo opkg install python-curl 로 하면 python3 말고 python (2버젼)에서는 pycurl이 import 된다. 나는 python3 에서 쓰고 싶다!
pycurl 자체를 python3 에 직접 설치해보는 걸로 도전. pycurl 소스를 pycurl 홈페이지에서 받고, python3 에서 설치를 해보았으나, curl-config 자체의 경로를 특정할 수가 없다.
(if necessary, become root) tar -zxvf pycurl-$VER.tar.gz cd pycurl-$VER python3 setup.py install --curl-config=/usr/local/bin/curl-config
curl 자체는 돌아가는 걸로 보이고 opkg로 libcurl 도 설치했으나 curl-config 가 안나온다. libcurl-dev를 설치해야하는데 opkg에는 해당 패키지가 없다.
이런저런 시도를 해봤는데 Entware (opkg)를 버리고 Optware (ipkg)로 bootstrap 을 변경했다. ipkg에는 nano가 없어서 다시 vi를 사용해야하지만….
ipkg로 바꾸고 libcurl-dev 를 설치하고 다시 pip로 pycurl 설치를 해보았더니 에러 메시지가 바뀌었다.
Warning: libcurl is configured to use SSL, but we have not been able to determine which SSL backend it is using. If your Curl is built against OpenSSL, LibreSSL, BoringSSL, GnuTLS, NSS or mbedTLS please specify the SSL backend manually. For other SSL backends please ignore this message.unable to execute ‘/usr/local/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-ccache-gcc’: No such file or directory
ERROR: Failed building wheel for pycurl
gcc 에러가 나길래 (아마 opkg 에서 ipkg로 바꾸면서 라이브러리 참조가 깨진것 같다.) ipkg에서 다시 gcc를 설치하고 library를 여러개 libc, libc-dev 등등 설치했다. 그리고 openssl 을 사용하도록 옵션을 주었다.
python3 setup.py install –with-openssl
아 그래도 안된다. 온갖 패키지/라이브러리를 설치해도 안된다. 시놀로지 패키지 센터에서 설치한 python3를 버리고 ipkg로 python3를 새로 설치해서 해본다. 이래도 안되면 그냥 도커에 올려서 해야겠다..
ipkg로 python3 를 설치하면 python3.7 버젼이 깔린다. 거기에 pip랑 설치하고, pycurl을 아래와 같이 설치(그냥 pycurl 설치했더니 openssl 이랑 문제가 있어서 openssl 옵션을 주고 설치했다.)하니, 잘 된다.
python3.7 -m pip install –user –compile –install-option=”–with-openssl” pycurl
정리하자면, 시놀로지 패키지로 받아서 설치한 python3로는 (버젼문제인지 라이브러리 의존성 문제인지 정확히 모르겠지만) pycurl을 설치할 수 없었고, opkg가 아닌 ipkg 로 python 을 설치하고, 관련 library들을 설치(사실 너무 많이 깔아서 정확히 무슨 library들이 필요한진 모르겠지만) 한 후에는 가능했다.
아무튼 이제 개발하자… 이래서 그냥 도커로 돌리는게 편하겠다 싶다..
Leave a Reply