Как вручную установить homebrew в подкаталог / usr / local?

630
brodybits

Инструкции по ручной установке в docs.brew.sh очень кратки и неудовлетворительны, что приводит к ошибкам, если я попробую их в подкаталоге /usr/localбез использования sudo. Направления в этом вопросе вместе с принятым ответом немного лучше, но также не работают без использования sudo.

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

Как мне вручную установить Homebrew в /usr/localподкаталог?

Мотивация для ручной установки информации /usr/localподкаталога:

  • Ручная установка дает мне лучший контроль над процессом установки и управления Homebrew.
  • Установка в подкаталог моего домашнего каталога не идеальна, поскольку Homebrew управляет комбинацией локально собранных пакетов и общесистемных пакетов.

Мотивация для избежания необходимости использования пользователем sudoпосле установки:

  • соответствие со стандартной установкой
  • проще управлять существующими пакетами Homebrew
  • меньший риск для безопасности, если сам пакет Homebrew или пакеты Homebrew не вынуждают пользователя запускать некоторые функции от имени пользователя root
0
Почему использование sudo является проблемой (возможно, стоит упомянуть в вопросе)? fixer1234 5 лет назад 1
@ fixer1234 это уточняется в вопросе. brodybits 5 лет назад 0
Назовите меня чокнутым, но почему бы не использовать [официальный метод установки, как показано здесь на официальном сайте Homebrew] (https://brew.sh): `/ usr / bin / ruby ​​-e" $ (curl -fsSL https: //raw.githubusercontent.com/Homebrew/install/master/install) "`. Я всегда делал это и никогда не использовал «sudo brew» по какой-либо причине. JakeGould 5 лет назад 1
Стандартная установка homebrew избавляет от необходимости использовать sudo после установки, и, хотя это правда, что вы не можете контролировать то, что происходит с «официальным» методом, все, что он делает, это создает подкаталоги в `/ usr / local` с пользователем как владелец (чтобы избежать sudo позже). Так что я не совсем понимаю мотивацию делать это вручную, когда все детали нужно делать правильно. dirkt 5 лет назад 0

1 ответ на вопрос

0
brodybits

ПРИМЕЧАНИЕ. В этом ответе предполагается, что пользователь macOS настроен как администратор.

ВАЖНО: не используйте без sudoкрайней необходимости, как описано ниже. Конечным результатом должна стать установка Homebrew, которую больше не нужно использовать sudo.

Сначала создайте временный каталог /usr/localс помощью sudo(введите пароль, если требуется):

sudo mkdir /usr/local/brewtmp1 

Проверьте результаты ls -l /usr/local:

total 0 drwxr-xr-x 2 root wheel 64 Jul 2 16:16 brewtmp1 

Исправьте владение пользователя и группы временным каталогом:

sudo chown $USER:admin brewtmp1 

Проверьте результаты еще ls -l /usr/localраз:

total 0 drwxr-xr-x 2 brodybits admin 64 Jul 2 16:16 brewtmp1 

Затем внутри временного каталога загрузите и распакуйте содержимое masterветки Homebrew / brew на GitHub без использованияsudo :

cd /usr/local/brewtmp1 curl -L https://github.com/Homebrew/brew/tarball/master | tar xz 

Проверьте результаты в ls -lтечение /usr/local/brewtmp1:

total 0 drwxr-xr-x 16 brodybits admin 512 Jul 2 14:46 Homebrew-brew-cbc3184 

Проверьте результаты 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 

Это должно показать содержимое Homebrew с правильными пользователем и группой.

Переименуйте Homebrew-brew-???????в homebrew (без использования sudo) (должно быть нормально использовать другое имя с адаптацией к другим шагам ниже):

mv Homebrew-brew-??????? homebrew 

и перепроверьте результаты ls -l:

total 0 drwxr-xr-x 16 brodybits admin 512 Jul 2 14:46 homebrew 

Переместите новый homebrewкаталог в нужное место, используя sudo:

sudo mv /usr/local/brewtmp1/homebrew /usr/local 

Перепроверьте результаты 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 

Добавьте следующую строку в файл профиля ( .profileили, .bash_profileпри необходимости) (как указано в этом ответе на другой вопрос ):

export PATH=/usr/local/homebrew/bin:$PATH 

Перезапустите оболочку, запустите новую оболочку или загрузите файл профиля. Проверьте, что 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 

Рекомендуется сделать 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) 

Попробуйте установить простую формулу, такую ​​как autoconf:

brew install autoconf 

autoconf --version теперь должен показать, что он установлен.

Чтобы отключить аналитику (благодаря этой статье необходимо сделать это после установки пакета):

brew analytics off 

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 

Теперь рекомендуется добавить некоторые, возможно, недостающие каталоги и исправить некоторые разрешения на каталоги в соответствии с результатами сценария установки 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 

И, наконец, очистка /usr/local/brewtmp1(использование sudo):

sudo rm -rf /usr/local/brewtmp1 

Дополнительное чтение и другие ресурсы:

Похожие вопросы