共有ライブラリ

Rの標準ライブラリ(pngなど)がないと怒られた。 入れようとしたら、

install.packages("png")

・
・
・
** testing if installed package can be loaded
Error: package or namespace load failed for ‘png’ in dyn.load(file, DLLpath = DLLpath, ...):
  共有ライブラリ '/usr/lib64/R/library/png/libs/png.so' を読み込めません:
  libpng16.so.16: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません
 エラー:  ロードに失敗しました
 実行が停止されました
ERROR: loading failed

また怒られた。

どうやらpngを読み込むためのライブラリが見つけられてないらしい。。

まず libpng16のconfigファイルが置いてあるディレクトリを探す。

$ libpng16-config --libdir
/usr/local/lib

/usr/local/libにPATHが通っていないことを確認。

$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin
$ echo $LD_LIBRARY_PATH

LD_LIBRARY_PATHとして/usr/local/libにPATHを通す。

$ export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY
install.packages("png")
・
・
・
** testing if installed package can be loaded
* DONE (png)

おっけー。

永続的に変えたい場合は /etc/ld.so.conf内に記されているディレクトリ内のファイルに記述する。

/etc/ld.so.conf内

include ld.so.conf.d/*.conf

/etc/ld.so.conf.d/R-x86_64.conf 内に

/usr/local/lib    ## 追加
/usr/lib64/R/lib

ldconfigコマンドを用いて/etc/ld.so.cacheの情報を更新。

sudo ldconfig

ldconfig

参考: 共有ライブラリの追加 - tetsuyai’s blog