ตามที่ฉันเข้าใจแล้วbrewอย่าวางสิ่งใดในสิ่ง/usr/local/binที่ชนกัน (มีชื่อเดียวกับ) Apple แจกจ่ายไฟล์ปฏิบัติการได้ ดังนั้นการมี/usr/local/binเส้นทางก่อน/binและ/usr/binไม่ควรเป็นปัญหาเพราะไม่ควรมีการชนกันของชื่อ * อย่างไรก็ตามดูปัญหาเกี่ยวกับlsและtarและการใช้ตัวรวบรวมแพ็กเกจอื่นเช่นfinkและport(MacPorts) วิธีด้านล่าง
Brew ทำหนึ่งในสองสิ่งที่ฉันรู้ว่าจะช่วยจัดการการชนชื่อ:
Brewทิ้งถังที่ไม่ได้เชื่อมโยงไว้ในห้องใต้ดิน ในการติดตั้งสิ่งของชงออกจากเครื่องมือที่พวกเขาอยู่และสร้างการเชื่อมโยงสัญลักษณ์ไปยังเครื่องมือเหล่านั้น/usr/local/binมา สำหรับเครื่องมือที่brewไม่ต้องการให้มีการชนชื่อก็ไม่ได้สร้างลิงก์สัญลักษณ์
- สำหรับหลาย ๆ คนถ้าไม่ทั้งหมดของเครื่องมือมาตรฐานซึ่งยังอยู่ใน
/binและ/usr/bin, brewนำหน้าการเชื่อมโยงใน/usr/local/binด้วย "g" ดังนั้นสำหรับตัวอย่างเช่นการดำเนินการกับรุ่นชงใช้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's หรือฉันแหล่ง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ปัญหา!