惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The GitHub Blog
The GitHub Blog
云风的 BLOG
云风的 BLOG
T
Threatpost
WordPress大学
WordPress大学
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
PCI Perspectives
PCI Perspectives
T
The Exploit Database - CXSecurity.com
Y
Y Combinator Blog
雷峰网
雷峰网
爱范儿
爱范儿
The Hacker News
The Hacker News
Last Week in AI
Last Week in AI
Simon Willison's Weblog
Simon Willison's Weblog
T
Tor Project blog
S
Securelist
宝玉的分享
宝玉的分享
L
LangChain Blog
O
OpenAI News
AI
AI
P
Privacy International News Feed
L
LINUX DO - 最新话题
D
DataBreaches.Net
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Attack and Defense Labs
Attack and Defense Labs
罗磊的独立博客
M
MIT News - Artificial intelligence
Security Archives - TechRepublic
Security Archives - TechRepublic
月光博客
月光博客
博客园 - 【当耐特】
T
Tailwind CSS Blog
C
Cybersecurity and Infrastructure Security Agency CISA
H
Help Net Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园_首页
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Hacker News - Newest:
Hacker News - Newest: "LLM"
腾讯CDC
Jina AI
Jina AI
The Last Watchdog
The Last Watchdog
K
Kaspersky official blog
Webroot Blog
Webroot Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Blog — PlanetScale
Blog — PlanetScale
MyScale Blog
MyScale Blog
MongoDB | Blog
MongoDB | Blog
P
Proofpoint News Feed
Recorded Future
Recorded Future
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
博客园 - 三生石上(FineUI控件)
The Cloudflare Blog

熊言熊语

焦虑的反面是具体:用3年AI实践和你分享这份AI科研心得指南 | 熊言熊语 因为 AI 终于我可以尝试把自己最好的东西给你 | 熊言熊语 Guardant Shield 获批:详谈这5年你该了解的按部就班、跌跌撞撞 、布局和野望 | 熊言熊语 除了E人变I,断网半年后我的3个感悟和1个项目 | 熊言熊语 同源重组修复缺陷HRD :产品总览 | 熊言熊语 同源重组修复缺陷HRD:临床验证 | 熊言熊语 同源重组修复缺陷HRD:从无到有 | 熊言熊语 聊肿瘤生物标志物时我们在聊什么 | 熊言熊语 肿瘤组织和液体活检结果不一致,好事还是坏事 | 熊言熊语 肿瘤精准治疗究竟多难 看这7个临床实践障碍 | 熊言熊语 关于wolai被钉钉收购:多研究些问题少谈些逻辑 | 熊言熊语 MSKCC 尚待解决的肿瘤基因组检测临床应用问题 | 熊言熊语 不要错过的14档肿瘤研究专业相关播客 | 熊言熊语 从靶向治疗耐药机制到联合用药策略(下篇) | 熊言熊语 那些获得FDA突破性设备认证的多癌种早筛公司 | 熊言熊语 2022的混乱和坚持 2023的困难和勇敢 | 熊言熊语 从靶向治疗耐药机制到联合用药策略(上篇) | 熊言熊语 和头部肿瘤早筛公司 GRAIL CEO 学写年终工作总结 | 熊言熊语 2022年肿瘤精准治疗进展回顾 看OncoKB和FDA审批就够了 | 熊言熊语 Foundation Medicine 42万例样本库分析KRAS泛癌种突变特征得出了这些结论 | 熊言熊语 从2002年的Nature论文到2022年的亿元营收 | 熊言熊语 肿瘤NGS行业新人如何构建自己的知识体系 | 熊言熊语 Nature Genetics:低TMB患者福音 肿瘤非整倍体可预测泛癌免疫治疗疗效 | 熊言熊语 Nature Cancer:高度非整倍体非小细胞肺癌 放疗同步免疫治疗更敏感 | 熊言熊语 Nature Reviews Cancer:未来10年肿瘤精准治疗的6个未解之谜 | 熊言熊语 通过一份会议日程多了解点液体活检 | 熊言熊语 找到一种和这个世界沟通的方式 | 熊言熊语 跨越60年的癌症靶向治疗里程碑 | 熊言熊语 同样做肿瘤NGS检测,美股上市的9家公司近况如何 | 熊言熊语 30 岁,让我们成熟和改变的不是生日而是生活 | 熊言熊语 ctDNA系列之一:ctDNA的生物学特征、检测技术问题和临床应用方向 | 熊言熊语 在《Google软件工程》里了解如何在团队内进行学习和分享 | 熊言熊语 如何衡量个人在团队项目中的贡献 | 熊言熊语 万字长文|染色体不稳定性,凭什么2022年还能用TCGA数据发Nature | 熊言熊语 FDA发布ctDNA应用于早期实体瘤药物开发的指导意见 | 熊言熊语 单平台文章阅读量超过100万,我可能做对了三件事。 | 熊言熊语 Gitee图床被禁?云对象存储配合CDN方案以及图片批量迁移方法 | 熊言熊语 别再用DEseq2和edgeR进行大样本差异表达基因分析了 | 熊言熊语 春天来了,但你得准备好继续过冬 | 熊言熊语 任务如何才能按时完成 | 熊言熊语 从肿瘤突变列表到辅助临床决策 | 熊言熊语 半年毕业 半年工作 我的2021年度总结 | 熊言熊语 你也可以在学术报告中讲好一个引人入胜的故事 | 熊言熊语 OncoSearch 肿瘤研究必备(自用)聚合搜索工具 | 熊言熊语 读陌生领域文献,我劝你别读正文 | 熊言熊语 准备两个版本的PPT | 熊言熊语 通往更好的决定 | 熊言熊语 更多地写 但是写的更短 | 熊言熊语 问题出现我再告诉大家 | 熊言熊语 重做新人 NGS肿瘤领域可以学些什么 | 熊言熊语 新手和专家的区别以及如何看待学习 | 熊言熊语 完成这个需要多长时间 | 熊言熊语 6年硕博生活的6条心得-生活成长篇 | 熊言熊语 面对职业教育缺失,在科研行业的我们能做什么 | 熊言熊语 全球顶尖科学家榜单 | 熊言熊语 构建自己的数字花园-工具篇 | 熊言熊语 使用R语言分析上海地铁好位置周边的二手房价格 | 熊言熊语 熊言熊语会员通讯 4321X 第5期 | 熊言熊语 关于 wolai 这款工具的观察与困惑 | 熊言熊语 关于个人的认知不确定性 | 熊言熊语 需要时刻留心的24个生物信息学提示 | 熊言熊语 要不要读博(答读者信) | 熊言熊语 熊言熊语会员通讯 4321X 第3期 | 熊言熊语 用三个问题回顾 2020(全员协作版) | 熊言熊语 熊言熊语会员通讯 4321X 第2期 | 熊言熊语 熊言熊语会员通讯 4321X 第1期 | 熊言熊语 熊言熊语会员通讯 4321X 第0期 阅读与分享 | 熊言熊语 有备而来的 4321X | 熊言熊语 macOS big sur 升级后编译 R 的问题 你的实验伴侣摸鱼首选和通勤第一品牌 | 熊言熊语 如何帮助别人 | 熊言熊语 21天日记挑战-5分钟日记法 | 熊言熊语 使用 Zotero 在 Markdown 中优雅地处理参考文献 三个 Linux 文件高频小操作 | 熊言熊语 VS Code 代码编辑器入门指南下篇-场景化应用介绍 | 熊言熊语 VS Code 编辑器入门指南上篇-核心概念与组件 | 熊言熊语 把 Markdown 模板做成 VSCode 插件 简书这些年 | 熊言熊语 靠谱熊的每周分享 第4期 | 熊言熊语 靠谱熊的每周分享 第3期 | 熊言熊语 非蠢既坏 别这么想 | 熊言熊语 靠谱熊的每周分享 第2期 | 熊言熊语 R 的 20 年 | 熊言熊语 靠谱熊的每周分享 第1期 | 熊言熊语 停课不停学 推荐 7 门有趣实用的线上课程 | 熊言熊语 在家复工,学生党如何使用学术资源 | 熊言熊语 跨平台协作,让飞书实时接收语雀更新提醒 | 熊言熊语 特殊时期假期返程实录 | 熊言熊语 需要远程办公,不妨用 Trello 进行组织和协作 | 熊言熊语 学习素材共享小组V2.0(已停止招募) | 熊言熊语 Trello 看板内容太多,飞书表格帮你自动整理 | 熊言熊语 把飞书融入日常学习流程:一个人的飞书也挺好 | 熊言熊语 人究竟怎样才算来过又怎样才算离开 | 熊言熊语 使用 VSCode 愉快地进行远程 R 开发 给一年前自己的一封信-2019 | 熊言熊语 眼见不为实:为什么29不等于29 | 熊言熊语 如何简快好省的使用图床 | 熊言熊语 这三个网站让我摸鱼都从容了 | 熊言熊语 我目前的云存储方法 | 熊言熊语
从 MacBook Pro M1 安装编译 R 踩坑想到的
2021-07-06 · via 熊言熊语

2021-07-06, 1877 words, 8 min read

关键时刻要稳住,以及软件之间的不兼容和人与人之间很类似。

之前写过两篇 macOS 升级系统后安装升级 R 的博客,现在回看虽然解决了当时的问题但还是蛮混乱的。最近工作主力机切换到了 MBP M1 版本(感谢东家),再整理一点踩坑实录和引申出来的想法。

新 Mac 必备

新 Mac 上手,装好 Xcode command-line tools 和 homebrew 其实就已经解决了大部分后续软件安装问题,如果还需要在笔记本跑跑数据就装 miniconda。写这篇文章的时候 homebrew 在 M1 上基本不会碰到什么问题,可以放心安装。

想起来研二开始日常管理实验室服务器的时候,必学技能还是如何在几个不同的 Linux 版本环境中安装编译好大家需要的各种软件,如今 conda 和 docker 的成熟让软件安装早就不再是什么问题,管理员的最大作用似乎就是做好数据备份的同时提醒大家做好数据备份

arm64 架构 R 的坑好多

我是一个忍受不了手机软件有更新而不升级的人,甚至经常通过 TestFlight 去找各种应用的测试版本(这种人被成为 TF boys)。拿到 M1 Mac 自然也是先找最新适配版本的软件。

以数据分析写代码常用的 VSCode 和 R 为例,目前很多软件已经有了专门针对 macOS arm64 的版本。你可以通过 R 官方的 mac 页面 找到下载链接。如图所示 4.1 版本 arm64 的安装包新鲜出炉。

下载安装一切顺利,往下翻翻就能看到针对 arm64 版本的说明。简单说为了防止不同架构的 R 打架,最新版本的 R 相关内容都保存在 /opt/R/arm64目录,包括进行 R 包编译必备的 GUN Fortran ,嗯你没有看错截图显示他们页面的这个单词拼错了。除了 gfortran 以外, XQuartz 则需要版本 2.8.0_rc1。gfortran 也有了 arm64 版本,可以通过 这个链接 下载安装。

正常情况下装好这几个就可以装 R 包了,但在安装几十个常用 R 的过程中发现了好几处 bug,其中最根源的问题是在 arm64 版本下(几乎)所有 R 包都需要通过编译才能使用。只要涉及到编译,各种不兼容和依赖问题就都来了。

edgeR 编译报错

这个 bug 最早是同事提出的,因为忙着搬砖所以我没有回答到点子上就甩了之前的文章链接。报错信息是library not found for -lgfortran,其实就是gfortran的位置找不到。这个问题如果仔细读了上面提到的官方页面应该有所准备。

It is assumed that /usr/local is unsafe as it may contain Intel binaries which don't mix, therefore R will not try to use /usr/local unless a manual flags override is issued. However, it also means that it is safe to use our arm binaries without affecting your legacy Intel ecosystem.

解决方案是需要正确安装最新版本的 gfortran,然后手动修改~/.R/Makevars编译用到的 FLIBS 信息

FLIBS = -L/usr/local/gfortran/lib/gcc/aarch64-apple-darwin20.2.0/11.0.0 -L/usr/local/gfortran/lib -lgfortran -lm

另外,网上其它软件也有提到把export PATH=/opt/R/arm64/bin:$PATH 写入系统配置文件,我并没有测试。

rgl 安装包错

rgl 是一个在 Mac 中有很多 R 包依赖的常用包,在安装报错的时候开发者良心地直接给出了讨论链接。macos catalina - Package rgl in R not loading in Mac OS - Stack Overflow

Warning messages:
1: 	Loading rgl's DLL failed.
	This build of rgl depends on XQuartz, which failed to load.
 See the discussion in https://stackoverflow.com/a/66127391/2554330
2: Trying without OpenGL...

概括一下就是 rgl 和目前支持 M1 芯片的 Xquartz 版本不兼容,如果不想像链接中反复修改依赖软件的话,可以直接从 github 下载进行编译。

remotes::install_github("dmurdoch/rgl")

maftools 编译报错

安装 maftools 需要提前安装 Rhtslib,而 Rhtslib 在编译时有如下问题。

# 'lzma.h' file not found

因为 Rhtslib 也是一个频繁被依赖的软件,所以我猜测这个问题应该有人已经在 issue 里问了,一搜 确实如此。结果翻着翻着看到这样一条回答。

Intel 架构的 R 真香

通过上面的截图可以看到最中肯的建议就是:别乱用什么 arm64 架构的 R……

这是因为虽然 R 和 Rsutido 最新版本都已经支持 m1 芯片,但是 bioconductor 还没有支持,这样一来就无法直接安装编译好的 R 包版本。

不过,这个事情其实一开始苹果已经通过 Rosetta 2 解决了。为了在过渡阶段让 M1 同时兼容两种架构的软件,当使用 Intel 架构的软件时,macOS 可以直接通过 Rosetta2 去做转换。之前苹果官方介绍在大多数情况下需要使用 Rosetta 的 App 性能不会出现差异。

因此目前只需要使用 Intel 版本的 R,就可以避免编译以及随之而来的各种问题。所以,在果断重新安装这个版本的 R 之后,我只能说一句真香。

从 macOS M1 安装编译 R 想到的

在一开始读到 R 官网说明时,我就看到了下面这句话。

That said, our current Intel releases work just fine on the new Macs as well using Rosetta 2.

但追求走在更新前线的人怎么能如此委曲求全,结果就是浪费了不少因为编译 debug 的时间。所以生产环境求稳还是真理,只要没出错就不要乱改动,修改一下奥卡姆剃刀法则就是「如无必要,请勿升级」。

以及,使用 arm64 架构的 R 配合 Bioconductor 出现各种各样问题,原因在于它们没有保持住一致的节奏。软件如此,人和人之间也差不多。三五个人一起,要想成些事,彼此就不能出现太明显的「不兼容」。

一方面,如果有人走的太快但还要依赖他人的时候,这种自我升级本身没有太大价值,多数还是需要主动调低自己的版本。

另一方面,如果多数人都升级了,为了运行速度和后续更新,版本太低的人也不会被一直兼容。就像手机系统升级一样,手机公司总得逐渐放弃一些久远的型号,至于支持几代就要看不同公司的策略。

除了关键时刻果断决策,更重要的还是大家一起进步一起升级。想起来那句话:你就是你身边最常接触五个人的平均值。


本文作者:思考问题的熊

版权声明:本博客所有文章除特别声明外,均采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。

如果你对这篇文章感兴趣,欢迎通过邮箱订阅我的 「熊言熊语」会员通讯,我将第一时间与你分享肿瘤生物医药领域最新行业研究进展和我的所思所学所想点此链接即可进行免费订阅。

· 分享链接 https://kaopubear.top/blog/2021-07-06-macos-arm64-R-tips/