使用" system"从R运行可执行文件时找不到的库命令

时间:2017-01-15 17:31:07

标签: r macos

运行MacOS Sierra(10.12.2),我有一个可以从终端成功执行的程序:

~$ /Users/pf/apps/cfm/bin/cfm-id

Usage: cfm-id.exe <spectrum_file> <id> <candidate_file> <num_highest> <ppm_mass_tol> <abs_mass_tol> <prob_thresh_for_prune> <param_filename> <config_filename> <score_type> <apply_postprocessing> <output_filename> <output_msp_or_mgf>

但是,我需要使用system()命令在R中运行此程序。这样做,我收到以下错误:

> system("/Users/pf/apps/cfm/bin/cfm-id")
dyld: Library not loaded: libFileParsers.1.dylib
  Referenced from: /Users/pf31/apps/cfm/bin/cfm-id
  Reason: image not found
>

因此,当程序从R中作为系统命令调用时,该程序显然无法找到一些必要的库。

我已在Renviron.site文件中设置环境变量(例如DYLIB_LIBRARY_PATH等),并使用Sys.getenv()验证这些变量。

一个提示:如果我关闭&#34;无根&#34;使用csrutil disable的SIP,这个程序(和另一个表现出相同行为的程序)在终端和在R中使用system("/Users/pf/apps/cfm/bin/cfm-id")都可以正常工作。不幸的是,如果我关闭SIP,这会打破另一个必要的程序,例如它无法在终端或R内正常运行。

另一个提示:如果我使用sudo从终端运行相同的程序,我会得到与R中system()调用相同的行为:

$ sudo /Users/pf/apps/cfm/bin/cfm-id
dyld: Library not loaded: libFileParsers.1.dylib
  Referenced from: /Users/pf31/apps/cfm/bin/cfm-id
  Reason: image not found
Abort trap: 6

奇怪的是程序将以超级用户身份运行失败。我猜测某处的权限存在问题,但我不知道如何将其删除。

0 个答案:

没有答案