สร้างไฟล์ใน `/ usr / local` สามารถเขียนได้สำหรับโฮมบรูว์


35

ฉันพยายามทำให้ homebrew ทำงานได้ดี แต่ดูเหมือนว่าทุกอย่างภายใน/usr/localไม่สามารถเขียนได้และทุกอย่างก็ตกลงไป

มันบอกให้ฉันวนซ้ำchown /usr/localและฉันก็ลองมัน การดำเนินการถูกปฏิเสธดังนั้นฉันจึงทำอย่างนั้น ดูเหมือนว่าจะทำงานได้ แต่ด้วยความเงียบน่าขนลุกที่ฉันได้ยินถือว่าสุภาพใน Unix น่าเสียดายที่ความพยายามที่ประสบความสำเร็จใด ๆ เกิดขึ้นbrew updateพร้อมกับเสียงขรมเดียวกันของข้อผิดพลาด

ฉันรันคำสั่งอีกครั้ง-vและดูเหมือนว่าการดำเนินการจะไม่ได้รับอนุญาตสำหรับสิ่งใดก็ตามที่อยู่ภายใน

เท่าที่คำตอบน่าจะเป็น "เรียนรู้ยูนิกซ์" ฉันแค่พยายามปฏิบัติตามข้อกำหนดงานบางอย่างที่นี่สำหรับการสอนเกี่ยวกับ Ruby ดังนั้นนั่นเป็นขั้นตอนสองสามขั้นตอนข้างต้นที่ฉันยังอยู่

brew doctor:

Warning: /usr/local/Frameworks isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/Frameworks
Warning: /usr/local/Cellar isn't writable.
You should `chown` /usr/local/Cellar
Warning: /usr/local/etc isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/etc
Warning: /usr/local/include isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/include
Warning: /usr/local/lib isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/lib
Warning: /usr/local/lib/pkgconfig isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/lib/pkgconfig
Warning: /usr/local/opt isn't writable.
You should `chown` /usr/local/opt
Warning: /usr/local/share isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/share
Warning: Some directories in /usr/local/share/man aren't writable.
This can happen if you "sudo make install" software that isn't managed
by Homebrew. If a brew tries to add locale information to one of these
directories, then the install will fail during the link step.
You should probably `chown` them:

    /usr/local/share/man
    /usr/local/share/man/man1
    /usr/local/share/man/man3
    /usr/local/share/man/man5
    /usr/local/share/man/man7
    /usr/local/share/man/man8
Warning: /usr/local/var isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

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

brew doctorมีอะไรจะบอกคุณบ้างไหม? โพสต์ผลลัพธ์ที่นี่
เอียนซี

@IanC มันเป็นรายการที่ยาวนานของทุกอย่างที่เกี่ยวกับการชงไม่สามารถเขียนได้ มียูทิลิตี pastebin แลกเปลี่ยน stack หรือไม่? มีเป็นจำนวนมากอันยิ่งใหญ่ของมัน
Tigt

นั่นมันแปลกนะ มีน้อยมากตอนนี้กว่าที่มีอยู่
Tigt

แค่ FYI: ฉันเพิ่งวิ่งbrew updateและค้นพบว่า "Homebrew ไม่จำเป็นต้องเป็นเจ้าของ / usr / local อีกต่อไป" ข้อมูลเพิ่มเติมในคำถามนี้ เห็นได้ชัดว่าถึงจุดนั้นคุณยังต้องอัปเดตการอนุญาตชั่วคราวใน / usr / local :)
acobster

คำตอบ:


26

สิ่งนี้ควรได้รับการแก้ไขให้เปลี่ยน perms บนไดเรกทอรีนั้นด้วยวิธีต่อไปนี้

$ cd /usr/local
$ sudo chown -R <your-username>:<your-group-name> *

id -gหากคุณไม่ทราบว่ากลุ่มของคุณเพียงแค่พิมพ์


ส่วนที่สำคัญคือการ-Rทำให้มันวนซ้ำ และคุณอาจจะต้องchownใช้sudoมัน สำหรับกลุ่มผู้ใช้ฉันมักจะใช้staffกับ OS X
nwinkler

น่าสนใจ เหตุใดการใช้กลุ่มจึงแตกต่างจากผู้ใช้เพียงอย่างเดียว
Tigt

4
ทำไมจึงเป็นสิทธิ์ของผู้ใช้ของคุณ / usr / local ฉันคิดว่านั่นเป็นความเสี่ยงด้านความปลอดภัยเนื่องจากมีโปรแกรมอื่น ๆ อีกมากมายที่ใช้ / usr / local และอาจถูกควบคุมอย่างเงียบ ๆ ชงต้องการสิ่งที่รุนแรงจริงๆเหรอ?
dfrankow

1
ฉันเชื่อว่านี่เป็นอันตรายเพราะเลือกกลุ่ม 'staff' ซึ่งหมายความว่าผู้ใช้ทุกคนในระบบปฏิบัติการสามารถแก้ไขเนื้อหาของ / usr / คุณควรเปลี่ยนเป็น 'admin'
ผ่อนคลาย

1
@dfrankow ใช่นี่คือความผิดพลาดของ homebrew พวกเขาไม่คิดว่าจะเกิดอะไรขึ้นถ้ามีผู้ใช้สองคนในเครื่องเดียวกัน
poige

22

คุณต้องใช้sudoเพื่อรันคำสั่งด้วย priledges ที่ยกระดับเช่นนี้:

sudo chown -R `whoami` /usr/local

ฉันทำ. "การดำเนินการถูกปฏิเสธดังนั้นฉันจึงทำแบบนี้"
Tigt

1
สำหรับผู้ใช้งานเปลือกหอยปลาจะเป็นsudo chown -R (whoami) /usr/local
คิคิน

10

ฉันกำลังเผชิญกับปัญหานี้เมื่อวานนี้ด้วย macOS 10.13.4 และฉันพยายามsudo chgrp -R admin /usr/localหรือsudo chown -R <your-username>:<your-group-name> /usr/localที่ได้รับOperation not permittedข้อผิดพลาดแม้ว่าจะใช้sudo

ดังนั้นฉันจึงพยายามแค่chgrpให้Homebrewโฟลเดอร์ที่เกี่ยวข้องกับadmin(ผู้ใช้ของฉันอยู่ในadminกลุ่มขึ้นอยู่กับผู้ใช้ที่คุณกำลังทำงานคุณอาจถูกเปลี่ยนเป็นกลุ่มอื่น) และให้สิทธิ์การadminเขียนกลุ่มเข้าถึงโฟลเดอร์เหล่านั้นโดยใช้คำสั่งเหล่านี้

sudo chgrp -R admin /usr/local/Homebrew/
sudo chmod -R g+w /usr/local/Homebrew/
sudo chgrp -R admin /usr/local/var/homebrew/
sudo chmod -R g+w /usr/local/var/homebrew/

หลังจากรันคำสั่งเหล่านี้ฉันสามารถติดตั้งแพ็คเกจใหม่ได้โดยไม่มีปัญหาใด ๆ หากคุณพบปัญหาการอนุญาตใด ๆ อีกครั้งให้ลองเรียกใช้สองคำสั่งแรกโดยแทนที่ชื่อโฟลเดอร์ด้วยคำสั่งที่คุณกำลังตีปัญหาการอนุญาต

หวังว่านี่จะช่วยผู้ใช้รายอื่น ๆ ด้วย macOS 10.13

หมายเหตุ: แม้ว่าการเปลี่ยนเจ้าของสำหรับ/usr/localหรือเปลี่ยนกลุ่ม/usr/localและให้สิทธิ์การเข้าถึงสำหรับกลุ่มคุณอาจใช้งานได้ แต่คุณไม่ควรทำเช่นนั้นเนื่องจากคุณกำลังแก้ไขโฟลเดอร์อื่นที่ไม่เกี่ยวข้องเช่นกัน การปรับเปลี่ยนโฟลเดอร์ที่คุณต้องการมีความปลอดภัยมากกว่า


มันเป็นไปด้วยดีสำหรับฉัน! <3 ขอบคุณ
DariusV

ควรได้รับการโหวตว่าเป็นคำตอบที่ถูกต้อง! ขอบคุณสำหรับความช่วยเหลือของคุณ!
Yini

2

เพื่อแก้ไขปัญหาการอนุญาตในไดเรกทอรีที่เราสามารถดำเนินการคำสั่งต่อไปนี้:

brew prune


0

คำตอบของ Reza ในคำถามนี้ใช้ได้กับฉัน:

sudo chown -R $(whoami) /usr/local/*

คุณไม่สามารถเปลี่ยนการอนุญาตสำหรับ / usr / local เอง แต่คุณสามารถเปลี่ยนสิทธิ์ที่ถูกต้องสำหรับโฟลเดอร์ที่อยู่ด้านล่าง

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