让Mac也能拥有apt-get类似的功能——Brew

本文详细介绍了使用Homebrew时遇到的无法写入/usr/local/Cellar目录的错误解决方法,并提供了MaxHowell官方卸载脚本的链接。

http://snowolf.iteye.com/blog/774312


使用时可能遇到的问题:

如:

$ brew install wget

Error: Cannot write to /usr/local/Cellar

解决办法是:

sudo chown -R $USER /usr/local


默认情况下,brew会把下载的工具包安装到 /usr/local 目录,

而这个目录的默认所有者是root帐户,你当前所用的帐户是没有权限往root拥有的目录写入的。所以报错。

每次在brew前加sudo是解决方案之一,但绝不推荐。因为这样做相当于给了brew无限的权限——通过它安装的软件将可以任意修改你的系统目录,

这是非常危险的!


卸载homebrew:

Max Howell官方卸载脚本:https://gist.github.com/mxcl/1173223


<think> 我们正在讨论macOS系统与原生Linux包管理器(如apt)的区别。根据用户需求,我们需要参考之前提供的引用内容,并结合知识库中的信息进行回答。 从引用[1]中我们知道:APT是Debian及其衍生版(如Ubuntu)的包管理器,用于处理.deb格式的软件包。它提供了软件包的安装、升级、卸载等功能,并且可以自动解决依赖关系。 引用[2]提到文件系统差异:Linux和macOS都是使用POSIX权限模型(rwx),但macOS默认文件系统(APFS)是大小写不敏感的,而Linux通常是大小写敏感的。这也可能影响软件包的管理。 引用[3]和[4]并没有直接提供关于macOS包管理器和apt区别的信息,但我们可以结合已知知识进行回答。 关键点: 1. macOS本身没有内置类似apt的包管理器。macOS传统的软件安装方式是通过App Store或下载dmg/pkg文件安装。 2. 但是,macOS有第三方包管理器Homebrew,它提供了类似apt功能(安装、升级、卸载,依赖解决)。 3. 系统架构和包格式不同:apt管理的是.deb包,而Homebrew通常从源码编译或使用预编译的二进制包(称为bottle),不依赖于特定的包格式。 4. 权限管理:macOS和Linux虽然都是类Unix系统,但在权限管理上存在差异(如macOS有SIP系统完整性保护),这可能会影响软件安装的位置和方式。 因此,我们可以从以下几个方面来比较: 一、包管理器的性质 - apt:是Debian/Ubuntu等Linux发行版的官方包管理器,系统内置。 - macOS:没有官方内置的类似apt的工具,但有替代方案(HomebrewMacPorts等)。 二、软件包格式与依赖解决 - apt使用.deb包,内部包含预编译的二进制文件、配置文件和元数据(如依赖关系)。安装时自动解决依赖。 - Homebrew使用“Formula”(描述如何编译软件的Ruby脚本)或预编译的二进制包(bottle)。依赖关系通过Formula定义,自动解决。 三、安装位置和权限 - apt:安装到系统目录(如/usr/bin, /usr/lib),需要root权限(使用sudo)。 - Homebrew:默认安装到/usr/local(在Intel Mac上)或/opt/homebrew(在Apple Silicon Mac上),不需要root权限(用户可读写)。 四、软件更新机制 - apt:通过`apt update`更新软件源索引,`apt upgrade`升级所有软件包。 - Homebrew:通过`brew update`更新Formula,`brew upgrade`升级所有软件包。 五、软件生态 - apt:提供大量经过发行版测试的软件包,稳定性较高。 - Homebrew:提供丰富的开源软件,但部分软件可能不如Linux发行版仓库中的稳定。 六、与系统的集成 - apt:深度集成于Linux发行版中,是系统更新和软件管理的主要工具。 - Homebrew:独立于macOS系统,不会干扰系统自带软件(如Python,Ruby等),但需要用户自行安装。 七、安全机制差异 - macOS:有SIP(System Integrity Protection)保护系统目录,禁止修改系统核心区域(如/System, /bin, /usr/bin等),因此第三方包管理器不能写入这些位置。 - Linux:通常没有类似SIP的保护(尽管有SELinux等安全模块),所以apt可以直接安装到系统目录。 根据以上分析,我们可以组织回答。 </think> ### macOS系统与原生Linux包管理器(如APT)的核心区别 #### 1. **设计架构差异** - **APT**:专为Debian-based Linux系统设计,管理`.deb`格式软件包,深度集成于Linux内核。通过命令行工具(`apt-get`, `apt-cache`)自动解决依赖关系并管理系统级软件包[^1]。 - **macOS**:原生无类似APT的包管理器。采用混合机制: - 图形化安装:App Store(沙盒化应用)、`.dmg`/`.pkg`安装包 - 命令行方案:需额外安装**Homebrew**(第三方工具),管理自定义Formula而非标准包格式 #### 2. **文件系统与权限模型** | 特性 | macOS系统 | Linux(APT环境) | |---------------------|--------------------------|-------------------------| | **文件系统** | APFS/HFS+(默认大小写不敏感) | ext4/XFS(大小写敏感) | | **权限模型** | POSIX权限 + SIP保护 | POSIX权限(rwx) | | **安装路径** | `/Applications`(用户)<br>`/usr/local`(Homebrew) | `/usr/bin`(系统级) | | **依赖解析** | 需手动处理或依赖Homebrew | 自动解决依赖链 | macOS的**SIP(System Integrity Protection)** 限制对系统目录(如`/usr/bin`)的写入,而Linux中APT可直接修改系统路径[^2]。 #### 3. **软件包管理机制对比** - **APT工作流程**: ```bash apt update # 更新软件源索引 apt install python # 自动下载.deb包并解析依赖 apt upgrade # 批量更新所有软件 ``` - **macOS原生方案**: - `.pkg`安装包:图形化向导,但无依赖管理能力 - **Homebrew替代方案**: ```bash brew update # 更新Formula索引(非官方源) brew install python # 从源码编译或下载预编译包 brew upgrade # 更新指定软件 ``` #### 4. **依赖与生态差异** - **Linux/APT**: - 集中式官方仓库(如Ubuntu的`main/universe`) - 严格签名验证(GPG密钥) - **macOS**: - 碎片化依赖:Python/Ruby等需单独管理版本(如`pyenv`) - Homebrew依赖开源社区维护的Formula(潜在兼容性问题) - 商业软件依赖独立安装程序(如Adobe Creative Cloud) #### 5. **安全模型对比** - **APT**:通过`sudo`提权安装系统级软件,依赖包签名验证 - **macOS**: - 图形安装包需公证(Notarization) - Homebrew默认以普通用户权限安装到`/usr/local`,避开SIP限制 - 应用沙盒机制(App Store应用强制启用) > **关键结论**:APT是Linux生态的核心组件,提供自动化、系统级的包管理;macOS则采用分层的混合策略——图形安装满足普通用户,开发者需依赖Homebrew填补命令行管理的空白[^1][^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值