macOS 开发环境搭建的系列问题

305 天前
 ac169

平常都是使用 Windows 和 Linux, 现需要开发一个移动端 APP ,为了方便 Android 和 IOS 同时开发,决定在 macOS 上搭建开发环境,目前操作系统版本:macOS Catalina 10.15.7,刚接触 macOS 并且能又是做开发使用,所以有很多问题不解,希望大家指教!

虽然 APP 和 PKG 包都有默认安装路径,那么其他形式的二进制包放到什么目录比较规范?目前比较多的就是放到用户主目录下的某个位置,但这样放其他用户使用上不太方便有的还有权限问题且感觉很恼火;如果是放到根目录下的 Library 目录又有权限问题,比如:Android SDK 如果你不开写权限那么更新操作又有问题,如果开了,系统加环境变量后又提示这个目录有隐患。

  • APP 包都说直接移到废纸篓就可以了,但有没有文件残余问题,如何清理?
  • PKG 包如何卸载?系统好像有一个 pkgutil 命令行的工具但是好像没有完整的卸载功能,需要通过其他 APP 或者脚本来实现,感觉很恼火!

目前常见的都是将变量写入 ~/.zsrc 或 ~/.bashrc 文件的形式配置用户级环境变量的方法,有方法能配置系统级(所有用户都生效的)环境变量吗?有方法说将变量写入 /etc/profile 或 /etc/path 文件,但文件有保护无法写入。

  • 即使通过环境变量配置了国内源镜像 brew ,但是安装过程中还是有很多跳转到 github.com 造成安装失败,如果这个时候使用代理国内源又无法使用,这个问题如何破?
  • brew 感觉一味的安装新版本,不能针对系统版本来安装相应的版本(比如:brew install ruby 目前安装是最新 1.17.0 ,而这个版本 10.15.x 已经不支持),而指定版本方法又非常曲折(到 github 下载相应版本 rb 文件来安装)。当然对于新系统可能不存在问题但对于版本老一点的系统就是问题了,本身 brew 下载就慢结果搞半天还是错的,恼火!
3340 次点击
所在节点    macOS
40 条回复
pc10300
305 天前
1 、系统版本:其实 10.15 已经很老了,后面经历了 11 ,12 ,13 三个大版本。
2 、安装路径问题:App 就放在/Applications 这个文件夹就好了。
3 、应该是没有,可以用一些第三方工具清理卸载残留或者在网上找命令删除残留,推荐找一些免费的清理工具。
4 、环境变量这个没有太了解过,因为我一般只用一个用户,在 linux 上面一般会直接用 root 。
5 、homebrew 的问题: 我没记错 brew 是支持安装指定版本的,不需要去 github 下载吧。
最后,有个小疑问:干这行的上 github 还会很困难吗。
pc10300
305 天前
@pc10300 我也是小白,如果有误导,希望大佬可以帮我指正
deplivesb
305 天前
1. 2023 年了就别用 Catalina 了太老了
2. /usr/local/bin?
3. 卸载一直就是移到废纸篓就行,实在不放心,下个 appcleaner ,pkg 的可以用 UninstallPKG
4./etc
deplivesb
305 天前
@deplivesb /etc profile 可以强制保存啊
5. brew 可以安装旧版本
ac169
305 天前
1. 现有系统小版本都特别标注的, 一般来讲都是有原因的, 比如 机器性能 版本一致性等考量!

2. 这里重点是指 Android SDK 这种语言或者是平台开发环境, 所以个人觉得不适合 放在/Applications 或者 /usr/local/bin 这样的目录. 个人想过放在 /opt 这样的目录.

3. 可能是前面描述有问题, 这里想表达的意思不是能不能找到相关的卸载 APP 和脚本, 我是想说的是官方这种单向 pkg 管理方式很不友好( low ), 至少其他两家系统没有这样操作.

5. brew 不是不能安装旧版本, 而是默认都是安装新版本, 要安装指定版本很曲折或者说有很多前提, 比如: 如果 要使用 brew install 安装旧版本, 比如是要官方源有, 实时上很多软件官方源只有一个新版本, 没有 ***@*.*.* 这样的版本. 这个时候只能去找老版本或字定义 rb 文件来安装 ( 最后我就是采用的这种方式安装成功的 )



@pc10300
5. 上 github 问题不大, 问题是: 代理直接访问不一定能保证稳定, 特别是那种安装包大或依赖的包很多的情况, 一旦断了就重来. 如果使用国内源切换, 但是有的包(估计是镜像中没有)最后又访问了 github, 这个时候就又回到了原点! 你设置代理吧, 国内源很多时候拒绝代理访问.


@deplivesb
4. 至少在我用的这个系统版本上无法强制保存,哪怕是用 sudo 来编辑. 最后提示 *** read only ***, 据说是 SIP 的问题!
paopaosa
305 天前
请用 Monterey 以上的版本。
ShadowPower
305 天前
背景介绍:
1. 做 iOS 开发应该保持最新的稳定版,因为 Xcode 和系统版本绑死,旧版 macOS 只能用旧版 Xcode ,用旧版 Xcode 编译的应用不能上架

安装路径:
2. 其实 macOS 的多用户有 bug ,不需要考虑多用户使用的情况

卸载问题:
3. 卸载有残留,软件的配置和用户数据都不会在软件包目录下。因为升级的时候会完整替换整个文件夹,为了避免丢失配置和数据,没有软件会做成数据跟 APP 包一起,拖进废纸篓就删干净。可以用 http://freemacsoft.net/appcleaner/ 这款软件,卸载时能顺便删除一些常见路径下的文件

4. 除非软件自己实现了卸载,否则 PKG 包没有卸载方式。直接谷歌搜索“软件名 uninstall”,根据搜到的资料手动删除文件

环境变量:
5. macOS 没有全局环境变量

包管理器:
6. 无解,我觉得 homebrew 只能凑合用,比没有包管理器好。不能奢求好用
YsHaNg
305 天前
卸载清理可以 homebrew cask zap
Xusually
305 天前
这系统太旧了 没办法用新版 xcode ,做 ios 这块有问题
cnhongwei
305 天前
1. catalina 有点旧,看看能安装新版的 xcode 不,appstore 上架对 xcode 有版本要求
2. 使用默认安装路径就好了。
3. 使用 brew 安装的东西,使用 --zap 参数卸载能清理文件残余,如果是其它方式安装的,只能使用清理工具或手工清理。一般都是把文件放 home 的 Library 或 home 的.xxx 目录中。有一些软件会安装一些文件到系统目录,这个就不好清理了,所以最好使用 brew 安装。
4. 你系统不使用多用户,没有必要放到系统环境中。如果要放,使用 sudo vi 来修改
5. 有其它的包管理,但我没有用过,感觉 brew 对我来说够用了。不能访问 github 是比较麻烦一些,所以最好搞好自己的网络,反正我现在使用 baidu 的话,感觉就不会编程了。brew 安装旧版本,如果是 java 之类的软件,有 java8 java17 之类的包,如果是其它一些没有这样分版本的软件,使用 versons tap 看看,大部分对版本要求严格的软件都有旧版本。
loveumozart
305 天前
ios 开发肯定用不了 catalina 的啦,版本太旧新版本模拟器都跑不了
luvmhx
304 天前
@pc10300 在 linux 上到处用 root......愿主保佑你,阿门
murmur
304 天前
我也吐槽过 brew 的问题,基本上 brew 装玩 pod 剩下的就跟他没关了,体验还得看梯子
2NUT
304 天前
软件卸载功能是缺失的,因为 苹果 假定你的主要 app 来源是官方应用商店
iamqk
304 天前
iOS 开发需要用比较新的 Xcode ,xcode 又需要用比较新的 macOS
具体需要哪个 xcode 版本请参照 iOS 开发指南
具体 xcode 需要哪个 macOS 版本请参照 Xcode 的 release note
pc10300
304 天前
@luvmhx 反正都是自己玩的,也不会在生产环境用
8355
304 天前
我们都用 Ventura 都用 Monterey 你用 Catalina 可能没资格来用 brew 喔
2NUT
304 天前
@8355 虽然是梗,但确是真的,brew 好像只支持最近几个大版本
2NUT
304 天前
@murmur macos 需要更好的 软件包管理
kingzeus
304 天前
2 ,安装路径:苹果推荐的是 app 包,存放在/Applicaions 下,其他的可以参考 Linux
3 ,卸载:一般是删了 app 就可以了,还是不放心的装几个安装管理的应用就好了
4 ,环境变量:使用 app 的话,一般不需要处理这个,其他的话,参考 Linux
5 ,Homebrw:支持各种版本安装,大部分软件的版本都很全,文档很详细,仔细阅读下就可以了

另外的建议:
1. 开发应用,可以照着苹果的文档走,几乎全部的需求苹果都考虑到了
2. 如果想自己折腾的话,可以参考 Linux 开发
3. 仔细阅读文档能解决大部分的问题,以及足够新手上路
4. 作为程序员,善用搜索引擎和 chtgpt

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/956245

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX