1

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

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

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

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

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

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

  • соответствие со стандартной установкой
  • проще управлять существующими пакетами Homebrew
  • меньший риск для безопасности, если сам пакет Homebrew или пакеты Homebrew не вынуждают пользователя запускать некоторые функции от имени пользователя root

1 ответ1

0

ПРИМЕЧАНИЕ. В этом ответе предполагается, что пользователь 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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .