แพทย์ Brew กล่าวว่า:“ คำเตือน: / usr / local / include ไม่สามารถเขียนได้”


352

ชงหมอพูดว่า:

คำเตือน: / usr / local / include ไม่สามารถเขียนได้ สิ่งนี้อาจเกิดขึ้นได้หากคุณ "ซอฟต์แวร์ sudo ทำการติดตั้ง" ซึ่งไม่ได้จัดการโดย Homebrew

หากผู้ชงพยายามเขียนไฟล์ส่วนหัวไปยังไดเรกทอรีนี้การติดตั้งจะล้มเหลวในระหว่างขั้นตอนการเชื่อมโยง

คุณน่าจะchown/ usr / local / รวม

ฉันลองใช้คำสั่งต่าง ๆ เพื่อแก้ปัญหานี้ แต่ฉันยังคงติดอยู่ที่นี่

ฉันใช้ homebrew ในวันที่ 10.8.2


1
ฉันได้รับข้อผิดพลาดที่คล้ายกันสำหรับ "/ usr / local / lib" ใน Homebrew 0.9.4 ที่ได้รับการแก้ไขด้วยวิธีแก้ปัญหาด้านล่าง
JeremiahLee

คำตอบ:


680

เป็นเจ้าของมันและทุกอย่างในนั้น

Mac OS High Sierra หรือใหม่กว่า: (ty to Kirk ในความคิดเห็นด้านล่าง)

$ sudo chown -R $(whoami) $(brew --prefix)/*

Macos รุ่นก่อนหน้า:

$ sudo chown -R $USER:admin /usr/local/include

จากนั้นทำอีก

$ brew doctor

12
ไม่อนุญาตให้ใช้งาน
topwik

68
ได้เปรียบแทน$ sudo chown -R `whoami` /usr/local/อะไร?
Labu

2
@WillemLabu ส้อมน้อยหนึ่งกระบวนการหรือไม่ whoami เป็นรหัสผู้ใช้ที่มีประสิทธิภาพและหน้าคนบอกว่าล้าสมัยแล้ว :) bash เป็นเชลล์เริ่มต้นบน OSX และมีการตั้ง USER บางแห่ง
jrwren

7
ฉันสงสัยว่าการเปลี่ยนความเป็นเจ้าของ / usr / local เป็นโซลูชันที่สะอาดหรือไม่ การเพิ่ม US $ เข้ากับกลุ่ม 'wheel' จะดีกว่าไหม หรือเปลี่ยนกลุ่ม / usr / local เป็นกลุ่มผู้ดูแลระบบ?
Michael Lehn

13
อ้างอิงจากHomebrewใน Mac OS High Sierra chown /usr/localไม่ทำงานอีกต่อไป ใช้แทนsudo chown -R $(whoami) $(brew --prefix)/*
Kirk Hammett

115

สิ่งที่ได้ผลสำหรับฉันก็เช่นกัน

sudo chmod g+w /usr/local
sudo chgrp staff /usr/local

20
นี่คือการแก้ไขที่มีเหตุผลเพียงอย่างเดียวไม่ได้มีเหตุผลอย่างแท้จริงที่จะเป็นเจ้าของ / usr / local ในระบบผู้ใช้หลายคน
Alexander Torstling

3
ต้องได้รับคะแนนเสียงนี้! ;) มันใช้งานได้ดี
jrista

1
นี่เป็นทางออกที่ดีกว่า IMHO
jacurtis

5
ไม่ใช่ในเซียร์รา "ไม่สามารถเปลี่ยนโหมดไฟล์ใน / usr / local: ไม่อนุญาตให้ใช้งาน"
user980018

1
@ user980018 ฉันเพิ่งพบเจอสิ่งเดียวกัน - นี่คือวิธีแก้ปัญหาที่ฉันใช้
Casey Davidson


37

คนเดียวที่ทำงานให้ฉันใน El Capitan คือ:

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

5
chown: / usr / local: ไม่อนุญาตให้ใช้งาน
AlxVallejo

1
@AlxVallejo ทำมันบน / usr / local / bin ทำงานให้ฉัน
marcotama

23

หากคุณอยู่ในHigh Sierraและประสบปัญหานี้ให้ทำตามขั้นตอนด้านล่าง ( หมายเหตุ: / usr / local ไม่สามารถ chown'd ใน High Sierra ):

sudo mkdir /usr/local/include
sudo chown -R $(whoami) $(brew --prefix)/*

จากนั้นลองเชื่อมโยงกับลิงก์ชง ฉันพบปัญหาที่คล้ายกันและไม่มีวิธีแก้ไขปัญหาใดที่ทำงานให้กับ High Sierra ได้ หวังว่านี่จะช่วยใครซักคน


20

สำหรับเซียร์สูง:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

จากนั้นลองใช้คำสั่งชงของคุณ

ปัญหา # 3285


2
ไม่แน่ใจว่าเพราะเหตุใดการอัปเดตนี้จึงลดลงหากคุณเคยติดตั้ง Brew และอัปเกรดเป็น High Sierra การติดตั้ง Homebrew จะช่วยแก้ไขปัญหาได้ นี่เป็นวิธีที่ง่ายที่สุด
sam9046

แดกดันนั่นเป็นเพราะสคริปต์ทำสิ่งที่คำตอบอื่น ๆ แนะนำ
Lightness Races ในวงโคจร

สิ่งนี้ใช้ได้ผลสำหรับฉัน แต่ก่อนอื่นฉันถอนการติดตั้งก่อนหน้านี้โดยใช้: ruby ​​-e "$ (curl -fsSL raw.githubusercontent.com/Homebrew/install/master/uninstall )"
abbas

12

คุณสามารถนามแฝงคำสั่งเพื่อแก้ไขปัญหานี้ในของคุณ.bash_profileและเรียกใช้ทุกครั้งที่พบ:

ในตอนท้ายของไฟล์~/.bash_profileให้เพิ่ม:

alias fix_brew='sudo chown -R $USER /usr/local/'

และตอนนี้ภายในเทอร์มินัลของคุณคุณสามารถเรียกใช้:

$ fix_brew

12

สิ่งนี้ใช้ได้กับฉันในmacOS 10.12

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

ฉันมีปัญหาในการอัพเดต homebrew โดยมีข้อผิดพลาดดังต่อไปนี้:

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

8

สำหรับบางคนมันจะเป็น:

sudo chown -R JonJames:admin /usr/local/lib

เมื่อใช้ "lib" ตรงข้ามกับ "bin" หรือ "รวม" หรือ "อย่างอื่น"

คำเตือน Homebrew "ควร" อธิบายสิ่งที่ไม่สามารถเขียนได้โดยเฉพาะและจากนั้นให้ไวยากรณ์คำสั่งสำหรับการติดตาม แต่คุณจะต้องใช้ ":" ซึ่งตรงข้ามกับคำเตือนที่กล่าวถึงซึ่งไม่ถูกต้องจริง?


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

ขอบคุณ! สิ่งนี้ใช้ได้หลังจากการค้นหาในปริมาณที่พอสมควร
thiswayup


5

ข้อผิดพลาดเดียวกันใน MacOS 10.13

/usr/local/includeและ/usr/local/ /usr/libไม่ได้ถูกสร้างขึ้น ฉันสร้างด้วยตนเองและbrew linkในที่สุดก็ใช้งานได้


3

คุณต้องสร้าง / usr / local / include และ / usr / local / lib หากไม่มีอยู่:

$ sudo mkdir -p /usr/local/include
$ sudo chown -R $USER:admin /usr/local/include

3

สิ่งที่ทำงานสำหรับฉันในขณะที่มีฉันมีมากขึ้นผู้ใช้กว่า 1 ในคอมพิวเตอร์ของฉัน

ใช้ขั้ว:

  • วิ่ง brew doctor
    • การเห็นหลายรายการ/usr/local/...ไม่ใช่ข้อผิดพลาดที่เขียนได้
  • ปิดการใช้งานการป้องกันความสมบูรณ์ของระบบของ Mac: https://apple.stackexchange.com/a/208481/55628
  • เรียกใช้ต่อไปนี้
  • sudo chown -R $(whoami) /usr/local/*
  • brew doctor && brew upgrade && brew doctor

ใช้ Macbook Pro OSX High Sierra (รุ่น 10.13.3.)

แก้ไข 1:

FYI - โปรดได้รับคำแนะนำเรื่องนี้จะทำให้เกิดปัญหากับการรัน MySQL บน MAC ของคุณ

เพื่อให้สามารถเริ่มเซิร์ฟเวอร์ท้องถิ่นของฉันฉันต้องเรียกใช้:

sudo chown -R mysql:mysql /usr/local/mysql/data

หลังจากที่คุณเรียกใช้คุณสามารถเริ่มต้นเซิร์ฟเวอร์ MySQL ในเครื่องของคุณ


1
ยอดเยี่ยม ขอบคุณ!
shmuli

3
sudo mkdir -p /usr/local/include /usr/local/lib /usr/local/sbin

sudo chown -R $(whoami) /usr/local/include /usr/local/lib /usr/local/sbin

สิ่งนี้จะสร้างไดเรกทอรีที่จำเป็นทั้งหมดและให้สิทธิ์การเป็นเจ้าของที่ถูกต้อง

หลังจากรันคำสั่งเหล่านี้แล้วให้ตรวจสอบด้วย: brew doctor

สิ่งนี้ใช้ได้กับโมฮาวี



2

ฉันแค่ต้องการที่จะสะท้อนความคิดเห็นเจียมเนื้อเจียมตัวของsam9046เป็นทางเลือกและอาจเป็นทางออกที่ง่ายขึ้นที่ทำงานในกรณีของฉัน: ถอนการติดตั้งและติดตั้ง homebrew อีกครั้งตั้งแต่เริ่มต้น ไม่ต้องใช้คำสั่ง sudo

นอกจากนี้คุณยังสามารถเรียกดู / แก้ไขสคริปต์ถอนการติดตั้งจากลิงก์ด้านบนหากคุณต้องการให้แน่ใจว่าจะไม่มีผลกับแพ็คเกจที่ติดตั้งไว้ก่อนหน้านี้ ในกรณีของฉันนี่เป็นเพียงเครื่องในบ้านของฉันดังนั้นฉันเพิ่งเริ่มต้นใหม่



2

ก่อนอื่นคุณต้องสร้างไดเรกทอรี:

sudo mkdir /usr/local/include

ประการที่สอง:

sudo chown -R $(whoami) $(brew --prefix)/*

1

ฉันมีสิ่งนี้เกิดขึ้นในองค์กรของฉันหลังจากผู้ใช้ของเราถูกผูกไว้กับไดเรกทอรีที่ใช้งานอยู่ (เปลี่ยน UID จาก 50x เป็น ###### อย่างมีประสิทธิภาพ)

ตอนนี้เป็นเพียงกรณีของการเปลี่ยนความเป็นเจ้าของของไฟล์ทั้งหมดที่ x เป็น y เป็นเจ้าของ

โดยที่ 501 คือรหัสผู้ใช้ตัวเลขเดิมของฉันซึ่งยังคงเชื่อมโยงกับไฟล์ homebrew ทั้งหมด

ID ผู้ใช้เก่าสามารถพบได้โดยใช้ ll /usr/local/Cellar

ตอนนี้อัปเดตความเป็นเจ้าของ sudo find /usr/local -user 501 -exec chown -h $USER {} \;

วิธีนี้เราหลีกเลี่ยงการเปลี่ยนความเป็นเจ้าของในไฟล์ที่ไม่ได้ควบคุมโดย homebrew หรือเป็นของผู้ใช้ระบบอื่น ๆ


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