토요일, 4월 15, 2017

안드로이드에 터미널 기반 개발 환경 세팅하기

안드로이드는 리눅스 계열의 운영체제를 사용한다. 따라서 맥북이나 Ubuntu 등의 운영체제에서 개발하는 것이 익숙한 사람이라면, 한 번쯤 안드로이드 기반 태블릿이나 스마트폰에서 터미널을 활용해 개발을 해보고 싶다는 생각을 가질 것이다.
이 글에서는 안드로이드 환경에서 Vim이나 Git 등 여러가지 유용한 패키지들을 설치하고, Python과 NumPy 모듈을 다운로드 하여 개발 환경을 갖추는 방법에 대해 알아보자.

1. 준비하기
우선 터미널 환경을 사용하기 위해서는 터미널 에뮬레이터가 필요하다. 다양한 종류의 어플리케이션이 있지만, 앱 스토어에서 Termux라는 어플리케이션을 다운로드한다.
다운로드가 완료되고 어플리케이션을 실행하면 터미널을 사용할 수 있다. 우선 홈으로 이동한다.
pwd 명령어를 통해 현재 위치를 검색해보면 data라는 디렉터리 하위에 있는 것을 볼 수 있다. 나중에 Termux 어플리케이션을 삭제할 때 data 파일들까지 모두 삭제할 수 있기 때문에 되도록이면 이 홈 경로를 루트 디렉터리로 여기고 작업하는 것을 추천한다.

2. Vim과 Git 설치하기
본격적으로 유용한 패키지들을 설치하기 위해서는 별다른 설정없이 명령어를 입력하면 된다. Ubuntu 환경에서 apt-get install 또는 apt install을 사용했다면, Termux에서는 pkg install을 사용한다. 다음 명령어들을 통해 Vim과 Git을 설치하자.
pkg install vim
pkg install git
설치 후에는 PC 환경에서 사용하는 Vim, Git과 동일하게 사용 가능하다. 예를 들어, .vimrc 파일을 만들어서 Vim을 커스터마이징 하거나, git init, git add, git commit 등의 명령어가 사용 가능하다. 이외에도 다른 유용한 모듈들을 다운로드 받으려면 pkg install 명령어를 활용하면 편리하게 다운로드 가능하다.

3. Python 개발 환경 세팅하기
Vim과 Git까지 설치를 완료했다면 Python 개발 환경을 구성하고 NumPy 모듈까지 설치해보자. 우선 Python을 설치한다.
pkg install python
이 명령어를 입력하면 기본적으로 Python3가 설치된다. packages install python3라고 명령어를 입력하면 python3 모듈을 찾을 수 없다는 오류 메시지가 나타난다.
설치를 완료하고 콘솔에 python이라고 입력했을 때 오류없이 위의 결과가 정상적으로 출력되는지 확인한다. Python 설치가 정상적으로 완료되었다면 이제 pip install 명령어를 사용할 수 있다. 이를 통해 다양한 Python 모듈들을 설치할 수 있는데, 우선 NumPy를 설치하기에 앞서 Python-Dev를 다운로드한다.
pkg install python-dev
Python-Dev까지 설치를 완료했다면, pip install을 통해 NumPy를 설치할 준비가 된 것이다. 하지만, 한 가지 주의사항이 있다. PC 환경에서 설치하듯이 pip install numpy를 입력하면 설치는 정상적으로 되지만, 실제로 NumPy 모듈을 Python에서 import하면 다음과 같은 에러가 발생할 수도 있다.
import numpy
Traceback (most recent call last):
File "", line 1, in
File "/data/data/com.termux/files/usr/lib/python3.5/site-packages/numpy/init.py", line 142, in
from . import add_newdocs
File "/data/data/com.termux/files/usr/lib/python3.5/site-packages/numpy/add_newdocs.py", line 13, in
from numpy.lib import add_newdoc
File "/data/data/com.termux/files/usr/lib/python3.5/site-packages/numpy/lib/init.py", line 8, in
from .type_check import *
File "/data/data/com.termux/files/usr/lib/python3.5/site-packages/numpy/lib/type_check.py", line 11, in
import numpy.core.numeric as _nx
File "/data/data/com.termux/files/usr/lib/python3.5/site-packages/numpy/core/init.py", line 21, in
from . import umath
ImportError: dlopen failed: cannot locate symbol "__mulodi4" referenced by "/data/data/com.termux/files/usr/lib/python3.5/site-packages/numpy/core/umath.cpython-35m-arm-linux-gnueabi.so"
만약 이미 pip install numpy 명령어를 통해 NumPy를 설치해버려서 위의 에러 메시지를 확인했다면, pip uninstall numpy 명령어를 입력하여 NumPy 모듈을 삭제한 뒤에 다음의 명령어를 입력하여 다시 설치한다.
LDFLAGS="-lm -lcompiler_rt" pip install --no-cache-dir numpy
설치를 완료한 뒤에 확인해보면 NumPy 모듈이 제대로 동작하는 것을 볼 수 있다.

5. 요약
cd ~
pkg install git
pkg install vim
pkg install python
pkg install python-dev
LDFLAGS="-lm -lcompiler_rt" pip install --no-cache-dir numpy
python
import numpy

댓글 10개:

  1. Turmux에서 Python!!! 좋은 기사 감사드립니다.
    그런데 위의 numpy 설치 시 Broken Toolchain... 이라는 에러메시지가 뜨는데 혹시 무엇이 문제인지 알 수 있을까요?

    답변 기대하겠습니다.
    감사합니다.

    답글삭제
    답글
    1. packages install python-dev
      LDFLAGS="-lm -lcompiler_rt" pip install --no-cache-dir numpy
      이 두 개를 입력하신거 맞으신가요?
      이렇게 하셨는데도 안된다면 제 생각에는 파이썬 혹은 컴파일러 버전과 관련된 문제같네요
      먼저 update와 upgrade를 진행한 뒤에 다시 설치를 해보는 건 어떨까요?

      삭제
    2. vim하고 git다운 명령어를 쳤는데 command not found라고 떠요 왜그렇죠?

      삭제
    3. 음 버전 업데이트가 돼서 명령어가 변경될 수도 있어요! 한 번 명령어 창에 apt-get install 이라고 입력해보시면 패키지 설치를 위해서는 ~~~ 명령어를 사용하라는 메시지가 나올 거에요! 한 번 그걸로 시도해보시겠어요?

      삭제
  2. 좋은글 잘 봤습니다
    한가지 궁금한게있는데요 termux 설치하면 gcc 로 c 코드 컴파일하고 실행하는것도 가능한가요??
    예를 들어 폰을 간단한 소켓 에코서버로 사용하는게 가능한지 궁금합니다.

    답글삭제
    답글
    1. 네! 가능합니다! git, vim, gcc, g++ 등 기본적인 것들은 대부분 잘 되더군여 ^^

      삭제
    2. 네 함 해봐야겠네요 답변 감사합니다 ^^

      삭제
  3. numpy 모듈을 잘못 깔아서 pip uninstall 하려는데 warning:skipping numpy as it is not installed 라고 뜨네요;
    어찌 해야 되나요?

    답글삭제
  4. Python-Dev를 설치하려는데
    E: Package 'python-dev' has no installation candidate
    라고 떠요.
    $

    답글삭제
    답글
    1. 저도 그렇게 떠서 찾아봤는데
      2019년 9월부로 python-dev가 메인 파이썬에 포함되었다고 하더라구여
      python-dev 설치 필요 없이 python 만으로 설치가 되었을겁니다.

      삭제