18

搭载M1芯片的MacBook能不能当开发主力机?程序员半个月的亲身体验都在这里

 3 years ago
source link: https://www.qbitai.com/2020/11/20162.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Docker、Homebrew可以这样运行

晓查 发自 凹非寺

量子位 报道 | 公众号 QbitAI

MacBook换成ARM芯片后,它还是程序员的开发利器吗?

经过国外程序员半个多月来的尝试,一些常见开发工具的兼容状况也得到披露。

ZNbIr2.jpg!mobile

Xcode、VS Code、Homebrew……等常用工具能够完美运行吗?如果你还在因为这些问题犹豫要不要买,那么看了这篇文章或许能得到答案。

代码编辑器

Vim是通用二进制文件,因此它已经能在M1上直接运行。

VS Code可以通过Rosetta 2转换来运行,而insider版已经原生支持ARM平台的MacBook,相信正式版也不会太遥远。

zInAn2n.jpg!mobile

Xcode

苹果第一方开发工具Xcode自然不必担心兼容性,而且它在M1芯片上的运行效率很高。

编译PSPDFKit PDF SDK,在2019年16英寸MacBook Pro上耗时7分31秒,在M1版MacBook Air上则耗时8分49秒,而后者是无风扇的。

不过Xcode在测试低于iOS 14版的应用程序时,会出现一些问题。WebKit会在内存分配器中崩溃,Xcode有时会定期卡死。

FnimMzu.jpg!mobile

因此如果你要测试较低iOS版本程序,还是在Intel版的MacBook上运行,或者希望下一次Xcode更新时,苹果能解决这个问题。

Docker

现在Docker无法在M1芯片上运行,也无法通过Rosetta 2转换的方式使用Docker Desktop。

但是同样使用ARM芯片的树莓派却能做到。

bINV3qa.jpg!mobile

所以在MacBook上运行Docker最好的方法是:运行ARM版Linux虚拟机,在虚拟机中运行Docker。

具体操作方法请参照这篇教程:

https://finestructure.co/blog/2020/11/27/running-docker-on-apple-silicon-m1

至于Docker官方何时将提供支持,可以注册Docker ID来获取最新进展。

Homebrew

Homebrew可以通过Rosetta 2转换的方式进行安装,方法也很简单,只需在过去的安装命令前加上arch -x86_64即可。

$ arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

这种通过转制的Homebrew在某些软件上可能有一些兼容性问题,因此建议安装另一个手动编译版:

$ sudo mkdir -p /opt/homebrew
$ sudo chown -R $(whoami):staff /opt/homebrew
$ cd /opt
$ curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew

第一种方式安装的Homebrew在/usr/local/bin目录下,而第二种方式安装的在/opt/homebrew目录下,后者不会自动添加到PATH环境变量中,因此需要手动设置:

export PATH="/opt/homebrew/bin:$PATH"

这样,你的Mac里就有了两个Homebrew:一个是 Rosetta转换 的,一个是 原生 的。原生的目录在前面,那么brew命令将默认运行这个版本。

如果想运行Rosetta转换版怎么办?我们可以单独设置一个ibrew命令:

alias ibrew='arch -x86_64 /usr/local/bin/brew'

目前,Homebrew尚未提供用于ARM Mac的预编译软件包,因此最好使用brew install -s 命令进行安装。

具体有哪些软件包不兼容,可以到GitHub项目页的issue中查询:

https://github.com/Homebrew/brew/issues/7857

其他常用软件

说到编程必备,怎么能少得了Chrome,现在Chrome 87版已经开始支持M1版的MacBook。

7rI7zmQ.jpg!mobile

还有微软的Office三件套,若使用Rosetta 2转译,启动时间可能需要20秒。官方建议安装针对macOS Big Sur优化的16.43版。

微软官方表示,已经开始将Mac应用程序迁移到通用二进制文件,未来Office三件套的兼容性不成问题。

如果是基于Electron的应用程序,经过Rosetta 2转译后速度会变得很慢。原因可能是V8 JavaScript编译器似乎阻止了提前翻译。

现在最新版的Electron(Version 11)已经支持了M1芯片,还需要等其他开发者更新软件。

由于Rosetta 2转译的程序会变成只读文件,因此自动更新将被禁止,此类程序需要用户手动更新。

euIV3iI.jpg!mobile

虚拟机和Windows

虽然VMware和Parallels可以在M1芯片的MacBook上使用,但是所有Mac虚拟化解决方案均不支持Apple Silicon。免费开源的虚拟机Virtualbox更是无法运行。

现在ARM版Windows可以仿真x86应用程序,而微软正在研究x64仿真。

最近模拟器软件CrossOver展示了在Mac上运行Windows软件的能力,但这只是运行单个程序,而非运行虚拟机和整个系统。

而且M1最高只支持16GB内存,对虚拟机来说显得有些捉襟见肘。

eAJFvqm.jpg!mobile

在运行并行测试时,Mac开始大量在硬盘和内存之间进行数据交换,性能确实下降了。对于运行的虚拟机,这会带来更多的问题。

结论

新款搭载M1芯片的MacBook速度快、运行安静,但是在软件方面还需要做很多工作,才能赶上搭载Intel芯片的MacBook。

你可以拿它作为第二台开发电脑使用,如果作为主力开发机,可能会遇到这样那样的问题。想要更好的兼容性需要等到明年软件厂商更新,或者是M2发布。

另外,最高16GB的内存对程序员来说可能还是不够,希望未来的Mac有32GB内存可选。

参考链接:

https://news.ycombinator.com/item?id=25238608

https://steipete.com/posts/apple-silicon-m1-a-developer-perspective/

https://soffes.blog/homebrew-on-apple-silicon

https://github.com/mikelxc/Workarounds-for-ARM-mac

版权所有,未经授权不得以任何形式转载及使用,违者必究。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK