Насколько я понимаю, brew
не помещает в /usr/local/bin
ничего, что могло бы противоречить (имеет то же имя, что и) распределенный исполняемый файл Apple. Следовательно, наличие /usr/local/bin
в пути до /bin
и /usr/bin
не должно быть проблемой, потому что не должно быть конфликтов имен. * Однако посмотрите на проблемы с ls
и tar
и другими агрегаторами пакетов, такими как fink
и port
(MacPorts), ниже.
Brew
делает одну из двух известных мне вещей, которые помогают управлять конфликтами имен:
Brew
оставленные несвязанными кеги в погребе. Для установки вещи brew оставляет инструменты там, где они есть, и создает символические ссылки на эти инструменты в /usr/local/bin
. Для инструментов, с которыми brew
не хочет столкновения имен, он не создает символическую ссылку.
- Для многих, если не для всех стандартных инструментов, которые также находятся в
/bin
и /usr/bin
, brew
префикс ссылки в /usr/local/bin
на "g", например, для выполнения ls
с версией brew , используйте gls
. Просто сделайте ls -l
в /usr/local/bin
и найдите связанные файлы - это те, которые brew
поместил туда. Примечание. Установленные на brew
инструменты, к которым должны обращаться их настоящие имена, находятся в /usr/local/Cellar/coreutils/8.21/libexec/gnubin
.
Я не помещаю /usr/local/bin
в мой путь по двум причинам - эти причины лежат в основе моего ответа.
Чтобы оценить конфликты имен в вашей системе, используйте brew doctor
и найдите этот раздел. Вот интересный вывод brew doctor
:
Warning: /usr/bin occurs before /usr/local/bin
This means that system-provided programs will be used instead of those
provided by Homebrew. The following tools exist at both paths:
ctags
emacs
emacsclient
etags
ex
git
git-cvsserver
git-receive-pack
git-shell
git-upload-archive
git-upload-pack
rview
rvim
view
vim
vimdiff
vimtutor
xxd
Consider setting your PATH so that /usr/local/bin
occurs before /usr/bin. Here is a one-liner:
echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile
Причина, по которой я не ставлю инструменты brew
на первое место, на самом деле совсем нет, заключается в том, что установленные brew
ls
и tar
не обрабатывают ACL файловой системы должным образом, фактически, в прошлый раз, когда я проверял (что было на прошлой неделе)они не были обработаны вообще. Это БОЛЬШАЯ проблема, и чтобы ее избежать, наряду со связанной с ней конфигурацией man
страницы, которая связана с установкой права $PATH
, я проверяю, что поставил инструменты, связанные с OSX
, особенно те, которые находятся в /bin
и /usr/bin
, первый.
Еще одна причина, по которой я даже не помещаю /usr/local/bin
в мой путь, заключается в том, что brew
плохо взаимодействует с другими, а fink
и port
(MacPorts) в настоящее время имеют гораздо больше поддерживаемых пакетов, которые мне нужны СЕЙЧАС. Например, я могу получить gnome-terminal
с помощью fink
, но было бы очень сложно создать формулу и сделать то же самое с brew
. Итак, я сохраняю /sw
и /opt
в моем поиске $PATH
(для fink
и port
соответственно) и ссылаюсь на вещи, которые мне нужны из /usr/local/bin
, включая gnat
, либо прописанные, либо я использую bash
alias
, или я создаю setup
файл для совершенно другой среды, когда пишу код Ada
.
Дело в том, что это действительно зависит от того, что вы хотите и нужно в данный момент.
Вот пример проблемы ACL, о которой я упоминал выше.
С помощью стандартных инструментов OSX
:
$ /bin/ls -le /var/root | head -7
total 24
drwx------+ 3 root wheel 102 May 28 2013 Desktop
0: group:everyone deny delete
1: user:_spotlight inherited allow list,search,readattr,readextattr,readsecurity,file_inherit,directory_inherit
drwx------+ 6 root wheel 204 Sep 19 14:22 Documents
0: group:everyone deny delete
1: user:_spotlight inherited allow list,search,readattr,readextattr,readsecurity,file_inherit,directory_inherit
а с brew
установлены инструменты:
$ /usr/local/bin/gls -le /var/root
/usr/local/bin/gls: invalid option -- 'e'
Try '/usr/local/bin/gls --help' for more information.
а также
$ /usr/local/bin/gls --help | grep -i acl
Вы получите аналогичные результаты с tar
и я не знаю много других инструментов для brew
, но кто может позволить себе что-то сломать через 6 месяцев из-за проблемы с ACL
!