การติดตั้งข้อผิดพลาด Homebrew


112

กำลังพยายามติดตั้ง rvm และ Ruby 1.9.2

ฉันติดตั้ง homebrew และ git แล้ว แต่ไม่สามารถรับการอัปเดตที่สมบูรณ์ได้เนื่องจากฉันได้รับข้อผิดพลาดในการอนุญาต ติดตั้ง Snow Leopard ใหม่และซ่อมแซมสิทธิ์

ตอนนี้เกิดขึ้น ...

$ brew ติดตั้ง wget

ข้อผิดพลาด: ไม่สามารถเขียนถึง / usr / local / Cellar


stackoverflow.com/questions/4804169/…ควรทำเครื่องหมายว่าเป็นคำตอบที่ยอมรับ - ฉันเกรงว่าผู้เยี่ยมชมที่ไม่เห็นว่าคำถามนี้ยังไม่ได้รับคำตอบพวกเขาจะดำเนินการต่อ
dmo

คำตอบ:


274

sudo chown -R $USER /usr/local

คุณจะต้องให้สิทธิ์ตัวเองในการ/usr/local/ใช้บรรทัดนั้นที่นั่น ฉันต้องทำด้วยตัวเองหลังจากใช้ Ruby one-liner ที่ด้านบนของเอกสารอย่างเป็นทางการเพื่อติดตั้ง Homebrew ทำงานเหมือนมีเสน่ห์สำหรับฉัน ควรเป็นครั้งเดียวที่คุณจะต้องsudoใช้ Homebrew

ฉันไม่แน่ใจว่าซับเดียวของทับทิมทำสิ่งนี้ได้หรือไม่ ถ้าเป็นเช่นนั้นระบบของฉันก็เข้าควบคุม/usr/localตั้งแต่นั้นมา

แก้ไข : ฉันพลาดสิ่งนี้ไปโดยสิ้นเชิงแต่@samvermetteไม่ได้ (ดูการตอบกลับคำตอบของฉัน): หากคุณเรียกใช้คำสั่งนี้ด้านบนและมีบางสิ่งที่ติดตั้งผ่าน homebrew ที่ต้องการการอนุญาตพิเศษของผู้ใช้เช่นmysqlตรวจสอบให้แน่ใจว่าได้ให้สิทธิ์เหล่านั้นกลับคืนมา (ตาม คำสั่งดังกล่าวให้ความเป็นเจ้าของแบบวนซ้ำกับทุกสิ่งที่อยู่ภายใน/usr/localคุณ ( $USER) ในกรณีของ mysql มัน ...

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


16
โปรดทราบ : คำสั่งนี้จะลบความเป็นเจ้าของ / usr / local / mysql / data จากmysqlผู้ใช้ ในกรณีของฉันที่ป้องกันไม่ให้ mysql เริ่มทำงาน แก้ไขด้วย:sudo chown -RL mysql:mysql /usr/local/mysql/data
samvermette

24
ฉันหลีกเลี่ยงปัญหา mysql โดยใช้sudo chown -R $USER /usr/local/Cellarตามที่/usr/local/มีสิทธิ์ที่ถูกต้องสำหรับฉันแล้ว
Parker

1
อนิจจาผู้ใช้มาและผู้ใช้ไป ... บางทีสักวันอิบราฮิมจะกลับมาและทำเครื่องหมาย อาจจะ. (อาจจะไม่)
Ben Kreeger

4
ฉันไม่ชอบคำตอบนี้ สันนิษฐานว่ามีผู้ใช้เพียงคนเดียวที่เคยใช้ระบบและผู้ใช้รายนั้นควรเป็นเจ้าของทุกอย่าง / usr / local แม้ว่าคำถามจะเป็นเรื่องเกี่ยวกับ homebrew เท่านั้น การชงไม่ทำงานกับระบบผู้ใช้หลายคน? เป็นคำตอบที่ไม่ชัดเจนแม้ว่าจะได้ผลก็ตาม นอกจากนี้ยังไม่ได้อธิบายว่าผู้ใช้อาจพบกับสถานการณ์นี้อย่างไร คำแนะนำ - ฉันติดตั้ง HomeBrew โดยใช้คำแนะนำที่ยอมรับจากนั้นกู้คืนจากข้อมูลสำรอง TimeMachine (ไปยังเครื่องอื่น) ฉันสงสัยว่าเป็นการคืนค่าที่เปลี่ยนแปลงการเป็นเจ้าของไฟล์
Jason R.Combs

1
ฉันเห็นด้วยกับ @ JasonR.Coombs; ผู้คนไม่ควรใช้โซลูชันที่ไม่เป็นระเบียบนี้โดยไม่เข้าใจโครงสร้างทางปฏิบัติและความปลอดภัย ซอฟต์แวร์ใด ๆ ใน / usr / local อาจถูกเขียนทับโดยสิ่งที่ทำงานภายใต้ผู้ใช้ของคุณซึ่งเป็นการเปิดช่องโหว่ด้านความปลอดภัย เป็นไปได้ทั้งหมดที่คุณจะทำอย่างอื่นเพิ่มขึ้น (นอกเหนือจาก MySQL) โดยการเรียกใช้คำสั่ง chown แรกแบบสุ่มสี่สุ่มห้าหลังจากนั้นจะสายเกินไปที่จะระบุและแก้ไขทุกอย่างที่คุณอาจจะทำผิดพลาด
ปล้น

41

ฉันมีปัญหานี้หลังจากอัปเกรดเป็น Mavericks และหน้านี้เป็นผลการค้นหาอันดับต้น ๆ เมื่อเข้าสู่ข้อความแสดงข้อผิดพลาด ฉันยังคงค้นหาและพบว่าคำตอบนี้ในกอง overflow.com พูดอย่างกระชับก็คือ:

sudo chmod a+w /usr/local/Cellar

สิ่งนี้แก้ไขปัญหาสำหรับฉันและเนื่องจากมีการเปลี่ยนแปลงเฉพาะสิทธิ์สำหรับเส้นทางเฉพาะที่อ้างถึงในข้อความแสดงข้อผิดพลาดดูเหมือนว่าจะไม่ส่งผลข้างเคียงในเชิงลบกับการติดตั้งอื่น ๆ

ฉันใส่คำตอบไว้ที่นี่สำหรับคนอื่น ๆ ที่อาจพบหน้านี้เป็นครั้งแรกเหมือนฉัน อย่างไรก็ตามเครดิตควรไปJDI


2
นี่ถือเป็นการจารึกอย่างที่ทุกคนสามารถเขียนถึง / usr / local / Cellar ได้หรือไม่?
David Welch

คำตอบนี้ล้มเหลวสำหรับแพ็กเกจที่ต้องการการเข้าถึงโฟลเดอร์อื่น ๆ (เช่น/usr/local/bin)
Jason R.Combs

11

คุณสามารถอนุญาตให้เฉพาะผู้ดูแลระบบที่เขียนเข้ามา/usr/local/?

chgrp -R admin /usr/local
chmod -R g+w /usr/local
chgrp -R admin /Library/Caches/Homebrew
chmod -R g+w /Library/Caches/Homebrew

เนื่องจากผู้ใช้แต่ละคนที่อยู่ในกลุ่มผู้ดูแลระบบจะสามารถติดตั้งการอ้างอิงใหม่ได้


ดูเหมือนจะเป็นโซลูชันที่ดีกว่าสำหรับเครื่องหลายผู้ดูแลระบบ (แม้ว่าไดเร็กทอรี / usr / local / lib ของฉันก็ต้องการ g + x เพื่อให้ aspell ทำงานได้)
James Snook

1
เพื่อหลีกเลี่ยงข้อผิดพลาด "ขั้นตอน" การเชื่อมโยงชง "ไม่เสร็จสมบูรณ์คุณสามารถใช้สิ่งที่อยู่ในเธรดนี้ได้เช่นsudo chgrp -R admin /usr/local/DDDD+ sudo chmod -R g+w /usr/local/DDDDโดยที่ DDDD คือbin , share , Library / LinkedKegs , opt
superk

1
ขอบคุณสำหรับ anwer ฉันต้องใช้ "sudo" ดังนั้นหากคำสั่งเหล่านี้ใช้ไม่ได้ให้พยายามนำหน้าด้วย sudo
MQoder



1

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

$ sudo dscl . append /Groups/wheel GroupMembership $USER

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


0

คุณติดตั้ง Homebrew ได้อย่างไร? ของพวกเขาคำแนะนำการติดตั้งอย่างเป็นทางการรวมถึงการใช้สคริปต์ทับทิม ที่ควรดูแลปัญหาการอนุญาตให้คุณ

หากคุณไม่ต้องการเรียกใช้สคริปต์จะมีส่วนของเพจที่เรียกว่า "การติดตั้งไปที่ / usr / local for Developers" ซึ่งอธิบายการเปลี่ยนแปลงสิทธิ์ที่จำเป็นสำหรับไดเร็กทอรี / usr / local


ฉันใช้สคริปต์และติดตั้งแล้ว แต่ยังมีปัญหาในการอัปเดต ฉันย้ายข้อมูลผู้ใช้ไปยังแล็ปท็อปเครื่องใหม่ ต้องแก้ปัญหาเล็กน้อยจาก github b / c สคริปต์ไม่ทำงานในตอนแรก
Ibrahim

-3

แก้ไข : ตามที่กล่าวไว้ในความคิดเห็นเป็นความคิดที่ไม่ดีที่จะใช้ sudo กับ homebrew ดังนั้นอย่าใช้คำตอบต่อไปนี้!


คุณยังสามารถป้องกันข้อผิดพลาดนี้ได้หากคุณรันคำสั่งด้วย sudo:

$ sudo brew install wget

แต่ดูแลการใช้งานsudoเพราะคุณสามารถทำผิดพลาดได้มาก


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