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

从 MacBook Pro 2015 迁移到 MacBook Pro 2021 M1 时进行的一系列的折腾

  •  
  •   beginor · 2022-03-14 10:35:19 +08:00 · 3504 次点击
    这是一个创建于 986 天前的主题,其中的信息可能已经有所发展或是发生改变。

    安装常用软件的 Arm 版本

    虽然借助苹果的 Rosetta 转译程序, 可以直接运行原来的 x64 应用, 但是效率不高, 因此安装对应的 Arm 版本的软件才是最佳的选择。

    从 AppStore 上下载的应用, 基本上已经都是通用 (Universal) 应用了, 只需要在新电脑上重新下载即可。 而不是在 AppStore 上下载的软件, 则只能自己去官方网站上寻找对应的 Arm 版本。

    Rosetta 在最近几年内还是需要的, 毕竟有很多旧的软件还不支持 Arm 。

    迁移微信的聊天记录

    这个软件令人比较头疼, 但是又不得不安装, 而且没有官方的迁移方法, 只能手工按照下面的方法迁移:

    1. 在新电脑上用 AppStore 安装微信, 打开登录一次;
    2. 将旧电脑上的目录 ~/Library/Containers/WeChat 直接用 AirDrop 发送到新电脑;
    3. 在新电脑上将接收到的目录覆盖相同位置的目录, 应该也是 ~/Library/Containers/WeChat

    也可以用同样的办法迁移 QQ 的聊天文件, 或者说从 AppStore 下载的软件都可以用这种方法进行迁移,当然这个没有试过, 仅仅测试了微信和 QQ 。

    迁移项目文件

    项目中有很多临时文件, 特别是 node_modules 目录, 占用大量的空间, 不仅复制过去非常的耗时, 而且就算复制过去了也不能直接使用, 因此把它们清理掉再迁移。

    批量清理 node_modules 目录

    查找制定目录下全部的 node_modules 目录并打印大小

    在 Linux 和 Mac 上, 输入命令

    find . -name "node_modules" -type d -prune -print | xargs du -chs
    

    在 Windows 上,可以这样

    FOR /d /r . %d in (node_modules) DO @IF EXIST "%d" echo %d"
    

    将找到的 node_modules 目录删除

    在 Linux 和 Mac 上, 输入命令

    find . -name "node_modules" -type d -prune -print -exec rm -rf '{}' \;
    

    在 Windows 上, 可以这样

    FOR /d /r . %d in (node_modules) DO @IF EXIST "%d" rm -rf "%d"
    

    如果有 Powershell , 还可以这样

    Get-ChildItem -Path "." -Include "node_modules" -Recurse -Directory | Remove-Item -Recurse -Force
    

    可以使用同样的办法来删除编译生成的临时文件,比如 binobjclassdistlogs 等临时目录;

    清理完这些临时目录文件, 项目目录由 30G 缩减为 10G , 然后再用 AirDrop 发送到新电脑即可。

    上面清理目录的命令来自 How to Delete ALL node_modules folders on your machine , 其中 Windows 和 Powershell 版本的没有经过测试。

    全新安装 Homebrew

    这个本来按照官网的命令可以直接安装就可以了, 但是由于目前的网络环境不佳直接导致无法克隆 homebrew/core 下来, 最后找到的办法是将环境变量 HOMEBREW_CORE_GIT_REMOTE 设置为 [email protected]:Homebrew/homebrew-core.git , 即使用 ssh 地址才可以顺利克隆下来。

    安装 Homebrew 的第三方 Cask 时, 也可以指定 git 代码库的地址, 比如:

    brew tap beeftornado/rmtree [email protected]:beeftornado/homebrew-rmtree.git
    

    接下来就是继续安装 Homebrew 下的包, 和原来的用法一致。

    Docker

    DockerDesktop for Mac 已经适配 M1 , 不过原来的 x64 镜像(特别是数据库)几乎都不能用, 不过大部分 Linux 镜像都有 Arm 版本, 碰到没有的也可以自己编译一个出来, 使用上影响不大。

    但是编译出来的镜像也是 Arm 架构的, 不能直接部署到 x64 服务器上使用, 虽然可以强制性指定 --platform linux/x64 编译出 x64 版本的镜像, 但是又不能直接测试和使用, 看来还是不能完全脱离 Intel 机器。

    虚拟机

    试过 UTM 、VMWare Fusion 、Parallel Desktop , 只能安装 Arm 版本的系统, 对 Linux 支持的比较好,Windows 的支持其实都一般, 毕竟官方是不支持虚拟 Windows 系统的。

    如果确实想运行一些 Windows 软件的话, 还有一个选择,那就是 Wine 和 CrossOver ,Wine 只能运行 64 位的 Windows 软件, 而 CrossOver 则实现了 Wine32on64 , 可以在运行 32 位的 Windows 软件, 只是版本稍微低一些。

    Wine 和 CrossOver 可以使用第三方的 Homebrew 公示 Gcenx/homebrew-wine 来安装,也可以在 releases 页面直接下载, 如果想尝试最新的 wine-devel 以及 wine-staging , 则可以在 Gcenx/macOS_Wine_builds 下载。

    最新的 wine-devel 内置 VKD3D (用 VulkanAPI 实现 Windows 的 DirectX) 对 Windows 游戏支持的比较好, 可以抽时间试一下前段时间白嫖的古墓丽影四部曲。

    USB 扩展

    虽然有 HDMI 接口, 可以直接连接 HDMI 接口显示器、投影仪、电视机之类的, 但是如果需要连接 USB 键鼠 (虽然是键线分离的,但一般不能通过 USB Type-C 直接连接) 和 U 盘之类的话,OTG 线或扩展坞还是需要一个的。

    不想买扩展坞的话,也许买一个带全功能 USB Type-C 的显示器是更好的选择, 比如 Dell 的 U2421E 。

    原文地址 https://beginor.github.io/2022/03/14/move-to-macbook-pro-m1-max.html , 欢迎交流。

    12 条回复    2022-07-26 22:52:56 +08:00
    Leonard
        1
    Leonard  
       2022-03-14 10:38:19 +08:00
    我换到 M1 都是软件重新安装,只转移资料文件。
    mrgeneral
        2
    mrgeneral  
       2022-03-14 10:41:35 +08:00
    周末也刚好有一台电脑进行迁移 Intel 到 ARM 的,只用了 2 小时,大部分内容放在 iCloud 同步,只用把一些本地配置文件迁移过去就完事了,顺便把 ZSH 、VIM 这些也迁移到了 iCloud ,后续只用做一个软连接就妥了。

    代码啥的都在仓库,把目录下的 git remote url 遍历出来,在新电脑重新拉代码更快。

    最后看了下时间主要耗费在下载软件上了。
    beginor
        3
    beginor  
    OP
       2022-03-14 10:51:03 +08:00
    @mrgeneral AirDrop 点对点直联比 Git 克隆快多了, 一次可以发送多个目录, 历史记录什么也都在。
    sherwin008
        4
    sherwin008  
       2022-03-14 11:06:10 +08:00
    微信聊天记录那里,迁移过去点开聊天窗口查看记录,能显示吗?我用同样的方法迁移过去,发现读取不出来之前的聊天记录
    puduhe1
        5
    puduhe1  
       2022-03-14 11:33:41 +08:00
    时间机器不行吗?
    beginor
        6
    beginor  
    OP
       2022-03-14 12:27:26 +08:00
    @sherwin008 我的可以,记录都在
    beginor
        7
    beginor  
    OP
       2022-03-14 12:28:51 +08:00
    @Leonard 是的,确实是这样
    beginor
        8
    beginor  
    OP
       2022-03-14 12:30:11 +08:00
    @puduhe1 时光机只会 Ctrl+C/V , 不会帮你下载 arm 版本的软件。
    Senorsen
        9
    Senorsen  
       2022-03-14 12:48:01 +08:00
    macOS 迁移助理先通过无线方式迁移一下,然后部分不是 Universal 的 App ,以及 Homebrew 之类的重装一下不就好了嘛。

    微信本身也是 Universal 的,迁移助理迁过来后就能直接用了呀。
    lgdty3vv
        10
    lgdty3vv  
       2022-03-14 21:23:39 +08:00
    brew + ohmyzsh 重新安装后,输入 brew li + tab 补全不了 brew list 命令
    haogefeifei
        11
    haogefeifei  
       2022-03-16 15:57:14 +08:00
    9 楼说的对,我就是用迁移助理迁移的,然后慢慢替换常用软件的 arm 版本。你这复杂的折腾完全没有必要。
    DD0a48YwCzYUCQ8y
        12
    DD0a48YwCzYUCQ8y  
       2022-07-26 22:52:56 +08:00
    @lgdty3vv 官方文档有 https://docs.brew.sh/Shell-Completion
    To make Homebrew’s completions available in zsh, you must insert the Homebrew-managed zsh/site-functions path into your FPATH before initialising zsh’s completion facility. Add the following to your ~/.zshrc:

    if type brew &>/dev/null
    then
    FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}"

    autoload -Uz compinit
    compinit
    fi
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6048 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 02:35 · PVG 10:35 · LAX 18:35 · JFK 21:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.