Zoals ik het begrijp, zet brew
niets in /usr/local/bin
dat botst (dezelfde naam heeft als) een door Apple gedistribueerd uitvoerbaar bestand. Daarom zou het hebben van /usr/local/bin
in het pad voor /bin
en /usr/bin
geen probleem moeten zijn, omdat er geen naamsconflicten zouden moeten zijn. *Zie echter de problemen met ls
en tar
, en het gebruik van andere package aggregators zoals fink
en port
(MacPorts), hieronder.
Brew
doet een van de twee dingen die ik ken die helpen bij het beheren van naamsconflicten:
Brew
laat ongelinkte vaatjes in de Kelder. Om dingen te installeren, laat brew de gereedschappen waar ze zijn, en maakt symbolische links naar die gereedschappen in /usr/local/bin
. Voor gereedschappen waar brew
geen naamsconflict mee wil, maakt het geen symbolische link.
- Voor veel, zo niet alle, standaardgereedschappen die ook in
/bin
en /usr/bin
zitten, plaatst brew
een “g” voor de link in /usr/local/bin
, dus om bijvoorbeeld een ls
uit te voeren met een brouwversie, gebruik gls
. Doe eenvoudig een ls -l
in /usr/local/bin
en zoek naar de gelinkte bestanden - dat zijn degene die brew
daar neerzet. Opmerking: De brew
geïnstalleerde gereedschappen die met hun echte naam benaderd moeten worden, staan in /usr/local/Cellar/coreutils/8.21/libexec/gnubin
.
Ik zet /usr/local/bin
niet in mijn pad om twee redenen - die redenen staan onderaan mijn antwoord.
Om de naambotsingen in je systeem te beoordelen, gebruik je brew doctor
en zoek je naar deze sectie - Hier is de uitvoer van brew doctor
van belang:
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
De reden waarom ik brew
‘s tools niet op de eerste plaats zet, in feite helemaal niet, is omdat de brew
geïnstalleerde ls
en tar
commando’s de bestandssysteem ACL niet goed afhandelen, in feite, de laatste keer dat ik controleerde (en dat was vorige week), werd er helemaal niet mee omgegaan. Dit is een GROOT probleem, en om het helemaal te vermijden, samen met het geassocieerde man
pagina configuratie probleem dat gepaard gaat met het juist instellen van de $PATH
, zorg ik ervoor dat ik de OSX
gerelateerde tools, vooral die in /bin
en /usr/bin
, eerst zet.
Een andere reden waarom ik /usr/local/bin
helemaal niet in mijn pad zet is omdat brew
niet goed samenwerkt met anderen, en fink
en port
(MacPorts) hebben op dit moment veel meer ondersteunde pakketten die ik NOW nodig heb. Ik kan bijvoorbeeld gnome-terminal
krijgen met fink
, maar het zou een grote moeite zijn om een formule te construeren en hetzelfde te doen met brew
. Dus, ik houd /sw
en /opt
in mijn zoek $PATH
(voor fink
en port
, respectievelijk) en verwijs naar dingen die ik nodig heb van /usr/local/bin
, inclusief gnat
, ofwel gespeld, of ik gebruik bash
alias
’s, of ik source een setup
bestand voor een geheel andere omgeving wanneer ik Ada
code schrijf.
Het ding is, het hangt echt af van wat je wilt en nodig hebt op het moment.
Hier is een voorbeeld van het ACL probleem dat ik hierboven noemde.
Met de standaard OSX
tools:
$ /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
en met de brew
geïnstalleerde tools:
$ /usr/local/bin/gls -le /var/root
/usr/local/bin/gls: invalid option -- 'e'
Try '/usr/local/bin/gls --help' for more information.
en
$ /usr/local/bin/gls --help | grep -i acl
Je zult vergelijkbare resultaten krijgen met tar
en ik ken niet veel andere brew
tools, maar wie kan het zich veroorloven om 6 maanden later iets kapot te laten gaan door een ACL
probleem!