Чи можна встановити 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.
Skylar Saveland

1
Це приємне коригування. Вам дійсно слід подати запит на тягу до проекту домашньої заварки.
Девід Хольцер

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

Встановити домашню мову без судо .

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
Під «вищесказаним» ви маєте на увазі відповідь Астіка Ананда ? Це не завжди буде "вище" вашої відповіді. Якщо щось у їхній відповіді слід змінити, відредагуйте це самостійно.
некоматичний
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.