วิธีแก้ไขข้อผิดพลาดการอนุญาตบน OS X Lion หลังจากติดตั้ง Homebrew


9

ฉันเพิ่งอัพเกรดจาก Snow Leopard เป็น Lion และฉันกำลังพยายามติดตั้ง Homebrew อย่างไรก็ตามหลังจากการติดตั้งฉันรันbrew doctorตามคำแนะนำในการติดตั้งและดูชุดข้อผิดพลาดที่ระบุว่าไดเร็กทอรี / usr / local ไม่สามารถเขียนได้ ตัวอย่างเช่น:

Error: /usr/local/share isn't writable.
This can happen if you "sudo make install" software that isn't managed
by Homebrew.

If a brew tries to write a file to this directory, the install will
fail during the link step.

You should probably `chown` /usr/local/share

ฉันได้รับเหล่านี้สำหรับไดเรกทอรี:

You should probably `chown` /usr/local/include

You should probably `chown` /usr/local/share

You should probably `chown` /usr/local/share/man

ฉันไม่สามารถหาสาเหตุที่ทำให้เกิดข้อผิดพลาดนี้ได้เนื่องจากปรากฏว่าฉันเป็นส่วนหนึ่งของกลุ่ม Unix ที่มีสิทธิ์ในการเขียนไปยังไดเรกทอรีเหล่านี้:

Mini:~ felciano$ ls -ld /usr/local/share
drwxrwxr-x  4 root  admin  136 May 13 15:53 /usr/local/share
Mini:~ felciano$ whoami
felciano
Mini:~ felciano$ dscl . -read /Groups/admin GroupMembership
GroupMembership: root felciano
Mini:~ felciano$

ฉันพลาดอะไรไป


ทำไมคุณไม่ "chown" ไดเรกทอรีเหล่านี้เป็นชื่อผู้ใช้ของคุณตามที่แนะนำ? พวกเขาไม่ควรเป็นของ "รูท" สำหรับผู้ใช้หลายคนคุณสามารถเปลี่ยนการอนุญาตกลุ่ม: apple.stackexchange.com/q/42127/14994
iolsmit

@ olsmit: ฉันมีปัญหาเดียวกันแน่นอน อย่างไรก็ตามฉันไม่เห็นสาเหตุที่/usr/localควรเป็นของฉันแทนเมื่อเครื่องนี้มีผู้ใช้หลายคน นอกจากนี้ยังเป็นไปได้สำหรับฉันที่จะเขียนถึงสถานที่ที่brew doctorกำลังบ่นเกี่ยวกับ ความคิดอื่น ๆ ?
mgd

คำตอบ:


7

แก้ไข:ปัญหาได้รับการแก้ไขใน Homebrew:

หากคุณยังคงประสบปัญหาอยู่ให้อัปเดต Homebrew ดังนี้:

brew update

หากคุณต้องการทราบว่าปัญหาคืออะไรฉันได้เก็บคำตอบดั้งเดิมไว้ด้านล่าง


ไม่สนใจปัญหา permisson ในตอนนี้

ฉันกำลังประสบปัญหาเดียวกันแน่นอนและในความเห็นของฉันมีปัญหาbrew doctorมากกว่าในการติดตั้งของคุณและของฉัน

/usr/localฉันคิดว่าคุณควรละเลยปัญหาแทนที่จะเปลี่ยนกรรมสิทธิ์ของ หรือคุณสามารถแก้ไขbrew doctorสคริปต์ในเครื่องของคุณจนกว่าจะมีการแก้ไข ดูด้านล่าง

ฉันไม่คิดว่ามันถูกต้องที่จะ/usr/localเป็นเจ้าของโดยผู้ใช้ที่เฉพาะเจาะจง ฉันมีผู้ดูแลระบบมากกว่าหนึ่งคนในเครื่องนี้ คุณควรปล่อยให้/usr/localเจ้าของroot:adminเป็นเจ้าของและกลุ่ม

การสอบสวนของฉัน

เช่นเดียวกับคุณฉันมี/usr/localที่เขียนได้อย่างสมบูรณ์แบบโดยผู้ใช้ของฉันซึ่งเป็นสมาชิกของadminกลุ่ม:

$ ls -ld /usr/local/
drwxrwxr-x  14 root  admin  476 22 Jun 23:33 /usr/local/
$ whoami
mgd
$ dscl . -read /Groups/admin GroupMembership
GroupMembership: root mgd rgd

ลองทดสอบว่า dir เขียนได้จริง :

$ ls -l /usr/local/newfile
ls: /usr/local/newfile: No such file or directory
$ touch /usr/local/newfile
$ ls -l /usr/local/newfile
-rw-r--r--  1 mgd  admin  0 23 Jun 14:52 /usr/local/newfile

การตรวจสอบเพิ่มเติมในbrew doctorโค้ดทำให้ฉันสรุปได้ว่าการใช้ฟังก์ชัน ruby Pathname.writable?ทำให้เกิดปัญหา พิจารณาเซสชันทับทิมแบบโต้ตอบนี้:

$ irb
>> require 'pathname'
=> true
>> Pathname('/usr/local').writable?
=> false

ฟังก์ชั่นPathname.writable?บอกว่า/usr/localไม่สามารถเขียนได้แม้ว่าเราจะรู้ว่ามันเป็น

การใช้Pathname.writable_real?แทนจะให้ผลลัพธ์ที่ถูกต้อง - มันบอกว่า dir เขียนได้:

>> Pathname('/usr/local').writable_real?
=> true

/usr/local/Library/Homebrew/cmd/doctor.rbนี้ควรได้รับการแก้ไขใน คุณสามารถแก้ไขได้ในการติดตั้งของคุณเองในขณะที่รอการแก้ไข

ความแตกต่างระหว่างทั้งสองฟังก์ชั่นคือ (ตามเอกสารทับทิมที่นี่และที่นี่ ):

เขียนได้? (file_name) →จริงหรือเท็จ:คืนค่าจริงถ้าไฟล์ที่ระบุชื่อสามารถเขียนได้โดย id ผู้ใช้ที่มีประสิทธิภาพของกระบวนการนี้

writable_real? (file_name) →จริงหรือเท็จ:คืนค่าจริงถ้าไฟล์ที่ระบุชื่อสามารถเขียนได้โดย ID ผู้ใช้จริงของกระบวนการนี้


ยกนิ้วให้ mgd ของการสอบสวนและการชี้แจง ... มันเป็นจุดที่! ดูเหมือนว่าปัญหาที่คล้ายกันได้ถูกหยิบยกขึ้นมาใน github.com เมื่อประมาณหนึ่งปีที่ผ่านมา แต่ไม่เคยได้รับการแก้ไข(อย่างถูกต้องหรือไม่)อย่างน้อยก็ไม่ได้ใช้writable_real?... บางทีอาจถึงเวลาสำหรับการร้องขอการดึง?! :-)
pvandenberk


0

ฉันเชื่อว่าคุณแค่ต้องการสิ่งนี้:

brew update

จากนั้นลองbrew doctorอีกครั้ง

คุณอาจยังได้รับข้อผิดพลาดเกี่ยวกับการอ้างอิงใด ๆ ที่คุณไม่ได้ใช้ (Java ในกรณีของฉัน) ซึ่งก็โอเค หากคุณมีเครื่องมือบรรทัดคำสั่งสำหรับ Xcode ติดตั้งแทนการติดตั้ง Xcode แบบเต็มคุณจะได้รับข้อความแสดงข้อผิดพลาดบอกว่าคุณมีเส้นทางที่ไม่ถูกต้อง แต่ในข้อความคุณจะอ่านว่าไม่มีเส้นทางที่ถูกต้องหากคุณ เพียงใช้เครื่องมือบรรทัดคำสั่งสำหรับ Xcode ก็ไม่เป็นไร

เพื่อประโยชน์ของผู้อื่น: โปรดจำไว้ว่าคุณต้องเข้าสู่ระบบในฐานะผู้ดูแลเมื่อทำเช่นนี้เพื่อให้ทำงานได้


0

ผมทำตามข้อเสนอแนะของการรวมกันของ iolsmit และฟิลเอ็มของฉัน chowned ไดเรกทอรีเหล่านี้จะแสดงชื่อของฉันแล้ววิ่งตามอีกครั้งโดยbrew update brew doctorนี่เป็นการกำจัดข้อความแสดงข้อผิดพลาดทั้งหมดและการติดตั้งชงในขณะนี้ดูเหมือนจะทำงานได้ดี ขอบคุณทั้งคู่!


0

ยกนิ้วให้กับการสอบสวนและการชี้แจงของ @ mgd ... มันเป็นจุดเริ่มต้น!

ดูเหมือนว่าปัญหาที่คล้ายกันได้ถูกหยิบยกขึ้นมาใน github.com เมื่อประมาณหนึ่งปีที่ผ่านมา แต่ไม่เคยได้รับการแก้ไข(อย่างถูกต้องหรือไม่)อย่างน้อยก็ไม่ได้ใช้writable_real?... บางทีอาจถึงเวลาสำหรับการร้องขอการดึง?! :-)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.