Debian (Raspbian) Baster で proj をビルドする方法
訳あって reTerminal という製品で色々開発する必要にせまられています。その中で Python で地図の座標変換をするライブラリ Pyproj を入れようと思ったけどダメで、そのために Proj ライブラリをソースからビルドした話をまとめます。
reTerminal に関する画面設定の記事は「ラズパイ(reTerminal)の画面ドライバを入れ直し、回転したタッチパネル判定を直す方法」をご覧ください。
環境設定
実行した Raspberry Pi の OS バージョンは次の通り。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 10 (buster)
Release: 10
Codename: buster
Python のバージョンは 3.7.3, pip のバージョンは 22.3.1 でした。普通に pip を使って pyproj のインストールを試みると
$ pip install pyproj
Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting pyproj
Using cached pyproj-3.2.1.tar.gz (213 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... error
error: subprocess-exited-with-error
× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> [1 lines of output]
ERROR: Minimum supported PROJ version is 7.2.0, installed version is 5.2.0. For more information see: https://pyproj4.github.io/pyproj/stable/installation.html
[end of output]
...
と、PROJ のバージョンが低いと怒られます。実際、apt install proj-bin を試しても最新バージョンがこれだったので、 PROJ をソースビルドする必要があると判断しました。
結論
結果としてこのようにオプションをつけて PROJ を make できました。
mkdir build
cd build
cmake \
-DSQLITE3_INCLUDE_DIR=/usr/include \
-DSQLITE3_LIBRARY=/usr/lib/arm-linux-gnueabihf/libsqlite3.so \
-DCURL_INCLUDE_DIR=/usr/include/arm-linux-gnueabihf \
-DCURL_LIBRARY=/usr/lib/arm-linux-gnueabihf/libcurl.so.4 \
..
cmake --build .
sudo cmake --build . --target install
sqlite や curl のライブラリパスがうまく通ってませんでした。
試したこと
まずは PROJ の公式ページからソースビルドのページに従ってビルドを試みました。最新版ソースコードのダウンロードページはここです。
マニュアルにしたがってビルドを試みます。
wget https://download.osgeo.org/proj/proj-9.1.0.tar.gz
tar zxvf proj-9.1.0.tar.gz
cd proj-9.1.0
mkdir build
cd build
cmake ..
ここで sqlite だとか curl がないと怒られました。そのため apt からインストールします。
sudo apt install sqlite3 libcurl4-openssl-dev
その後、ライブラリファイルなどの場所を探します。find コマンドで検索しました。
$ sudo find / -name "*sqlite*.h*"
/usr/include/sqlite3.h
$ sudo find / -name "*sqlite*.so*"
/usr/lib/arm-linux-gnueabihf/libsqlite3.so
$ sudo find / -name "*curl*"
/usr/include/arm-linux-gnueabihf/curl
$ sudo find / -name "*libcurl*.so*"
/usr/lib/arm-linux-gnueabihf/libcurl.so.4
これらの結果を cmake するときのオプションとして指定します。その結果ビルドするとうまくいきました。
cmake \
-DSQLITE3_INCLUDE_DIR=/usr/include \
-DSQLITE3_LIBRARY=/usr/lib/arm-linux-gnueabihf/libsqlite3.so \
-DCURL_INCLUDE_DIR=/usr/include/arm-linux-gnueabihf \
-DCURL_LIBRARY=/usr/lib/arm-linux-gnueabihf/libcurl.so.4 \
..
cmake --build .
sudo cmake --build . --target install
これで PROJ ライブラリのインストールに成功したので、pip install を試みます。
pip install pyproj
これで問題なくインストールできました。
ディスカッション
コメント一覧
まだ、コメントがありません