DEBUG | R | Mac | Linux | 报错 | 疑难杂症

 

常在河边走,哪能不湿鞋。

作为生信工作者,尤其是计算生物学,遇到BUG真的是不能太常见,能否顺利DEBUG是此行业工作者的基本功。

 

 

Mac

MacMini M1芯片则有些包装不了,在osx-64上的包,无法在osx-arm64上安装。

注意:千万不要在M1的Mac上装M1的conda!!!【直接装x86_64的版本,M1会自动转化,牺牲一点效率而已】

否则,后果很严重,很多包都不兼容。

必须转换一下

conda config --env --set subdir osx-64

安装intel的brew,通过其频道安装特定的库

arch -x86_64 /usr/local/homebrew/homebrew/bin/brew install llvm


参考:

  • How to Install x86_64 Homebrew Packages on Apple M1 MacBook
  • mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64') in Flutter
  • How to set up a conda osx-64 environment on ARM mac?

 

 

R

报错1:Mac上,用conda建了一个R env,装了Rstudio却无法识别conda的R,于是给Mac系统装了一个默认R,为了方便想共用一个Lib,果然太幼稚了,今天jupyter里的R kernel全部无法访问,出现了如下报错。

shared object ‘jsonlite.dylib’ not found
shared object ‘magrittr.dylib’ not found

  没什么大不了的,不是系统层面的错误,就是conda的R找不到类似的库罢了,全部重新安装即可。

以为指定libPaths,Rstudio和conda R能共用一个lib,其实不然,就算lib里有一个包,调用也会报错。

Error: package or namespace load failed for ‘rlang’ in library.dynam(lib, package, package.lib):
 shared object ‘rlang.so’ not found

  最终解决方案/结论:

Mac上Rstudio和Jupyter无法共用一个R,不同的R也无法共用一个R_LIB,放弃无所谓的幻想。

本来也是分工的,Rstudio就是调试包用的,不涉及到数据分析;

Jupyter主打数据分析,函数调试,封装等。

 

根据经验:

  • Jupyter的libpath在~/.bash_profile里指定,export R_LIBS_USER=/Users/zhixinli/R_lib_4
  • 全局的libpath在.Rprofile里指定,.libPaths("/Users/zhixinli/R_lib_4")
  • 不要设置.Rprofile,Rstudio即有自己的libpath

 

疑难杂症找conda【装devtools遇到的问题】

/usr/include/freetype2/freetype/config/ftheader.h:3:12: fatal error: x86_64-linux-gnu/freetype2/freetype/config/ftheader.h: No such file or directory
    3 | #  include <x86_64-linux-gnu/freetype2/freetype/config/ftheader.h>
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [/home/da528/miniconda3/envs/r4p3/lib/R/etc/Makeconf:178: caches.o] Error 1
ERROR: compilation failed for package ‘systemfonts’

  

conda install -c conda-forge r-systemfonts
conda install -c conda-forge r-textshaping

  

  

 

 

Linux

$ samtools
dyld[90025]: Library not loaded: @rpath/libcrypto.1.0.0.dylib
  Referenced from: <3FAE4B52-2497-3D93-BE35-525AAAE38804> /Users/zhixinli/miniconda3/bin/samtools
  Reason: tried: '/Users/zhixinli/miniconda3/bin/../lib/libcrypto.1.0.0.dylib' (no such file), '/Users/zhixinli/miniconda3/bin/../lib/libcrypto.1.0.0.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS@rpath/libcrypto.1.0.0.dylib' (no such file), '/Users/zhixinli/miniconda3/bin/../lib/libcrypto.1.0.0.dylib' (no such file), '/Users/zhixinli/miniconda3/bin/../lib/libcrypto.1.0.0.dylib' (no such file), '/usr/local/lib/libcrypto.1.0.0.dylib' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), '/usr/lib/libcrypto.1.0.0.dylib' (no such file, not in dyld cache)
ln -s /Users/zhixinli/miniconda3/bin/../lib/libcrypto.3.dylib /Users/zhixinli/miniconda3/bin/../lib/libcrypto.1.0.0.dylib

缺库,而且是指定版本,libcrypto.1.0.0.dylib,直接吧conda lib里的新版本建个ln -s链接即可。samtools就可以顺利运行。

 

 

持续更新~

以前踩过的坑也会慢慢挪到这里~

 

posted @ 2022-11-30 00:45  Life·Intelligence  阅读(784)  评论(0编辑  收藏  举报
TOP