Amazon Linux 2 で R に sf パッケージをインストールする

sf を使う為に install.packages(“sf”) した所、以下のエラーでインストールできなかったので、解消した際のメモです。

ERROR: dependencies ‘s2’, ‘units’ are not available for package ‘sf’

環境

  • Amazon Linux release 2 (Karoo)
  • R version 4.0.2

また、以下のコマンドで EPEL レポジトリを有効化済みです。

sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

必要なパッケージのインストール

GDAL 2.0.1 以上が必要なのですが、yum で入れられるのが 1.11.4 なので、3.5.3 のソースをコンパイルしてインストールします。
また、その際に PROJ 6 が必要になるのですが、こちらも yum で入れられるのが 4.8.0 なので、先に 6.1.1 のソースをコンパイルしてインストールします。

yum でインストール

まずは、yum で行けるパッケージから。

sudo yum install -y openssl-devel geos-devel sqlite-devel udunits2-devel cmake3

ちなみに、以下のパッケージは既にインストール済みだったので含めませんでした。

  • gcc-c++
  • cpp
  • libtiff

PROJ のインストール

ソースコードをコンパイルしてインストール。

cd /tmp
wget https://download.osgeo.org/proj/proj-6.1.1.tar.gz
tar -xvf proj-6.1.1.tar.gz
cd proj-6.1.1
./configure
sudo make
sudo make install

GDAL のインストール

ソースコードをコンパイルしてインストール。

cd /tmp
wget https://github.com/OSGeo/gdal/releases/download/v3.5.3/gdal-3.5.3.tar.gz
tar -xvf gdal-3.5.3.tar.gz
cd gdal-3.5.3
./configure --with-proj=/usr/local
sudo make
sudo make install

共有ライブラリの反映

コンパイルしたライブラリが /usr/local/lib にインストールされます。
既に共有ライブラリとして設定済みの場合は良いのですが、自分の環境ではできていなかったので設定しました。

sudo bash -c "echo /usr/local/lib>/etc/ld.so.conf.d/usr.local.lib.conf"

/etc/ld.so.conf.d/usr.local.lib.conf ファイルを新規作成してパスを設定しました。
既に usr.local.lib.conf ファイルが存在することは無いと思いますが、あるなら追記するなり別のファイル名で作成します。
設定を反映にするために、次のコマンドを実行します。

sudo ldconfig

sf パッケージのインストール

後は通常通り R から install.packages(“sf”) でインストールできました。
問題なければ、コンパイルで使ったファイルを削除しておきます。

sudo rm -rf /tmp/proj-6.1.1.*
sudo rm -rf /tmp/gdal-3.5.3.*

コメント