जैसा कि मैं इसे समझता हूं, उस टकराव brew
में कुछ भी नहीं डालता है /usr/local/bin
(जैसा नाम वैसा ही है) एक Apple निष्पादन योग्य वितरित करता है। इसलिए, /usr/local/bin
पहले रास्ते में होना /bin
और /usr/bin
कोई मुद्दा नहीं होना चाहिए, क्योंकि कोई नाम टकराव नहीं होना चाहिए। * हालांकि, नीचे दिए गए तरीके से और (MacPorts) जैसे अन्य पैकेज एग्रीगेटर के साथ ls
और tar
, और मुद्दों का उपयोग करके देखें।fink
port
Brew
दो चीजों में से एक है जो मुझे पता है कि नाम टकरावों को प्रबंधित करने में मदद करता है:
Brew
तहखाने में अनलकी केज छोड़ देता है। सामान स्थापित करने के लिए, काढ़ा उन उपकरणों को छोड़ देता है जहां वे हैं, और उन उपकरणों में प्रतीकात्मक लिंक बनाते हैं /usr/local/bin
। जिन उपकरणों के brew
साथ नाम का टकराव नहीं होता है, वे प्रतीकात्मक लिंक नहीं बनाते हैं।
- कई नहीं करता है, तो मानक उपकरण है, जिसमें भी कर रहे हैं के सभी
/bin
और /usr/bin
, brew
में लिंक उपसर्ग /usr/local/bin
एक "जी" के साथ है, तो उदाहरण के लिए, एक प्रदर्शन करने के लिए ls
एक काढ़ा संस्करण, उपयोग के साथ 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 को ठीक से नहीं संभालते हैं, वास्तव में, पिछली बार जब मैंने जाँच की थी (जो कि पिछले सप्ताह), वे थे ' t सब पर संभाला । यह एक बड़ी समस्या है, और इसे पूरी तरह से बचने के लिए, के साथ जुड़े 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
कोड।
बात यह है, यह वास्तव में उस पर निर्भर करता है जो आप चाहते हैं और उस समय की आवश्यकता है।
यहाँ एसीएल समस्या का एक उदाहरण है जिसका मैंने ऊपर उल्लेख किया है।
मानक 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
उपकरण नहीं मालूम होंगे , लेकिन जो किसी ACL
समस्या के कारण सड़क से 6 महीने नीचे कुछ तोड़ सकते हैं !