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就可以顺利运行。
持续更新~
以前踩过的坑也会慢慢挪到这里~