※ 개인 컴퓨터는 데비안 리눅스(우분투, 리눅스 민트, ...)라는 것을 전제하고 설명하겠습니다. 이론적으로 윈도우에서도 아래 작업을 따라하는 것이 가능은 하나, 설명하기 복잡하므로 넘어가겠습니다.
※ 여기부터는 wiki.openstreetmap.org/wiki/Taginfo/Installation와 같이 보시면 도움이 됩니다.
1. Github에서 프로젝트 파일 가져오기
Taginfo 실행 파일은 github.com/taginfo/taginfo에 올라와 있고, Taginfo 데이터베이스 제작에 필요한 파일은 github.com/taginfo/taginfo-tools에 올라와 있습니다. Github에 있는 파일들을 라즈베리 파이와 개인 컴퓨터에 각각 가져와 봅시다.
먼저 ssh로 라즈베리 파이에 접속하고, 개인 컴퓨터에서 별도의 터미널을 켜 줍니다.
그런 다음 소스 파일이 들어갈 폴더를 만들고, 그 안에 파일을 다운로드하도록 하겠습니다. 다음 명령어를 입력하세요.
(라즈베리 파이에서)
cd /home/ubuntu
mkdir osm && cd osm
git clone https://github.com/taginfo/taginfo.git
========== 코드 설명 ==========
1. ubuntu 계정의 home 디렉토리로 이동한다.
2. 이동한 그 위치에 osm이라는 이름의 디렉토리를 만들고, 그 안으로 이동한다.
3. https://github.com/taginfo/taginfo.git 프로젝트를 가져온다.
(개인 컴퓨터에서)
cd ~
mkdir osm && cd osm
git clone https://github.com/taginfo/taginfo.git
git clone https://github.com/taginfo/taginfo-tools.git
========== 코드 설명 ==========
1. 현재 접속한 계정의 home 디렉토리로 이동한다.
2. 이동한 그 위치에 osm이라는 이름의 디렉토리를 만들고, 그 안으로 이동한다.
3. https://github.com/taginfo/taginfo.git 프로젝트를 가져온다.
4. https://github.com/taginfo/taginfo-tools.git 프로젝트를 가져온다.
만약 git 명령어가 먹히지 않는다면 sudo apt install git으로 git을 설치해 주세요.
taginfo-tools는 라즈베리 파이에 설치하지 않습니다. 데이터베이스 제작은 RAM을 엄청나게 이용하기 때문에(대한민국 전체 기준, 32GB) 웬만한 라즈베리 파이로는 끝까지 못 돌리고 뻗어버립니다.
나중의 편의를 위해 데이터베이스가 들어갈 디렉토리와 데이터베이스 압축파일이 들어갈 디렉토리를 따로 만들어 주겠습니다.
(라즈베리 파이, 개인 컴퓨터 모두)
mkdir data download
========== 코드 설명 ==========
1. 현재 디렉토리에 data 디렉토리와 download 디렉토리를 만든다.
ls를 쳤을 때 위와 같이 파란색 글씨 4개가 나와야 합니다.
2. 데이터베이스 제작에 필요한 프로그램 컴파일
데이터베이스를 만드는 '코드'는 taginfo-tools에 있지만, '프로그램'은 없습니다. 그럼 어떻게 하느냐, 직접 컴파일해서 써야 합니다. 이렇게 사용자에게 컴파일을 맡기는 이유는 여러 가지가 있지만, 한 마디로 설명하겠습니다.
"개인 컴퓨터(x86_64)에서 컴파일한 프로그램은 라즈베리 파이(ARM64)에서 돌릴 수 없다."
물론 저희는 라즈베리 파이에서 데이터베이스를 제작할 게 아니긴 합니다만, 말하자면 그렇다는 거죠.
일단 컴파일 전에, 의존성들을 설치해야 합니다. 의존성 중에서는 apt로 설치할 수 있는 것들도 있지만, 별도의 PPA에서 다운로드해야 하는 것도 있죠. 여기서는 Debian Backports(deb.debian.org/debian)라는 PPA를 이용하도록 하겠습니다.
cd 명령어를 이용해
다음 명령어를 치기 전에, 자신이 ~/osm에 위치해 있는지 확인하세요.
(개인 컴퓨터에서)
echo "deb http://deb.debian.org/debian buster-backports main" >> /etc/apt/sources.list.d/sources.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138
sudo apt update
sudo apt install cmake libbz2-dev libexpat1-dev libgd-dev libicu-dev libsqlite3-dev make zlib1g-dev
sudo apt-get -t buster-backports install libosmium2-dev libprotozero-dev
cd taginfo-tools
git submodule update --init
mkdir build && cd build
cmake ..
cd .. && make -j4
=========== 코드 설명 ===========
1. "deb http://deb.debian.org/debian buster-backports main"이라는 문장을 /etc/apt/sources.list.d/에 위치한
sources.list 텍스트 파일 맨 끝에 추가한다.
2. 키 서버 keyserver.ubuntu.com을 통해 공개 키 04EE7237B7D453EC를 컴퓨터에 추가한다.
3. 키 서버 keyserver.ubuntu.com을 통해 공개 키 648ACFD622F3D138을 컴퓨터에 추가한다.
4. 설치 가능한 패키지 목록을 업데이트한다.
5. cmake, libbz2-dev, libexpat1-dev, libgd-dev, libicu-dev,
libsqlite3-dev, make, zlib1g-dev 패키지를 설치한다.
6. libosmium2-dev, libprotozero-dev 패키지를 buster-backports에서 가져와 설치한다.
7. taginfo-tools 디렉토리 안으로 이동한다.
7. taginfo-tools가 이용하는 하위 모듈 abseil을 가져온다.
8. build 디렉토리를 생성하고, 그 안으로 이동한다.
9. 상위 디렉토리(여기서는 taginfo-tools/)에 위치한 CmakeLists.txt 파일을 makefile로 변환한다.
10. 상위 디렉토리로 이동하고, 변환한 makefile을 이용해 프로그램들을 컴파일한다(스레드 4개를 동시에 가동).
컴파일 시간은 컴퓨터 사양에 따라 다르지만, 약 2분 정도 걸립니다. make -j4에서 4는 스레드 4개를 동시에 가동한다는 의미입니다. 만약 컴퓨터의 CPU가 8스레드, 16스레드라면 -j4 대신 -j8이나 -j16을 써도 됩니다.
3. 데이터베이스 제작 및 Taginfo 구동을 위한 설정
데이터베이스를 제작하려면 오픈스트리트맵 원본이 필요합니다. 이를 Planet Data라 하는데, download.geofabrik.de/에서 다운로드할 수 있습니다.
원하는 국가/대륙에 들어가서 (국가명)-latest.osm.pbf 파일을 받아 줍시다. 다운로드한 파일은 아까 만들었던 ~/osm/data 디렉토리에 두세요.
이제 본격적으로 taginfo 설정을 바꾸겠습니다. 다음 명령어를 입력하세요.
(라즈베리 파이, 개인 컴퓨터 모두)
cd ~/osm/
cp taginfo/taginfo-config-example.json taginfo-config.json
nano taginfo-config.json
=========== 코드 설명 ==========
1. ~/osm 디렉토리로 이동한다.
2. taginfo 안에 있는 taginfo-cinfig-example.json 파일을 taginfo-config.json이라는 이름으로 복사한다.
3. taginfo-config.json 텍스트 파일을 nano 편집기로 연다.
텍스트 파일에서 "geodistribution": { 부분을 찾으세요. 먼저 Taginfo 분포도의 배경 지도로 쓸 이미지를 구한 뒤, geodistribution 안의 값을 바꾸어 주세요.
"left": (왼쪽 경도)
"bottom": (아래쪽 위도)
"right": (오른쪽 경도)
"top" :(위쪽 위도)
"width" X "scale_image" = (이미지의 가로폭)
"height" X "scale_image" = (이미지의 세로폭)
"background_image": (배경 지도의 경로)
"paths": 안에서
"data_dir": "/home/(계정명)/osm/data"
"download_dir": "/home/(계정명)/osm/download"
나머지 옵션들은 주석 보면서 직접 바꿔 주시면 됩니다.
다음 글에서는 데이터베이스 제작과 서버 구동을 다뤄 보겠습니다.