MacOS下复制OrbStack的data目录
将OrbStack的data目录从/Volumes/SSD0/Library/OrbStack/data目录复制到/Volumes/Common/Library/OrbStack/data目录
cd "/Volumes/SSD0/Library/OrbStack/" && tar -cSf - "data" | (cd "/Volumes/Common/Library/OrbStack/" && tar -xSf -)将OrbStack的data目录从/Volumes/SSD0/Library/OrbStack/data目录复制到/Volumes/Common/Library/OrbStack/data目录
cd "/Volumes/SSD0/Library/OrbStack/" && tar -cSf - "data" | (cd "/Volumes/Common/Library/OrbStack/" && tar -xSf -)adb devices -l 列出已连接的设备,其中第一列就是设备名adb -s 设备名 forward tcp:34999 localabstract:Unity-com.\*\*\*.\*\*\*
如果只有一个设备,可以去掉
-s 设备名
Android 10以及更低的版本,必须通过 USB 连接后,才可实现同一 WLAN 下无线调试adb tcpip 5555adb connect ip(端口默认:5555)adb devices -l 列出已连接的设备,其中第一列就是设备名adb -s 设备名 forward tcp:34999 localabstract:Unity-com.\*\*\*.\*\*\*
如果只有一个设备,可以去掉
-s 设备名
从 Android 11 开始支持 ADB 以无线方式连接手机调试,可以彻底摆脱 USB 线adb pair ip:port,使用第 4 步中的 IP 地址和端口号adb connect ip:portadb devices -l 列出已连接的设备,其中第一列就是设备名adb -s 设备名 forward tcp:34999 localabstract:Unity-com.\*\*\*.\*\*\*
如果只有一个设备,可以去掉
-s 设备名
# 断开连接$ adb disconnect
# 重连$ adb connect
# 如果统一 WLAN 下,adb connect 失败后,可重置 adb,再次连接$ adb kill-server$ adb connect在MacOS下使用Supervisor来运行命令时,会出现与在终端中直接运行结果不一致的问题
比如之前在运行mcp-proxy时,在终端运行非常正常,但改到Supervisor后,mcp-proxy可以正常启动,但配置的mcp server始终无法正常运行
这个问题就是Supervisor运行的command环境与直接在终端运行时不一样导致的
首先获取环境变量
env | grep -E "(NODE|NPM|NVM|PYTHON|PATH)" | sort例如返回内容的内容如下:
INFOPATH=/opt/homebrew/share/info:PATH=/opt/homebrew/opt/node@22/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin然后将返回的PATH复制到Supervisor配置文件的environment里
[program:test]command='/Users/test/go/bin/mcp-proxy' --config '/Users/test/go/config/mcp-proxy.config.json'directory=/Users/test/go/bin ; 工作目录autostart=true ; 随 Supervisor 启动startsecs=10 ; 延迟启动60秒autorestart=true ; 自动重启startretries=3 ; 启动失败重试次数environment= HOME="/Users/test",PATH="/opt/homebrew/opt/node@22/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin"user=test ; 运行用户(可选)最后更新Supervisor配置
supervisorctl update这样就可以正确使用终端的环境来运行指令
# 启用IPv4转发sudo sysctl -w net.inet.ip.forwarding=1为了重启后依然有效,比较好的方式是创建启动项:
# 创建一个plist文件sudo vim /Library/LaunchDaemons/com.lc.ipforwarding.plistcom.lc.ipforwarding.plist文件内容如下
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict> <key>Label</key> <string>com.custom.ipforwarding</string> <key>ProgramArguments</key> <array> <string>/usr/sbin/sysctl</string> <string>-w</string> <string>net.inet.ip.forwarding=1</string> </array> <key>RunAtLoad</key> <true/></dict></plist>设置权限并加载:
# 设置正确的权限sudo chown root:wheel /Library/LaunchDaemons/com.lc.ipforwarding.plistsudo chmod 644 /Library/LaunchDaemons/com.lc.ipforwarding.plist
# 立即加载sudo launchctl load -w /Library/LaunchDaemons/com.lc.ipforwarding.plist验证设置:
# 检查当前状态sysctl net.inet.ip.forwarding
# 检查启动项状态sudo launchctl list | grep ipforwarding# 编辑配置文件sudo vim /etc/pf.conf
# 基本NAT配置示例,表示转发IP段192.168.1.0/24nat on en0 from 192.168.1.0/24 to any -> (en0)直接添加转发配置到pf.conf文件的最下面会有问题,应用配置文件时会报错
pfctl: Use of -f option, could result in flushing of rulespresent in the main ruleset added by the system at startup.See /etc/pf.conf for further details.
No ALTQ support in kernelALTQ related functions disabled/etc/pf.conf:31: Rules must be in order: options, normalization, queueing, translation, filteringpfctl: Syntax error in config file: pf rules not loaded解决办法是重新组织整个文件里内容的顺序
# 1. 定义变量ext_if = "en0"internal_net = "192.168.1.0/24"
# 2. 选项 (options)set skip on lo0set block-policy return
# 3. 规范化 (normalization)scrub-anchor "com.apple/*"
# 4. 队列 (queueing)dummynet-anchor "com.apple/*"
# 5. 转换 (translation)nat-anchor "com.apple/*"rdr-anchor "com.apple/*"# 添加自定义NAT规则nat on $ext_if from $internal_net to any -> ($ext_if)
# 6. 过滤 (filtering)anchor "com.apple/*"load anchor "com.apple" from "/etc/pf.anchors/com.apple"# 检查语法sudo pfctl -nf /etc/pf.conf
# 应用规则(使用-F清除旧规则)sudo pfctl -F all -f /etc/pf.conf
# 启用pfsudo pfctl -e