Могу ли я установить Homebrew без прав sudo?


26

Homebrew прекрасно позволяет устанавливать пакеты без прав sudo, но мне кажется, что мне нужны права администратора для установки самого Homebrew.

Я хотел бы установить Homebrew в среде Mac, где у меня нет прав sudo или admin. Это возможно?

Ответы:


12

Нет .. Если вы не сделаете значительную операцию.

Причина в том, что Homebrew настаивает на установке пакетов в /usr/local. На самом деле, даже если вы заставили его установить куда-то еще, вы, скорее всего, нарушите зависимости, когда будете использовать brew installдля установки пакетов. Большинство, если не все эти пакеты предварительно скомпилированы и связаны, ожидая, что они будут жить /usr/local.

Причиной такой настойчивости является то, что /usr/localименно там POSIX рекомендует устанавливать подобные вещи. Для создания /usr/localHomebrew необходимы временные учетные данные администратора, чтобы создать каталог и назначить владельца.

Это, в свою очередь, то, что позволяет вам устанавливать что-либо еще без повышения учетных данных.


Спасибо, но я думаю, что вы пропустили мой вопрос. Я знаю, как и где он устанавливает пакеты, но я хочу установить Homebrew без прав администратора или sudo.
BenjaminGolder

Я не пропустил твой вопрос. Ответ был "Нет" .. Я просто сказал "Да" случайно. Вы не можете легко сделать то, что вы просите, и даже если вы заставили его, отредактировав установщик Homebrew, поместить вещи в ветку вашего домашнего каталога, более чем вероятно, что много вариантов заваривается после установки.
Дэвид Хоэлзер

хорошо спасибо. Я был смущен предыдущим «Да».
BenjaminGolder

3
Это просто неправильно, или, по крайней мере, у вас определение «значительная операция» сильно отличается от моего. Я работаю brewс префиксом, установленным в моем домашнем каталоге, более 5 лет, и за это время я столкнулся с 1 или 2 сломанными пакетами.
Джеймс МакМэхон

Тем не менее, также есть и то, что трудно обойти: Ошибка: Вы не согласились с лицензией XCode. Пожалуйста, разрешите это, запустив: sudo xcodebuild -license accept
Альберт

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

3
Просто снова прошел процесс, и я просто хотел упомянуть, что вам также нужно создать usrкаталог в вашем домашнем каталоге, прежде чем скрипт запустится. Кроме того, при добавлении #{YOUR_HOME}к HOMEBREW_CACHEпеременной, вы, кажется , нужно изменить одиночные кавычки в двойные кавычки для того , чтобы работать. Так что есть несколько шагов, но это определенно стоит того, чтобы получить силу Homebrew.
golmschenk

Полагаю, что @golmschenk двойные кавычки необходимы для форматирования строки ruby.
Skylar Saveland

1
Это хорошая настройка. Вы действительно должны подать запрос на извлечение в проект домашнего варки.
Дэвид Хоэлзер

1
Я попытался сделать это с учетной записью без прав администратора в macOS Sierra (10.12.3), и она не сработала, потому что это нужно было сделать chgrp admin /usr/local, а учетная запись без прав администратора не является членом группы администраторов, поэтому она может: что-то изменить в этой группе. Было бы замечательно, если бы это работало для обычной учетной записи, не являющейся администратором (не только для учетных записей администратора, которые по какой-то странной причине были заблокированы из 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-репо, поэтому вышесказанное больше не работает.

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

1
Под «вышесказанным» вы подразумеваете ответ Астика Ананда ? Это не всегда будет «выше» вашего ответа. Если что-то в их ответе должно быть изменено, отредактируйте это самостоятельно.
некоматично
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.