V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aec4d
V2EX  ›  macOS

M1 的兼容性可能没你想的那么好

  •  1
     
  •   aec4d · 58 天前 · 7753 次点击
    这是一个创建于 58 天前的主题,其中的信息可能已经有所发展或是发生改变。

    看网上很多言论盛赞 M1 的兼容性,买之前我搜了下 B 站相关视频https://www.bilibili.com/video/BV1TK4y1L7DU (只是用作举例),觉得兼容性还不错

    到手后用了一周发现是过于乐观了。

    M1 对 X86 二进制文件的兼容性挺好,现在很多 App 甚至都有原生 ARM 版本。所以很多 app 和 x86 二进制文件都能完美运行。主要的问题出在涉及**C/C++**的编译流程上,老版本库尤其如此。在网上看到的很多人说 M1 兼容性好的操作是使用最新版。不得不说开发者社区很热情,很多开发工具 /库的最新版已经完美适配了 M1 。安装和使用都没有问题

    老版本就是另外一种情况了。若干年前应该不会有人想到自己写的针对 X86 构建流程,有人会尝试在 arm 上去构建。所以涉及到**C/C++**编译的老版本软件很有可能会构建失败

    我尝试安装 ARM 版的 python, 3.7 以下的版本还没有安装上。对老项目执行了pip install -r requirements.txt numpy,scipy,pandas,cryptography 等接近十个涉及到 C 的库全部不兼容,惊奇的是把这些库升级到最新版都能正常安装,只有一个库不支持, 但是也有人放出了支持的 wheel 包。最后要想使用这些库,我还得对升级后项目做一个大测试

    设想一下,以前用 x86 ,很多 github 项目拷贝下来就能正常运行的,用了 M1 后可能就不行了~~

    因此个人还是觉得 M1 适合视频工作者 /移动端,前端开发人员。他们的工具不太涉及到老版本工具的 C/C++构建流程

    综上,我在办公室放了一台台式机,安装了 Exsi, 虚拟了 ubuntu 和 windows ,ARM 不支持的时候走远程开发流程

    用了一下 jetbrains gateway ,可惜,体验并不好

    希望各位开发大佬下单的时候考虑一下自己工作流的兼容性,尤其是老项目的兼容性

    也希望远程开发工具能给力啊,毕竟谁不想拿个轻薄本连强大的服务器远程开发呢~~~

    92 条回复    2021-12-05 07:57:54 +08:00
    Jooooooooo
        1
    Jooooooooo  
       58 天前
    我旧版本的 mac 升了个 monterey 还有好几个软件都失效了
    qdwang
        2
    qdwang  
       58 天前
    不兼容的东西是有很多。。。不搞视频的。。。还不如等 12 代酷睿笔记本。。。。而且 macbook 现在笔记本都沉的像石头。
    wangkun025
        3
    wangkun025  
       58 天前
    想一下大家都有兼容性问题,就看开了。
    ubuntu 也跑不了很多 Windows 程序。Windows XP 也跑不了一些 Windows10 的程序。
    liprais
        4
    liprais  
       58 天前   ❤️ 1
    我都用了一年了,毫无问题
    aec4d
        5
    aec4d  
    OP
       58 天前
    @wangkun025 不是这样的,苹果开发 x86 生态经营了很多年,很多库都是完美兼容 x86 ,所以很多开发工作在苹果 x86 上没有阻碍,但是切换到 M1 部分老库可能就有问题了。此时个人是没办法解决的。选择合适自己当下工作流的生态,切莫单纯认为 M1 能完美兼容以前的 X86
    wangkun025
        6
    wangkun025  
       58 天前
    @aec4d 有一些在 X86 上也有问题的。比如无法安装某个较老版本的软件,原因是 xcode 提供的库的版本太新了。

    我使用过一段时间 M1 ,没遇到任何问题。
    当然不是说 M1 没问题。
    但我还是建议升级。对我来说,效率远远大于那点兼容性。
    cheng6563
        7
    cheng6563  
       58 天前
    换个思路,Mac 本来就升个大版本一堆不兼容的,这样用 M1 不就是正好。
    fireleaves
        8
    fireleaves  
       58 天前
    goalng 开发,用到了 cgo 以及一些 lib 库,有一些通过 brew 安装之后即可直接使用,也有一些偏门的需要自己编译,折腾了一天,现在所有的依赖都解决了。
    结论:确实是做不到和 x86 一样的开箱即用,但是问题不大
    Aviciii
        9
    Aviciii  
       58 天前
    低端码农,目前还没遇到兼容性问题,就是感觉系统有些不稳定
    nieyujiang
        10
    nieyujiang  
       58 天前 via iPhone   ❤️ 9
    我认为只要新版的能兼容就好了,你要求几年前甚至十几年前写的东西适配未来的东西不现实啊🧐
    jfdnet
        11
    jfdnet  
       58 天前
    macos 的向后兼容性都差的一 p 不要说这都硬件换架构了。不适合自己的东西不要买。
    yangzzzzzzzt1
        12
    yangzzzzzzzt1  
       58 天前
    兼容性感觉是个大坑,很多陈年老库不知道有多少暗坑等着踩,可能我下一个笔记本会投奔 windows 本
    disk
        13
    disk  
       58 天前
    能兼容最新的就不错了,我听人谈到过个别库 x86 版免费,arm 要收费,不知道是不是真的
    aec4d
        14
    aec4d  
    OP
       58 天前
    @nieyujiang 如果继续用 x86 ,那就是兼容几年前甚至十几年前写的东西啊
    nieyujiang
        15
    nieyujiang  
       58 天前
    @aec4d #14 就算不换 arm 处理器,苹果系统一个大版本升级,都一堆老的库编译出问题.
    Biggoldfish
        16
    Biggoldfish  
       58 天前   ❤️ 5
    @nieyujiang 说得好,于是 Apple 的工厂里得用 Mac 装着 Windows 来制造 Apple 设备,那些辣鸡工业软件竟然不每年都更新来适配高贵的又带来 breaking change 的 Mac OS 成何体统
    niubee1
        17
    niubee1  
       58 天前
    python2.7 编译成功了的
    tmux123
        18
    tmux123  
       58 天前   ❤️ 2
    以稳定性为理由不升级依赖版本,就要有对应的觉悟,毕竟社区没有义务去做兼容 /移植。

    见过有的前端项目为了保证一致性,整个 node_modules 提交到 git 仓库里,限制死 nodejs 版本,只能用 windows 开发。有条件的用远程服务器,虚拟机环境都是一模一样的。

    不过话说回来,技术债迟早要还的,这是是 M1 ,下次肯定还会有别的东西。
    changhai
        19
    changhai  
       58 天前
    好虚,python 哪个库,具体哪个应用不能用,或者慢,能清楚一点吗?
    zhouwb
        20
    zhouwb  
       58 天前 via iPhone   ❤️ 7
    这是常识吧?毕竟平台换了,软件一定要适配,就算 x86 架构也有很多软件需要适配新系统,再说 windows 也有这个问题了,win11 就有很多兼容性问题啊,大家所谓的兼容大多数软件,当然指的是新版本适配后的,不会是旧版本,既然楼主还在用很多旧版本东西,就不该买 arm 架构,要么 win 本要么 intel 版本的 mac ,但是也大概率会遇到兼容性问题,时代在进步,不可能停滞不前,也不可能永远向后兼容,当初 windows 的向后兼容导致系统臃肿无比,各种无用东西充斥系统,是我当初抛弃 win 的原因之一,至于旧东西就该用旧设备来,比如我们单位还有 win2000 的系统,软件无法升级,只能找旧机器做 win2000 来运行,最后奉劝所有人,任何一个东西都不适用所有人,买之前考虑好自己的需求,防止后悔,装逼的当我没说
    bipy
        21
    bipy  
       58 天前   ❤️ 1
    Python 推荐换用 miniforge 来管理依赖,https://formulae.brew.sh/cask/miniforge
    可以解决一些 pip 无法安装的包比如 scipy

    目前遇到的无法安装且无法替代的包只记得有 z3-solver
    explorerproxy
        22
    explorerproxy  
       58 天前
    我 typc-c 转 hdmi2.1 都有问题
    lululau
        23
    lululau  
       58 天前
    都是讨论软件是不是兼容特定硬件,M1 哪来的兼容不兼容之说😂
    aec4d
        24
    aec4d  
    OP
       58 天前
    @changhai 慢不慢不重要,Python 涉及到 C 的低版本库几乎全军覆没,具体哪些库没必要列出
    aec4d
        25
    aec4d  
    OP
       58 天前
    @bipy 有试过特定的低版本库吗,主流库的最新版本差不多都已经完成了兼容
    aec4d
        26
    aec4d  
    OP
       58 天前   ❤️ 1
    @zhouwb 是的,想清楚很重要,我只是觉得网上对 M1 的兼容性过于乐观了。即使新版本已经对 M1 做了兼容,但是大项目开发很多时候新版本不是想上就能上的
    coolmint
        27
    coolmint  
       58 天前
    做 Android, iOS, Flutter 的下个月收到货后试试,希望没有太大问题,当然视频生产力也是我最看重的一点。
    zhouwb
        28
    zhouwb  
       58 天前 via iPhone   ❤️ 1
    @aec4d 非常赞同,即使是做新的东西,研发的基础组件也未必都是新的,这里面不光是开发的问题,还牵扯到人财物等很多问题,尤其是大项目,真的不是说换新就换新啊
    berchtesgaden
        29
    berchtesgaden  
       58 天前
    @Biggoldfish 好奇,是 Apple 的工厂,还是富士康的工厂?
    berchtesgaden
        30
    berchtesgaden  
       58 天前
    看完楼主的长篇大论,感觉是 M1 Mac 作为刚刚发布一年的新架构电脑,兼容性真好。
    wishyy
        31
    wishyy  
       58 天前
    @Biggoldfish 说一万遍了不嫌腻吗
    1002xin
        32
    1002xin  
       58 天前
    我以为自己回到了十几年前
    changhai
        33
    changhai  
       58 天前
    什么时候技术讨论都走意识流了?
    没人否认 M1 的问题,我也遇到了一些,但空对空的没什么意义。
    blocked ,不用再回我
    gjquoiai
        34
    gjquoiai  
       58 天前
    emm 我只好说你对自己的开发环境了解不够,或者说没有事先测试过 arm 架构
    ganbuliao
        35
    ganbuliao  
       58 天前
    用了半年是有一些兼容性的问题,但是用作开发环境的话还好大部分都能解决
    Vegetable
        36
    Vegetable  
       58 天前
    感觉很多人没抓住重点。
    你买个电脑,公司的代码不能运行,你能擅自切换依赖到最新版吗
    ophunter
        37
    ophunter  
       58 天前
    心疼楼主,楼主碰到脑残了
    bao3
        38
    bao3  
       58 天前 via iPhone
    @Vegetable 电脑 14 天退货,既然影响工作为啥不退?如果退了,也就没你说的情况了?
    minamike
        39
    minamike  
       58 天前 via iPhone
    只能说没你自己想的那么好
    对大多数 intel 芯片 mac 转换过来的用户来说兼容性挺好的了
    holulu
        40
    holulu  
       58 天前
    兼容性好不好应该是根据自己的使用场景决定的吧,跟其他人有什么关系?
    sidkang
        41
    sidkang  
       57 天前
    是的,同意楼上的意见,楼主不妨对自己涉及到不兼容的库都列一列更有意义,并且不兼容是指 arm 运行,还是 rosetta2 运行也失败,也可以说说看~
    hello2090
        42
    hello2090  
       57 天前
    @Vegetable 公司的代码不是用公司的电脑开发的吗?为啥要自己买?公司的程序 m1 上跑不了公司会给你 m1 吗?
    hello2090
        43
    hello2090  
       57 天前
    @zhouwb 既然不是说换新就换新,那就安心的等着公司 it 给你们换新电脑,为啥还要自己买不兼容的 m1 硬上呢?
    MengiNo
        44
    MengiNo  
       57 天前 via Android   ❤️ 1
    不是很明白这种技术债务为什么要赖工具。就好比买了个 win11 电脑跑不起 金庸群侠传 要怪电脑不兼容一样。
    All2B9S
        45
    All2B9S  
       57 天前   ❤️ 1
    兼容性确实是个问题,我就是因为学长和教授说 arm Mac 有兼容性问题最后买的二手 Intel Mac 。个人认为这应该是现阶段的最优解了。二手不贵,性能也够用,应该能挺到 arm Mac 解决所有兼容性问题的时候。
    lucifer9
        46
    lucifer9  
       57 天前
    有没有试过用 `arch -x86_64` 来跑
    aec4d
        47
    aec4d  
    OP
       57 天前   ❤️ 3
    好家伙,很多人理解的兼容性就是新版本适配了 M1 ,那就是兼容性牛逼了。再下佩服!还有说技术债的,我一个搞开发的,一个项目依赖上百个库,人力也有限,我还要追着更新库的版本?但愿你们在使用的过程中不会遇到一定要用旧版本才行的时候,即使遇到了你也能自己解决
    dot
        48
    dot  
       57 天前 via Android
    @aec4d #46
    键盘侠说话当然容易,大家项目不同依赖不同,张口就是技术债的,总监你来做?😂😂😂
    loading
        49
    loading  
       57 天前   ❤️ 2
    从回帖上还是看到盲目的果粉,兼容性都不谈就光说升级,如果一台电脑连主人的主要业务都无法支撑,要来干啥?
    loading
        50
    loading  
       57 天前
    同一台 m1 ,一千个用户就有一千多哈姆雷特,我是在等我的工具链适配好才会升级,要么就是工作换了,工具链能在 m1 跑了。说到底这台电脑只是工具而已。公司旧业务跑在旧平台,支撑几千万资产的业务,谁能随口就换掉?
    ColorfulBoar
        51
    ColorfulBoar  
       57 天前   ❤️ 6
    推荐 Mac 用户熟练掌握 doublethink:
    x86 应用能跑 -> Rosetta2 很强大
    x86 应用不能跑 -> 开发者适配不行
    同理:
    macOS 应用运行飞快 -> MacBook 性能好
    macOS 应用运行缓慢 -> 开发者优化不行
    kunkunzhang
        52
    kunkunzhang  
       57 天前
    前端还好,我用 m1 超过半年了基本没啥问题,后端涉及到编译的东西感觉还是差点意思
    hello2090
        53
    hello2090  
       57 天前
    @loading 这不怪苹果啊,连主要业务都支撑不了,这电脑根本就不该买啊
    hello2090
        54
    hello2090  
       57 天前
    @aec4d 这么牛逼的项目应该已经有牛逼的电脑在开发了吧,为啥硬要上还没完全适配的 m1 呢?
    hello2090
        55
    hello2090  
       57 天前
    @loading sorry 看错了,你和我说的是一个意思嘿嘿
    pupboss
        56
    pupboss  
       57 天前 via iPhone   ❤️ 1
    你喷的点不对,兼容性问题大不了找替代品,大不了找旧机器。而 M1 目前我认为最大的问题是莫名其妙死机,莫名其妙紫屏,运气好的时候一周一次,运气不好的时候一天三次
    Badlion
        57
    Badlion  
       57 天前
    @pupboss 我觉得你喷的才叫有问题。你不能代表我的 M1 ,我的起码 8 个月没出现过死机紫屏了
    felixcode
        58
    felixcode  
       57 天前   ❤️ 2
    基础库的兼容性问题客观存在,楼上这些人就别误导没买的人了。

    难不成到时出了兼容性问题,骂公司骂领导骂项目?骂技术债?

    或者到时一个个 @你们这些人找解决方案?
    Leonard
        59
    Leonard  
       57 天前
    买前了解一下自己需要的工具支持情况怎样再买吧,M1 体验再好,用不上也是白说
    ruib
        60
    ruib  
       57 天前 via iPhone
    用到的库多了确实难免遇到兼容性问题,像 pyOpenSSL 的 native 版就用不了。目前是另外用 Rosseta 版 Terminal 单独配了一套开发环境,没遇到兼容性问题了,楼主可以试试
    ngn999
        61
    ngn999  
       57 天前
    现在最常用的软件还没支持 Apple Silicon 的有: Dropbox, Discord, Binance, Alacritty.
    其他的都没问题了.
    lucifer9
        62
    lucifer9  
       57 天前
    各位如果是用公司给配的电脑,公司允许换 M1 了,然后出现各种兼容性问题,那该骂 IT
    hello2090
        63
    hello2090  
       57 天前 via iPhone
    @lucifer9 对啊,我也很奇怪还有问出兼容性问题该骂谁的,谁拍板决定的骂谁呗
    736531683
        64
    736531683  
       57 天前
    你列举的这些难道不是 arm 的问题? arm 的 pip 是有专门的源的,或者我推荐你安装 miniforge 之类的。arm 端确实很多坑,不过未来是趋势,移动设备都兼容 arm
    devinww
        65
    devinww  
       57 天前
    每个人的情况不同,也不好说啥,目前个人 java 反正感觉没啥问题
    felixcode
        66
    felixcode  
       57 天前 via Android
    @lucifer9
    所以作为公司 IT ,有点脑子的就应该只让公司里用 intel ,谁让用 m1 谁 SB ,或者谁要用 m1 就去签个免责声明。
    janxin
        67
    janxin  
       57 天前
    其实主要是你不能假定开发者在开发的时候能预想到之后自己的程序最终要跑在 ARM 上...很多还有老版本不兼容 Windows 的呢...
    oscargong
        68
    oscargong  
       57 天前
    Python 试试 conda-forge
    shadownet
        69
    shadownet  
       57 天前
    @wangkun025 兼容性和跨平台,这是 2 个问题。还有你说的 windows xp 跑不了 win 10 的程序,这并不是一个问题,很少有系统能“向上”兼容,特别是这种版本跨越特别大的版本。

    建议再看看书
    bao3
        70
    bao3  
       57 天前 via iPhone
    @felixcode 没有人误导他,ARM 100% 会出现和 X86 的兼容问题,官方买 macbook 是 14 天退换的,谁也坑不了谁。
    MrKrabs
        71
    MrKrabs  
       57 天前
    那你直接用 rosetta 跑 x86 不就好了,说不定还比 arm 快呢
    niubee1
        72
    niubee1  
       57 天前   ❤️ 1
    也没有很多人想象的那么差,我试了试编译 python2.7 ,其实坑都不在 rosetta2 ,而是新版本的 MacOS 更换了 OpenSSL 和 zlib 的版本和安装地址,你需要自己去设置编译参数指向正确的地址即可。
    wangkun025
        73
    wangkun025  
       57 天前
    @shadownet ……为什么你会认为我不知道你说的这些呢,唉。
    felixcode
        74
    felixcode  
       57 天前 via Android
    @bao3
    要能 14 天里发现所有兼容性的坑就好了。
    xuegy
        75
    xuegy  
       57 天前
    我就说一个问题:sigfpe 到现在还没办法。而且不是 CPU 不支持,是 Clang 不支持,简单来说就是苹果把半成品直接拿出来卖了,外表光鲜亮丽,实际上根基还不牢。
    Cu635
        76
    Cu635  
       57 天前
    @Badlion
    那恰恰说明水果的品控出了问题。
    bao3
        77
    bao3  
       57 天前 via iPhone
    @felixcode 要是工作用的东西,生产力工具,自己就换了 CPU 架构,然后不用 rostta2 ,14 天的工作里没有兼容问题,那确实得想想问题到底在谁。
    tanrenye
        78
    tanrenye  
       57 天前
    也不只是 Mac ,苹果的东西就这样,你必须在他的范围做事,就很爽,一旦你超出他的范围,就很难受,买苹果的东西,真的要调查清楚再下手
    aec4d
        79
    aec4d  
    OP
       57 天前
    @ruib 是拷贝一个 iTerm2 以 Rosetta 模式运行,然后 x86 的 homebrew 安装在另外一个目录? x86 和 arm 完全隔离两套?
    lizytalk
        80
    lizytalk  
       57 天前 via iPhone
    你的需求说实话非常小众,很少有非得用旧版不可的。开发者积极适配新版本对大部分人已经够了
    ruib
        81
    ruib  
       57 天前   ❤️ 1
    @aec4d 是的,homebrew 两种架构默认的安装目录就是不同的。然后我在.zshrc 里放了下面这段:

    # Multiple Homebrews on Apple Silicon
    if [ "$(arch)" = "arm64" ]; then
    eval "$(/opt/homebrew/bin/brew shellenv)"
    else
    eval "$(/usr/local/bin/brew shellenv)"
    fi

    希望对你有帮助
    psklf
        82
    psklf  
       56 天前
    @aec4d 有道理,工作中不知道什么时候需要编一个 10 年前的工具,然后一堆乱七八糟依赖都需要编译,ARM 平台面对这种情形到底好不好用还真不知道。
    ssbg2
        83
    ssbg2  
       56 天前
    JAVA 为主的服务器端开发还是可以的
    RikkaFlame
        84
    RikkaFlame  
       56 天前
    要是 WIN 本的屏幕和音响能跟上,我是真的一点也不想用 macbook.
    paopaosa
        85
    paopaosa  
       56 天前
    所以还是要结合自己实际的工作内容进行选择,14 天内还可以退货。
    Rooney1
        86
    Rooney1  
       56 天前
    噗 我也是看了 b 站的视频加上论坛一片称赞。。。
    dope7
        87
    dope7  
       55 天前
    前几天公司给了台 Mac mini m1,这几天用下来,确实是遇到很多 m1 上出现的兼容性问题。。我 自己也买了新的 mbp ,等了快一个月了还有一星期发货,开始有点纠结了
    dblpx
        88
    dblpx  
       55 天前
    emmm……关于楼主提到的 Python ,我甚至搭建好了 torch 环境,并训练了几个小的神经网络了……并没有什么问题……
    yangzzzzzzzt1
        89
    yangzzzzzzzt1  
       53 天前
    @All2B9S same ,但我在想 m1 一直不解决这种兼容性问题的话,下一步电脑是不是要换 windows
    All2B9S
        90
    All2B9S  
       45 天前
    @yangzzzzzzzt1 Windows 太割裂了,别的不说,控制面板和设置到现在还不能合二为一就离谱
    lanmzx
        91
    lanmzx  
       44 天前
    @All2B9S 为啥非要合二为一?新用户老用户习惯都照顾着有啥不行? 没围着你转就是离谱? 在家皇帝当习惯了吧
    All2B9S
        92
    All2B9S  
       43 天前
    @lanmzx 问题是一个系统四种 UI 设计风格,哪怕是保留控制面板但至少把设计语言统一一下吧?😓
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1163 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 22:56 · PVG 06:56 · LAX 14:56 · JFK 17:56
    ♥ Do have faith in what you're doing.