ตามที่ฉันเข้าใจแล้ว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
ปัญหา!