bro*_*its 3 shell command-line homebrew installation macos
docs.brew.sh 中的手动安装说明/usr/local非常简短且不能令人满意,如果我在不使用 的子目录中尝试它,则会导致一些错误sudo。这个问题中的方向及其接受的答案要好一些,但如果不使用 也无法工作sudo。
我知道我可能需要使用sudo来安装 Homebrew 本身,但希望我不需要继续使用sudo来安装新软件包、更新等(标准 Homebrew 安装脚本似乎使用,sudo但仅在绝对必要时使用,而标准结果是无需使用sudo来安装新包、更新等)
我应该如何手动将 Homebrew 安装到/usr/local子目录中?
手动安装 info/usr/local子目录的动机:
避免用户sudo安装后使用的动机:
注意:此答案假设 macOS 用户设置为管理员。请参阅重要说明:
重要提示:除非绝对必要,否则请勿使用,sudo如下所述。最终结果应该是不需要sudo再次使用的 Homebrew 安装。
截至 2021 年 6 月的推荐方法:
用于sudo创建一个子目录,例如opt可以安装 Homebrew 的子目录,并根据需要使用您自己的登录密码:
sudo mkdir /usr/local/opt
Run Code Online (Sandbox Code Playgroud)
sudo 只需再次执行 sudo即可获得该staff组下子目录的所有权,例如:
sudo chown brodybits:staff /usr/local/opt
Run Code Online (Sandbox Code Playgroud)
此时sudo应该不再需要安装或使用 Homebrew。
ls -al /usr/local现在应该显示新的子目录,例如:
total 0
drwxr-xr-x 5 root wheel 160 May 13 17:13 .
drwxr-xr-x@ 11 root wheel 352 Jan 1 2020 ..
-rw-r--r-- 1 root wheel 0 Oct 16 2018 .com.apple.installer.keep
drwxr-xr-x 4 root wheel 128 May 13 17:13 bak
drwxr-xr-x 2 brodybits staff 64 May 13 17:03 opt
Run Code Online (Sandbox Code Playgroud)
Homebrew/brew现在使用 Git从 GitHub克隆到新的子目录中,例如:
cd /usr/local/opt
git clone https://github.com/Homebrew/brew
ls -al /usr/local/opt # recommended
Run Code Online (Sandbox Code Playgroud)
brew可选:如果需要,可以重命名新安装的子目录。也可以选择将新的brew子目录移动到该/usr/local级别(sudo为此可能只需要再次移动)。
更新所需的配置文件($HOME/.zprofile例如$HOME/.zshenv,如果是 zsh)以将新的 Homebrewbin子目录添加到PATH环境变量中。这是一个例子:
export PATH=/usr/local/opt/brew/bin:$PATH
Run Code Online (Sandbox Code Playgroud)
(另请参阅此答案。)
重新启动 shell、启动新 shell 或获取配置文件。建议检查是否将which brew其显示在正确的位置, /usr/local/opt/brew/bin/brew。
此时,应该显示一些信息(此时brew --version尚未安装),例如:homebrew-core
Homebrew 3.1.7-36-g7c68b17
Homebrew/homebrew-core N/A
Run Code Online (Sandbox Code Playgroud)
然后运行brew update以包含homebrew-core并运行brew doctor以验证安装是否正确。它可能会输出一些有关非标准 Homebrew 前缀的警告消息,但这对于大多数软件包来说应该是一个问题。
brew --versionafterbrew doctor应显示homebrew-core包含,例如:
Homebrew 3.1.7-36-g7c68b17
Homebrew/homebrew-core (git revision 61cc59c956; last commit 2021-05-13)
Run Code Online (Sandbox Code Playgroud)
尝试安装一个简单的公式,例如autoconf:
brew install autoconf
Run Code Online (Sandbox Code Playgroud)
autoconf --version现在应该显示它已安装。
请参阅下文了解一些可选的后续步骤。
2018 年以来的过时解决方案不再测试或更新:
/usr/local首先在using中创建一个临时目录sudo(如果需要,请输入密码):
sudo mkdir /usr/local/brewtmp1
Run Code Online (Sandbox Code Playgroud)
检查以下结果ls -l /usr/local:
total 0
drwxr-xr-x 2 root wheel 64 Jul 2 16:16 brewtmp1
Run Code Online (Sandbox Code Playgroud)
修复临时目录的用户和组所有权:
sudo chown $USER:admin brewtmp1
Run Code Online (Sandbox Code Playgroud)
再次检查结果ls -l /usr/local:
total 0
drwxr-xr-x 2 brodybits admin 64 Jul 2 16:16 brewtmp1
Run Code Online (Sandbox Code Playgroud)
然后在临时目录中下载并解压GitHub 上 Homebrew/brewmaster分支的内容,而不使用: sudo
cd /usr/local/brewtmp1
curl -L https://github.com/Homebrew/brew/tarball/master | tar xz
Run Code Online (Sandbox Code Playgroud)
ls -l检查以下结果/usr/local/brewtmp1:
total 0
drwxr-xr-x 16 brodybits admin 512 Jul 2 14:46 Homebrew-brew-cbc3184
Run Code Online (Sandbox Code Playgroud)
检查以下结果ls -l Homebrew-brew-*:
total 48
-rw-r--r-- 1 brodybits admin 98 Jul 2 14:46 CHANGELOG.md
-rw-r--r-- 1 brodybits admin 3161 Jul 2 14:46 CODE_OF_CONDUCT.md
-rw-r--r-- 1 brodybits admin 720 Jul 2 14:46 CONTRIBUTING.md
-rw-r--r-- 1 brodybits admin 1334 Jul 2 14:46 LICENSE.txt
drwxr-xr-x 7 brodybits admin 224 Jul 2 14:46 Library
-rw-r--r-- 1 brodybits admin 7374 Jul 2 14:46 README.md
drwxr-xr-x 3 brodybits admin 96 Jul 2 14:46 bin
drwxr-xr-x 5 brodybits admin 160 Jul 2 14:46 completions
drwxr-xr-x 48 brodybits admin 1536 Jul 2 14:46 docs
drwxr-xr-x 5 brodybits admin 160 Jul 2 14:46 manpages
Run Code Online (Sandbox Code Playgroud)
这应该显示具有正确用户和组的 Homebrew 内容。
重命名Homebrew-brew-???????为homebrew (不使用sudo)(使用其他名称应该可以,并适应以下其他步骤):
mv Homebrew-brew-??????? homebrew
Run Code Online (Sandbox Code Playgroud)
并仔细检查以下结果ls -l:
total 0
drwxr-xr-x 16 brodybits admin 512 Jul 2 14:46 homebrew
Run Code Online (Sandbox Code Playgroud)
使用以下命令将新homebrew目录移动到正确的位置sudo:
sudo mv /usr/local/brewtmp1/homebrew /usr/local
Run Code Online (Sandbox Code Playgroud)
仔细检查以下结果ls -l /usr/local:
total 0
drwxr-xr-x 2 brodybits admin 64 Jul 2 16:20 brewtmp1
drwxr-xr-x 16 brodybits admin 512 Jul 2 14:46 homebrew
Run Code Online (Sandbox Code Playgroud)
将以下行添加到配置文件(.profile或.bash_profile适当的情况下)(按照另一个问题的答案的指示):
export PATH=/usr/local/homebrew/bin:$PATH
Run Code Online (Sandbox Code Playgroud)
重新启动 shell、启动新 shell 或获取配置文件。检查which brew显示/usr/local/homebrew/bin/brew. 检查是否brew --version有效(尽管没有homebrew-core安装),例如:
Homebrew >=1.4.0 (shallow or no git repository)
Homebrew/homebrew-core N/A
Run Code Online (Sandbox Code Playgroud)
建议brew doctor此时执行此操作,其中包括homebrew-core并验证安装是否正确。它可能会输出有关非标准 Homebrew 前缀的警告,但这对于大多数软件包来说应该是一个问题。然后brew --version应该显示homebrew-core包含:
Homebrew >=1.4.0 (shallow or no git repository)
Homebrew/homebrew-core (git revision 2f937; last commit 2018-07-02)
Run Code Online (Sandbox Code Playgroud)
尝试安装一个简单的公式,例如autoconf:
brew install autoconf
Run Code Online (Sandbox Code Playgroud)
autoconf --version现在应该显示它已安装。
ls -l /usr/local/homebrew现在应该看起来像这样:
total 48
-rw-r--r-- 1 brodybits admin 98 Jul 2 16:43 CHANGELOG.md
-rw-r--r-- 1 brodybits admin 3161 Jul 2 16:43 CODE_OF_CONDUCT.md
-rw-r--r-- 1 brodybits admin 720 Jul 2 16:43 CONTRIBUTING.md
drwxr-xr-x 3 brodybits admin 96 Jul 2 16:43 Cellar
-rw-r--r-- 1 brodybits admin 1334 Jul 2 16:43 LICENSE.txt
drwxr-xr-x 8 brodybits admin 256 Jul 2 16:43 Library
-rw-r--r-- 1 brodybits admin 7374 Jul 2 16:43 README.md
drwxr-xr-x 10 brodybits admin 320 Jul 2 16:43 bin
drwxr-xr-x 5 brodybits admin 160 Jul 2 16:43 completions
drwxr-xr-x 48 brodybits admin 1536 Jul 2 16:43 docs
drwxr-xr-x 3 brodybits admin 96 Jul 2 16:43 etc
drwxr-xr-x 5 brodybits admin 160 Jul 2 16:43 manpages
drwxr-xr-x 4 brodybits admin 128 Jul 2 16:43 opt
drwxr-xr-x 8 brodybits admin 256 Jul 2 16:43 share
drwxr-xr-x 3 brodybits admin 96 Jul 2 16:42 var
Run Code Online (Sandbox Code Playgroud)
现在建议添加一些可能丢失的目录并修复一些目录权限以匹配 Homebrew 安装脚本的结果(我希望brew doctor检查并提出处理这部分):
cd /usr/local/homebrew
mkdir -p include Caskroom Cellar lib opt share var
chmod g+w include Caskroom Cellar lib opt share var
Run Code Online (Sandbox Code Playgroud)
最后进行清理/usr/local/brewtmp1(使用sudo):
sudo rm -rf /usr/local/brewtmp1
Run Code Online (Sandbox Code Playgroud)
可选的后续步骤:
要禁用分析(感谢这篇文章,必须在安装软件包后完成):
brew analytics off
Run Code Online (Sandbox Code Playgroud)
您可以Homebrew/homebrew-cask-versions访问替代版本,例如每日版本和测试版,正如他们所记录的:
brew tap homebrew/cask-versions
Run Code Online (Sandbox Code Playgroud)
2018 年的其他阅读材料和其他资源: