Apple M1 Compatibility - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Harry1993
V2EX    Apple

Apple M1 Compatibility

  •  
  •   Harry1993 2020-11-24 11:53:28 +08:00 3619 次点击
    这是一个创建于 1785 天前的主题,其中的信息可能已经有所发展或是发生改变。

    TLDR:Apple M1 下用 macports 能大部分 command line tools 的 native execution (不用 rosetta2 )。

    Apple Store 拿到 MacBook Air 乞丐版,第一件事安 macports 。地 macports 已是 arm64-native 了,而且 macports 下的大部分 packages 也都在 arm64 架 pre-compiled 了,直接可以安。那些尚未 pre-compiled 的可以在本地 compile 。果就是,command line tools 基本都配 Apple M1 。

    :常的 command line tools Apple M1 的配得不。

    附:我用 macports 安 mutt 和 tmux 的日。我看到,除了 mutt 以外,其他 packages 都是直接安,而 mutt 需要本地 build 。

    >> sudo port install tmux mutt Password: ---> Computing dependencies for tmux The following dependencies will be installed: libevent Continue? [Y/n]: Y ---> Fetching archive for libevent ---> Attempting to fetch libevent-2.1.12_0.darwin_20.arm64.tbz2 from https://packages.macports.org/libevent ---> Attempting to fetch libevent-2.1.12_0.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/libevent ---> Installing libevent @2.1.12_0 ---> Activating libevent @2.1.12_0 ---> Cleaning libevent ---> Fetching archive for tmux ---> Attempting to fetch tmux-3.1c_0.darwin_20.arm64.tbz2 from https://packages.macports.org/tmux ---> Attempting to fetch tmux-3.1c_0.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/tmux ---> Installing tmux @3.1c_0 ---> Activating tmux @3.1c_0 ---> Cleaning tmux ---> Computing dependencies for mutt The following dependencies will be installed: curl-ca-bundle gnutls libidn2 libtasn1 libunistring nettle p11-kit Continue? [Y/n]: Y ---> Fetching archive for curl-ca-bundle ---> Attempting to fetch curl-ca-bundle-7.73.0_0.darwin_20.noarch.tbz2 from https://packages.macports.org/curl-ca-bundle ---> Attempting to fetch curl-ca-bundle-7.73.0_0.darwin_20.noarch.tbz2.rmd160 from https://packages.macports.org/curl-ca-bundle ---> Installing curl-ca-bundle @7.73.0_0 ---> Activating curl-ca-bundle @7.73.0_0 ---> Cleaning curl-ca-bundle ---> Fetching archive for libunistring ---> Attempting to fetch libunistring-0.9.10_0.darwin_20.arm64.tbz2 from https://packages.macports.org/libunistring ---> Attempting to fetch libunistring-0.9.10_0.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/libunistring ---> Installing libunistring @0.9.10_0 ---> Activating libunistring @0.9.10_0 ---> Cleaning libunistring ---> Fetching archive for libidn2 ---> Attempting to fetch libidn2-2.3.0_0.darwin_20.arm64.tbz2 from https://packages.macports.org/libidn2 ---> Attempting to fetch libidn2-2.3.0_0.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/libidn2 ---> Installing libidn2 @2.3.0_0 ---> Activating libidn2 @2.3.0_0 ---> Cleaning libidn2 ---> Fetching archive for libtasn1 ---> Attempting to fetch libtasn1-4.16.0_0.darwin_20.arm64.tbz2 from https://packages.macports.org/libtasn1 ---> Attempting to fetch libtasn1-4.16.0_0.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/libtasn1 ---> Installing libtasn1 @4.16.0_0 ---> Activating libtasn1 @4.16.0_0 ---> Cleaning libtasn1 ---> Fetching archive for nettle ---> Attempting to fetch nettle-3.6_0.darwin_20.arm64.tbz2 from https://packages.macports.org/nettle ---> Attempting to fetch nettle-3.6_0.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/nettle ---> Installing nettle @3.6_0 ---> Activating nettle @3.6_0 ---> Cleaning nettle ---> Fetching archive for p11-kit ---> Attempting to fetch p11-kit-0.23.21_0.darwin_20.arm64.tbz2 from https://packages.macports.org/p11-kit ---> Attempting to fetch p11-kit-0.23.21_0.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/p11-kit ---> Installing p11-kit @0.23.21_0 ---> Activating p11-kit @0.23.21_0 ---> Cleaning p11-kit ---> Fetching archive for gnutls ---> Attempting to fetch gnutls-3.6.15_0+doc.darwin_20.arm64.tbz2 from https://packages.macports.org/gnutls ---> Attempting to fetch gnutls-3.6.15_0+doc.darwin_20.arm64.tbz2.rmd160 from https://packages.macports.org/gnutls ---> Installing gnutls @3.6.15_0+doc ---> Activating gnutls @3.6.15_0+doc ---> Cleaning gnutls ---> Fetching archive for mutt ---> Attempting to fetch mutt-2.0.0_0+gnutls+idn+imap+pop+smtp.darwin_20.arm64.tbz2 from https://packages.macports.org/mutt ---> Attempting to fetch mutt-2.0.0_0+gnutls+idn+imap+pop+smtp.darwin_20.arm64.tbz2 from https://ywg.ca.packages.macports.org/mirror/macports/packages/mutt/mutt ---> Attempting to fetch mutt-2.0.0_0+gnutls+idn+imap+pop+smtp.darwin_20.arm64.tbz2 from https://mse.uk.packages.macports.org/mutt ---> Fetching distfiles for mutt ---> Attempting to fetch mutt-2.0.0.tar.gz from https://bitbucket.org/mutt/mutt/downloads/ ---> Verifying checksums for mutt ---> Extracting mutt ---> Configuring mutt ---> Building mutt ---> Staging mutt into destroot ---> Installing mutt @2.0.0_0+gnutls+idn+imap+pop+smtp ---> Activating mutt @2.0.0_0+gnutls+idn+imap+pop+smtp ---> Cleaning mutt ---> Updating database of binaries ---> Scanning binaries for linking errors ---> No broken files found. ---> No broken ports found. ---> Some of the ports you installed have notes: tmux has the following notes: If you want integration with system pasteboard consider installing port tmux-pasteboard as well >> 
    13 条回复    2020-12-14 02:11:42 +08:00
    czhu
        1
    czhu  
       2020-11-24 12:04:31 +08:00
    那 brew 怎么还不支持 M1 说还要好几个月
    Harry1993
        2
    Harry1993  
    OP
       2020-11-24 12:07:40 +08:00
    @czhu 呀,我就是因原因投 macports 的,竟然它其挺好用。
    czhu
        3
    czhu  
       2020-11-24 12:09:16 +08:00
    @Harry1993 有 brew 那样的 cask 支持吗?
    当年我记得 macports 的毛病是什么都要自己编译 特别占空间 而且每次升级都慢
    Harry1993
        4
    Harry1993  
    OP
       2020-11-24 12:12:34 +08:00   1
    @czhu 我的 iterm2 就是用 macports 的:port install iterm2 。spotlight 也能自找到。
    估在 macports 化好了吧。在大部分 app 都可以直接安,不需要本地。
    czhu
        5
    czhu  
       2020-11-24 12:28:55 +08:00
    @Harry1993
    dependency 呢?是尽量用系统的还是装一套自己的
    原来是装一套自己的环境和系统互不影响 但这样就很占空间了
    ryh
        6
    ryh  
       2020-11-24 13:40:52 +08:00
    自从 macports 被 rvm 默认安装,而 macports 还自动建了用户名和用户组 我就对它没有好感(强盗逻辑啊)
    看了下 https://packages.macports.org/?C=M;O=D 11 月 22 日以后更新了不少,但绝对没超过它所以 packages 的 20%
    AkideLiu
        7
    AkideLiu  
       2020-11-25 00:01:40 +08:00 via iPhone
    macports 很棒我用 brew
    Binboy
        8
    Binboy  
       2020-12-12 11:05:03 +08:00
    brew 对 M1 的支持迟迟还没来,尝试下
    sinxccc
        9
    sinxccc  
      2020-12-14 01:13:33 +08:00
    @czhu 现在 macOS 系统的方向是 base system 尽量可能小而且 read only 。系统给提供的库已经非常少,而且并不推荐第三方软件使用了。

    现在即使是 homebrew,需要在包管理器内部解决的依赖也是越来越多,homebrew 使用 keg only 来解决跟系统包重复的问题。从这个角度的话,macports 选择的方向没有什么问题。

    Homebrew 的 Apple Silicon 进度的话,我自己的尝试,到今天( 2020-12-13 )为止,如果你按照推荐安装在 /opt/homebrew 下的话,很多包也已经有了 arm64 的 bottled,剩下的自己编译也基本可以。剩下还有问题的只有 go 和 rust 的依赖,这个只能等上游发布新版本了。

    不过 Homebrew 这次的操作有点迷,如果它坚持 arm64 只能安装在 /opt/homebrew 的话,无异于放弃了一直以来宣传的无缝便利(因为所有的包在 /usr/local 下)。
    sinxccc
        10
    sinxccc  
       2020-12-14 01:18:04 +08:00
    @Harry1993 类似 cask 的支持在 macports 里其实是没有的,你看到的 iTerm2 也是 macports 自己编译的版本。换句话说,只有开源的 app 才有收录进 aqua 下的可能。
    Harry1993
        11
    Harry1993  
    OP
       2020-12-14 01:38:44 +08:00
    @sinxccc 我有疑,我自己 build 了 go (照 https://gist.github.com/Dids/dbe6356377e2a0b0dc8eacb0101dc3a7 ),我如何能告 homebrew 或者 macports 去哪找到本地的 go,於是他在安(依 go 的) ports 不用另外再去安 go (通常是失的)?

    python38,openjdk 也有同的:我自己有一套 arm64-native 的境,如何 homebrew 或者 macports 找到依他?
    sinxccc
        12
    sinxccc  
       2020-12-14 01:58:09 +08:00
    @Harry1993 抱歉,我不知道有什么正常一点的方法,因为依赖关系是写在它们包的定义文件里的macports 的 Portfile 、homebrew 的 formula 。

    我能想到可行的 hack 只有在安装之前手工编辑一下包定义文件,去掉对 go 的依赖,然后确保自己编译的 go 在 PATH 里。等安装好再复原包定义文件。
    czhu
        13
    czhu  
       2020-12-14 02:11:42 +08:00
    @sinxccc 非常感谢
    macports 10 年前用过体验一般 homebrew 一出 耳目一新
    最近几年 homebrew 风评逐渐下降 这次升级 M1 看来是一次洗牌 风水轮流转又要重投 macports 的怀抱了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2808 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 14:41 PVG 22:41 LAX 07:41 JFK 10:41
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86