我读过这篇文章如何安装poppler并对自己的困难充满希望,但没有成功。
我在 Ubuntu 18.04 Precision 笔记本电脑的 Anaconda 下运行 R。我想安装 readtext(R 包)来支持一些语料库语言学研究,并尝试从 R 终端窗口进行安装。我已经安装了 quanteda,没有任何问题,所以当 readtext 因 pdftools 要求而跳闸时,我感到很惊讶,而 pdftools 要求又跳闸了
cannot find -lpoppler-cpp
我已经使用以下方法多次安装和卸载了 libpoppler-cpp-dev
sudo apt-get install -y libpoppler-cpp-dev
安装成功
libpoppler-cpp-dev is already the newest version (0.74.0-bionic0)
当我尝试从 R 安装 readtext 时(再次在 Anaconda 下运行,这可能是个问题),它到达 pdftools 安装并找到本地 pkg-config 信息
- 安装来源软件包“pdftools”...** 软件包“pdftools”已成功解压,MD5 和已检查 ** 使用分阶段安装 找到 pkg-config cflags 和 libs!使用 PKG_CFLAGS=-I/usr/include/poppler/cpp -I/usr/include/poppler 使用 PKG_LIBS=-lpoppler-cpp
但后来却找不到它:
/home/dalton/anaconda3/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/bin/ld:找不到 -lpoppler-cpp collect2:错误:ld 返回 1 退出状态 make:*** [/home/dalton/anaconda3/lib/R/share/make/shlib.mk:6: pdftools.so] 错误 1 错误:包“pdftools”编译失败
- 删除'/home/dalton/anaconda3/lib/R/library/pdftools'
当我自己检查 pkg-config 时:
pkg-config --cflags --libs poppler-cpp
-I / usr /包括/波普勒/ cpp -I / usr /包括/波普勒-lpoppler-cpp
我确实找到了与 R 中的安装程序相同的信息。当我使用系统 grep 追踪 poppler 时:
ls --recursive | grep -E "poppler"
我没有找到 poppler-cpp,但我找到了 libpoppler-cpp-dev 和其他 libpoppler-cpp 文件/文件夹。但是,如果我查询 pkg-config:
pkg-config --cflags --libs libpoppler-cpp-dev
它告诉我
在 pkg-config 搜索路径中未找到软件包 libpoppler-cpp-dev。也许您应该将包含“libpoppler-cpp-dev.pc”的目录添加到 PKG_CONFIG_PATH 环境变量中。未找到软件包“libpoppler-cpp-dev”。
我使用了 @jeroen 在上面引用的 SE 帖子中推荐的适用于 Ubuntu 18.04 (Bionic) 的 Poppler 0.74.0 反向移植版 PPA,但似乎 Ubuntu 本身和 Anaconda R 之间存在一些混淆,因为 R 安装正在寻找 poppler-cpp,但 libpoppler-cpp-dev 似乎是合适的目标。因为我在 Anaconda 下运行 R,所以我的系统似乎不知道 R:
apt-cache policy r-base-core
返回
r-base-core:已安装:(无)候选版本:3.4.4-1ubuntu1 版本表:3.4.4-1ubuntu1 500 500http://us.archive.ubuntu.com/ubuntubionic/universe amd64 软件包
我意识到这一切都有些混乱,但我希望有人能认识到一个明显的问题并告诉我该如何解决,例如修改 poppler-cpp.pc 以指向新的库或类似的东西。
答案1
解决方案是留在 Anaconda/conda 环境中,因为 R 在那里运行,这有点像周围 Ubuntu 海中的一座岛屿(如果这个比喻没有让你晕船的话)。只需这样做
conda install -c conda-forge poppler
这花了相当长一段时间才完成,因为最初两次“解决环境”的尝试都失败了,但 conda 最终尝试了另一个 repodata 源并成功了:
package | build
---------------------------|-----------------
certifi-2019.9.11 | py37_0 147 KB conda-forge
conda-4.10.1 | py37h89c1867_0 3.1 MB conda-forge
openjpeg-2.3.1 | h21c5421_1 469 KB conda-forge
poppler-0.65.0 | h581218d_1 1.3 MB
poppler-data-0.4.10 | 0 3.8 MB conda-forge
python_abi-3.7 | 1_cp37m 4 KB conda-forge
------------------------------------------------------------
Total: 8.7 MB
等等,以祝福结束
正在执行交易:完成
然后我打开一个终端窗口并启动 R:
dalton@dalton-Precision-3541:$ R
R 版本 3.6.1(2019-07-05)——“脚趾的动作”版权所有 (C) 2019 R 统计计算基金会平台:x86_64-conda_cos6-linux-gnu(64 位)
并安装pdftools:
> install.packages("pdftools")
- 安装来源软件包“pdftools”...** 软件包“pdftools”已成功解压,MD5 和已检查 ** 使用分阶段安装 找到 pkg-config cflags 和 libs!使用 PKG_CFLAGS=-I/usr/include/poppler/cpp -I/usr/include/poppler 使用 PKG_LIBS=-lpoppler-cpp
等等。对于那些感兴趣的人,Anaconda 库文件位于以下区域:
-lpoppler-cpp -L / home / dalton / anaconda3 / lib / R / lib -lR
换句话说,在 conda 安装 poppler 之后,我的 R 安装 pdftools 可以找到 poppler-cpp。pdftools 完成:
** 测试已安装的包是否保留临时安装路径的记录
- 完成(pdftools)
然后我就能完成我原来的安装 readtext 的任务了,这需要 poppler 和 pdftools:
install.packages("readtext")
** 测试已安装的包是否保留临时安装路径的记录
- 完成 (阅读文本)
下载的源包位于 '/tmp/Rtmpxksozx/downloaded_packages' 中,正在更新 '.Library' 中包的 HTML 索引,正在制作 'packages.html' ... 完成
图书馆(阅读文本)
Ubuntu 中 Anaconda/conda 的复杂世界一切都好。一旦你搞清楚了如何沟通,它就是一个非常适合科学和学术计算的环境。