Debian 9 (Stretch) 安装poppler 0.73.0与R pdftools包报错求助
问题描述
我一直在Debian 9.13 (stretch)设备上尝试安装更高版本的poppler,编译过程一切正常,但安装R的pdftools包时一直报错,求解决方法。
我之前参照相关指南执行了如下操作:
sudo apt purge libpoppler-cpp-dev sudo apt-get install libopenjp2-7-dev libgdk-pixbuf2.0-dev cmake checkinstall sudo apt-get build-dep libpoppler-cpp-dev cd wget https://poppler.freedesktop.org/poppler-0.73.0.tar.xz tar -xf poppler-0.73.0.tar.xz cd poppler-0.73.0 mkdir build cd build cmake .. sudo checkinstall make install
上述操作执行完成后返回如下结果:
Done. The new package has been installed and saved to /home/admonda/poppler-0.73.0/build/poppler_0.73.0-1_amd64.deb You can remove it from your system anytime using: dpkg -r poppler
随后我执行了以下命令,执行后无返回内容:echo "export R_LD_LIBRARY_PATH=\$R_LD_LIBRARY_PATH:/usr/local/lib" >> .bashrc
之后我打开R控制台执行pdftools包安装命令,安装过程报错,报错日志如下:
> install.packages("pdftools") Installing package into ‘/usr/local/lib/R/site-library’ (as ‘lib’ is unspecified) probando la URL 'https://cloud.r-project.org/src/contrib/pdftools_3.0.1.tar.gz' Content type 'application/x-gzip' length 935692 bytes (913 KB) ================================================== downloaded 913 KB * installing *source* package ‘pdftools’ ... ** package ‘pdftools’ successfully unpacked and MD5 sums checked ** using staged installation Found pkg-config cflags and libs! Using PKG_CFLAGS=-I/usr/local/include/poppler/cpp -I/usr/local/include/poppler Using PKG_LIBS=-L/usr/local/lib -lpoppler-cpp ** libs g++ -std=gnu++11 -I"/usr/share/R/include" -DNDEBUG -I/usr/local/include/poppler/cpp -I/usr/local/include/poppler -I"/usr/local/lib/R/site-library/Rcpp/include" -fvisibility=hidden -fpic -g -O2 -fdebug-prefix-map=/home/jranke/git/r-backports/stretch/r-base-3.6.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c RcppExports.cpp -o RcppExports.o g++ -std=gnu++11 -I"/usr/share/R/include" -DNDEBUG -I/usr/local/include/poppler/cpp -I/usr/local/include/poppler -I"/usr/local/lib/R/site-library/Rcpp/include" -fvisibility=hidden -fpic -g -O2 -fdebug-prefix-map=/home/jranke/git/r-backports/stretch/r-base-3.6.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c bindings.cpp -o bindings.o g++ -std=gnu++11 -shared -L/usr/lib/R/lib -Wl,-z,relro -o pdftools.so RcppExports.o bindings.o -L/usr/local/lib -lpoppler-cpp -L/usr/lib/R/lib -lR installing to /usr/local/lib/R/site-library/00LOCK-pdftools/00new/pdftools/libs ** R ** byte-compile and prepare package for lazy loading ** help *** installing help indices ** building package indices ** testing if installed package can be loaded from temporary location Error: package or namespace load failed for ‘pdftools’ in dyn.load(file, DLLpath = DLLpath, ...): unable to load shared object '/usr/local/lib/R/site-library/00LOCK-pdftools/00new/pdftools/libs/pdftools.so': libpoppler-cpp.so.0: cannot open shared object file: No such file or directory Error: loading failed Ejecución interrumpida ERROR: loading failed * removing ‘/usr/local/lib/R/site-library/pdftools’ The downloaded source packages are in ‘/tmp/RtmpAXvNGB/downloaded_packages’ Warning message: In install.packages("pdftools") : installation of package ‘pdftools’ had non-zero exit status
解决方案
报错核心是系统动态链接库没有识别到你编译安装到/usr/local/lib路径下的poppler库文件,你之前的操作漏了更新缓存和生效环境变量的步骤,按以下顺序执行即可:
- 第一步:更新系统动态链接库缓存,让系统识别新安装的so文件
sudo ldconfig - 第二步:验证库文件确实存在,执行以下命令如果有输出则为正常
ls /usr/local/lib | grep libpoppler-cpp.so.0 - 第三步:生效你之前写入
.bashrc的环境变量,避免R读不到路径配置source ~/.bashrc - 第四步:在当前终端直接打开R,重新安装pdftools即可
install.packages("pdftools")
如果以上操作还是报错,可以用强制指定库路径的方式启动R后再安装:LD_LIBRARY_PATH=/usr/local/lib R
内容的提问来源于stack exchange,提问作者Andres Mora
相关产品推荐
相关产品推荐

