M1上的那些坑

引言

手上的 M1 pro 用了也快一年了，平时就是用来办公、学习、P 图的，偶尔做做开发，目前也是一个重度 Mac 使用者了。这里就把我遇到的一些问题总结一下，如果有人有遇到过类似的问题，希望能给你们一些启发。

Brew 环境

我最开始用的 Mac 是 19 年的 Air，x86 架构的，那台装了brew，后面收到 M1 的时候，迫不及待得进行了数据迁移，然后就傻眼了，好多软件都需要重新下载 Apple 版的，或者要装Rosetta，最让我难受的是brew没法直接用，找不到原本安装位置，卸载不了，从官方拿来的一键安装也搞不了，后来记得在一个老哥的知乎里找到了好的解决方案，也是一条命令行解决，参考这里。

Django 连接 MySQL

最近也在学习 Django，我倾向于使用 Docker 版本的 MySQL，但是在配置完 Django 的settings.py，并安装好mysqlclient，兴冲冲的运行runserver后，报了大概这样的错误

Copy
symbol not found in flat namespace '_mysql_affected_rows'
NameError: name '_mysql' is not defined

一开始，我拿着报错去问 ChatGPT，GPT 告诉我是版本不匹配的问题，让我控制 MySQL 的版本和mysqlclient版本一致，我也搞好了，都装了 latest 版，还是一样的错误，GPT 也还是一样的答复。
然后我在PyMySQL的 issue 中，找到了解决方案，主要问题出在 MySQL 以及mysqlclient的 ARM 版本仍旧存在问题，需要安装 x86 版本的。

首先需要将重新安装 x86 版本的brew

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

本来 ARM 版的brew安装位置默认在/opt/homebrew/bin/brew

执行完安装脚本后，会提示让你手动执行两条命令，更改一下当前的使用的brew的位置

Copy
(echo; echo 'eval "$(/usr/local/bin/brew shellenv)"') >> /Users/youngjack/.zprofile
eval "$(/usr/local/bin/brew shellenv)"

此时使用which brew后就会发现已经使用的是新安装的位于/usr/local/bin/brew的 x86 brew了

如果要换回 ARM 版就把手动执行的命令中的brew的位置换回 ARM 版本的位置就行。

注意：使用 x86 brew 的前提是已经安装了 Rosetta

然后就在python环境下重新安装mysqlclient以及使用brew重新安装 MySQL

Copy
brew install mysql
pip uninstall mysqlclient -y
pip install mysqlclient --no-cache-dir

重新开跑 Django，问题解决！

安装软件出现文件损坏无法使用

至于为什么出现这样的提示，大概率是破解软件（穷啊，软件买不起）。
可以使用如下命令

Copy
sudo xattr -r -d com.apple.quarantine <app>
sudo codesign --sign - --force --deep <app>

之后，如果在设置的安全组里有让允许软件的情况，点一下允许就行了。

Pulse Secure

由于工作的关系，需要使用 Pulse Secure 的 VPN 连接，这里得给泼一盆冷水，目前并没有哪里能一直提供 Pulse Secure 客户端的免费下载，一般都是公司内部提供，可是公司内部提供的大部分是 Windows 版本，目前能搜到的可以使用的下载链接，且用且珍惜，不知道什么时候这个链接也会失效。

软件推荐

Excalidraw，一款开源的作图软件，模拟书写的笔画，还可以多人协作，建议使用 Chrome 把他们的在线版安装到本地，点击即用。

RunCat，跑在屏幕顶栏的小猫，可爱，监控资源。