我可以在没有sudo特权的情况下安装Homebrew吗?


26

Homebrew很好地允许没有sudo特权的软件包安装,但是似乎我需要管理员特权才能安装Homebrew本身。

我想在没有sudo或admin特权的Mac环境中安装Homebrew。这可能吗?

Answers:


12

否。除非您进行大量手术。

原因是Homebrew坚决要求将软件包安装到/usr/local。实际上,即使您强迫它安装在其他地方,使用brew install软件包安装时也可能会破坏依赖关系。这些软件包中的大多数(如果不是全部的话)大多数都是预编译和链接的,期望可以使用/usr/local

这种坚持的原因/usr/local正是POSIX建议安装此类东西的地方。为了创建/usr/localHomebrew,需要临时的管理员凭据来创建目录并分配所有权。

反过来,这又使您可以在不提升凭证的情况下安装其他任何产品。


谢谢,但是我想你错过了我的问题。我知道如何在何处安装软件包,但是我想在没有admin或sudo的情况下安装Homebrew
BenjaminGolder

我没有错过你的问题。答案是“否”。.我只是不小心说了“是”。您无法轻松地执行所要执行的操作,即使您通过编辑Homebrew安装程序将其放入主目录的分支中来强制执行该操作,也很可能在安装后失败。
David Hoelzer

好的谢谢。之前的“是”让我感到困惑。
BenjaminGolder

3
这是错误的,或者至少您对“重大手术”的定义与我的定义有很大不同。我已经brew使用设置为我的主目录的前缀运行了5年多了,那段时间我遇到了1或2个损坏的软件包。
James McMahon

但是,这也很难解决:错误:您尚未同意Xcode许可证。请通过运行以下命令解决此问题:sudo xcodebuild -license accept
Albert

17

是。

我修改了安装脚本,使其不使用sudo并使用您选择的目录。https://gist.github.com/skyl/36563a5be809e54dc139

下载该文件,并YOUR_HOME在脚本中设置为绝对路径。chmod +x剧本。创建YOUR_HOME/usr/local目录。然后,执行脚本。

./install.rb

在中.bash_profile,我设置了(我很肯定这很重要,很确定):

export HOMEBREW_PREFIX=/The/path/to/YOUR_HOME/usr/local

现在我能:

brew install wget

确保bin目录YOUR_HOME+ /usr/local/bin在您的上$PATH

which wget

1
在安装脚本中,我还#{YOUR_HOME}必须在HOMEBREW_CACHE变量中添加前缀。也就是说,因为已经有自制程序安装的系统管理员,我不得不添加export PATH=/path/to/home/usr/local/bin:$PATH.bash_profile为好。但是,尽管如此,它看起来仍然很棒。
golmschenk 2015年

3
只是再次经历了这个过程,我只想提一提usr,在脚本运行之前,您还必须在主目录中建立一个目录。此外,当您添加#{YOUR_HOME}HOMEBREW_CACHE变量时,似乎需要将单引号更改为双引号以使其起作用。因此,有一些步骤,但是绝对有必要获得Homebrew的力量。
golmschenk

我相信,@ golmschenk必须使用双引号将ruby的字符串格式插入。
Skylar Saveland

1
这是一个不错的调整。您确实应该向本地酿造项目提交拉取请求。
David Hoelzer,2015年

1
我从macOS Sierra(10.12.3)上的非管理员帐户尝试了此操作,但由于它需要执行,因此无法正常工作chgrp admin /usr/local,并且非管理员帐户不是admin组的成员,因此可以不能更改该组的任何内容。如果可以使它对普通的非管理员帐户有效(这不仅适用于出于某些奇怪原因而被sudo锁定的管理员帐户),那将是很棒的。
Spiff

0

是。

冲煮系统似乎可引导

#!/bin/bash
set -ex

export HOMEBREW_PREFIX=~/homebrew
# export HOMEBREW_NO_ANALYTICS=1
mkdir -p "${HOMEBREW_PREFIX}"
curl -fsSLk https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C "${HOMEBREW_PREFIX}"

ls -laR "${HOMEBREW_PREFIX}"

export PATH="${HOMEBREW_PREFIX}/bin:${PATH}"
type -a brew

type -a openssl || :
openssl version -a || :

type -a curl || :
curl -V || :

# Fails to lock a .git/config file.
##brew analytics off

# No "brew update" until installing the proper openssl and a curl that uses it.
# brew update

# brew remove openssl || :
brew install openssl
brew link --force openssl

# brew remove curl || :
brew install --with-openssl curl
brew link --force curl || :
curl -V

ls -la "${HOMEBREW_PREFIX}/opt"
ls -la "${HOMEBREW_PREFIX}/bin"
ls -laLR "${HOMEBREW_PREFIX}/opt/curl/"

0

要安装没有sudo的自制软件

git clone https://github.com/mxcl/homebrew.git
echo 'export PATH="/path/to/cloned_folder/homebrew/bin:$PATH"' >> ~/.bash_profile

重新启动终端并运行

brew --version

0

Brew移动了他们的git repo,这就是上面的方法不再起作用的原因。

git clone git@github.com:Homebrew/brew.git
echo 'export PATH="/path/to/cloned_folder/homebrew/bin:$PATH"' >> ~/.bash_profile

1
“以上”是指阿斯蒂克·阿南德(Astik Anand)的答案吗?答案不一定总是在答案之上。如果答案中的某些内容需要更改,请自己编辑。
nekomatic
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.