การอัพเกรดชงใน El Capitan


38

ฉันเพิ่งอัพเกรดเป็นEl Capitanและเมื่อฉันพยายามอัปเดตbrewฉันได้รับข้อผิดพลาดต่อไปนี้:

$ brew update
Error: The /usr/local directory is not writable.
Even if this directory was writable when you installed Homebrew, other
software may change permissions on this directory. Some versions of the
"InstantOn" component of Airfoil are known to do this.

You should probably change the ownership and permissions of /usr/local
back to your user account.
  sudo chown -R $(whoami):admin /usr/local

ก่อนที่ฉันจะดำเนินการตามchownคำแนะนำเนื่องจาก El Capitan เพิ่งออกมานั่นเป็นวิธีที่เหมาะสมในการดำเนินการที่นี่หรือไม่ เหตุใดขั้นตอนนี้จึงจำเป็นและอะไรคือผลที่ไม่พึงประสงค์ที่อาจเกิดขึ้นจากการรันคำสั่งนี้

ในกรณีที่ช่วยได้ฉันพบสองประเด็นเกี่ยวกับ El Capitan ในbrew: 40837และ41665แต่การแก้ไขปัญหานี้ยังไม่ชัดเจนในทันที ฉันจะทำอย่างไรเพื่อใช้งานต่อไปbrewใน El Capitan อย่างน่าเชื่อถือ


2
คุณทำได้ดีตามข้อความที่แนะนำเปลี่ยนความเป็นเจ้าของ/usr/localหรือไม่
user3439894

นี่เป็นคำถามที่ยอดเยี่ยมสำหรับกรณีของผู้ใช้หลายคน (หรือผู้ใช้หนึ่งรายที่มีหลายบัญชีที่มีโปรไฟล์ต่างกัน) ในเครื่องเดียวกัน
Walt Stoneburner

4
การพิมพ์sudo chown -Rทำให้ฉันนึกถึง ไม่สำคัญว่าพารามิเตอร์อื่น ๆ คืออะไร ฉันมีมากกว่า Homebrew /usr/localและมันไม่ใช่คำสั่งที่ชัดเจน ฉันยืนยันผ่าน Time Machine ที่ติดตั้ง El Capitan chowned, โดยเฉพาะ/usr/localและไม่ใช่ไดเรกทอรีย่อย ผมจึงสามารถที่จะได้รับไปกับการทำพลิกกลับไม่ใช่ recursive sudo chown $(whoami):admin /usr/localคือ YMMV
duozmo

@duozmo ถูกต้อง -Rในsudo chown -Rมันหนักมือ นั่นเท่ากับการอ้างสิทธิ์โดเมน Brew ตลอดเวลา/usr/local
HairOfTheDog

คำตอบ:


31

ฉันหมายความว่าพวกเขาให้ทางออกคุณตรงนั้น ฉันมีปัญหาเดียวกันและฉันเพิ่งวิ่ง:

  sudo chown -R $(whoami):admin /usr/local

และมันก็ใช้งานได้


1
+1 ฉันต้องรีเซ็ตสิทธิ์ของผู้ใช้ตามที่อธิบายไว้ ไม่มีปัญหาเพิ่มเติมหลังจากปรับแต่งเล็กน้อย - homebrew และแพ็คเกจของฉันมีความน่าเชื่อถือมากใน 10.11
bmike

22
นี่ไม่ได้ตอบคำถาม: อาจมีคนคิดว่า Apple ล็อค / usr / local ด้วยเหตุผลและการแก้ไขนี้ไม่เหมาะสำหรับ El Capitan ตอนนี้ฉันกำลังดูว่า Apple ให้คำแนะนำบ้างไหม คำถามคือ "... เนื่องจาก El Capitan เพิ่งออกมานั่นเป็นวิธีที่เหมาะสมในการดำเนินการที่นี่หรือไม่?"
Michael Welch

1
@MichaelWelch คำตอบถูกโพสต์ก่อนที่จะแก้ไข
DisplayName

1
ขออภัย @DisplayName ฉันควรจะดูเวลาประทับ
Michael Welch

2
นี่คือคำตอบที่ถูกต้อง ดูgithub.com/Homebrew/homebrew/blob/master/share/doc/homebrew/ … - ฉันวิ่ง$ brew doctorและพบว่าการflacพึ่งพานั้นหายไป หลังจากที่$ brew install flacฉันต้องดื้อรั้นวิ่ง$ brew updateอีกสองสามครั้ง
Ando

9

เราไม่จำเป็นต้องหยุดยั้งเรื่องนี้อีกต่อไป ฉันเสี่ยงคำแนะนำและทำการเปลี่ยนแปลงการอนุญาตที่แนะนำ จากนั้นในการอัปเดตเป็น homebrew ล่าสุดฉันได้รับข้อความที่ทำให้มั่นใจ:

Homebrew ไม่จำเป็นต้องเป็นเจ้าของ / usr / local อีกต่อไป หากคุณต้องการคุณสามารถคืนค่า / usr / local เป็นค่าเริ่มต้นด้วย: sudo chown root: wheel / usr / local


ดังนั้นจะแก้ปัญหานี้อย่างไร
Rajesh Maurya

@RajeshMaurya ใช้วิธีแก้ปัญหาโดย karolus
JannieT

8

ตามคำถามเพื่อความปลอดภัยข้างต้นกล่องโต้ตอบจะให้คำแนะนำในการรีเซ็ตหลังจากการอัพเดทสำเร็จแล้ว หลังจากวิ่ง

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

และจากนั้น

brew update

หลังจากการเรียกใช้การปรับปรุงสำเร็จแล้วกล่องโต้ตอบควรระบุว่าทำสิ่งนี้:

sudo chown root:wheel /usr/local

หลังจากดำเนินการแล้วควรบรรเทาปัญหาด้านความปลอดภัยด้วย MacOS 10.12


chown: / usr / local: ไม่อนุญาตให้ดำเนินการ
Rajesh Maurya

6

โซลูชันที่ระบุไม่ได้ผลสำหรับฉัน:

sudo chown -R $(whoami):admin /usr/local

รูปแบบนี้เหมาะกับฉัน:

sudo chown -R $USER /usr/local/


1
sudo chown -R $ USER / usr / local / ทำงานให้ฉันใน macOS ล่าสุด
Alex Trott

1
chown: / usr / local /: ไม่อนุญาตให้ดำเนินการ
Rajesh Maurya

เพิ่มsudoจากนั้นพิมพ์รหัสผ่านในระดับราก
ไบรอัน Spiering

1
ยังคง chown: / usr / local /: การดำเนินการไม่ได้รับอนุญาตแม้ว่าฉันจะพิมพ์รหัสผ่านรูท
2myCharlie


-1

โปรดดู SIP ด้วย:

csrutil status

การป้องกันความสมบูรณ์ของระบบได้รับการแก้ไขที่ "เปิดใช้งาน" โดยมีแอตทริบิวต์สุดท้ายของ Apple ที่ถูก จำกัด ไว้:

csrutil 

3
วิธีนี้แก้ปัญหาที่ระบุในคำถามได้อย่างไร
nohillside

-1

มันใช้งานได้สำหรับฉัน

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

1
โซลูชันทั้งสองนี้ไม่ได้ผลสำหรับฉัน มันยังคงแสดง: chown: / usr / local: ไม่อนุญาตให้ใช้งาน
2myCharlie

-2

จำเป็นต้องปิดการป้องกันความสมบูรณ์ของระบบ คุณสามารถทำได้ด้วยสิ่งนี้

sudo nvram boot-args="rootless=0";osascript -e 'tell app "loginwindow" to «event aevtrrst»’

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


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