คำสั่ง Unix“ ln -s” ไม่อนุญาตให้ใช้ใน OSX El Capitan Beta3


54

ฉันกำลังติดตั้ง nodejs สำหรับ Symphony เมื่อฉันพบข้อผิดพลาด "ไม่อนุญาตการดำเนินการ" ใครรู้ว่าทำไมสิ่งนี้เกิดขึ้น

MacBook-Pro-de-XXX: ~ XXX $ sudo ln -s / usr / local / bin / node / usr / bin / node

รหัสผ่าน:

ln: / usr / bin / node: ไม่อนุญาตการดำเนินการ


1
ก่อนอื่นให้ตรวจสอบว่า / usr / bin / node ตั้งค่าไว้แล้ว หากคุณต้องการเปลี่ยนคุณสามารถใช้ ln -sf เพื่อบังคับให้ symlink

MacBook-Pro-de-XXX: ~ XXX $ ซึ่งโหนด / usr / local / bin / node
Kurr0

ls -la / usr / bin / node

MacBook-Pro-de-XXX: ~ XXX $ ls -la / usr / bin / node ls: / usr / bin / node: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
Kurr0

คำตอบ:


70

นี่เป็นโหมดที่เรียกว่า "rootless" ในเวอร์ชันใหม่ของ OS X ซึ่งจะทำให้ไดเรกทอรีระบบบางอย่างเป็นแบบอ่านอย่างเดียว (แม้กระทั่งสำหรับผู้ดูแลระบบ) "/ usr" เป็นหนึ่งในไดเรกทอรีที่ได้รับการป้องกัน (ไดเรกทอรีย่อยเดียวที่ถูกแยกออกจากกฎนี้คือ "/ usr / local")

หนึ่งสามารถปิดใช้งานโหมด rootless นี้ด้วยคำสั่งต่อไปนี้:

$ sudo nvram boot-args="rootless=0"
$ sudo reboot

แต่ไม่แนะนำ! แนวทางปฏิบัติที่ดีที่สุดคือการติดตั้งข้อมูลที่กำหนดเองเป็น "/ usr / local" เท่านั้น


อัพเดท (27 ต.ค. -15): 10.11 (El Capitan) การเปิดเผยต่อสาธารณะ

โปรดทราบว่าการแก้ปัญหาที่อธิบายไว้ข้างต้นจะไม่ทำงานกับการเปิดตัว El Capitan อีกต่อไปเนื่องจาก Apple ได้เปลี่ยนแปลงสิ่งต่าง ๆ

วิธีที่เหมาะสมในการปิดการใช้งานโหมด "rootless" (aka System Integrity Protection "SIP") คือการบูตชั่วคราวในโหมดการกู้คืน (กดค้าง Command + R ระหว่างการบู๊ต) และใช้csrutil disableคำสั่ง (หรือcsrutil enableเปิดใช้งานใหม่) จากเทอร์มินัล เทอร์มินัลสามารถเข้าถึงได้ผ่านเมนูของตัวติดตั้งที่เปิดในโหมดการกู้คืน


2
อาจจะไม่แนะนำให้เลือกใช้ แต่ตอนนี้ MacTeX ดูเหมือนจะคาดหวัง/usr/texbinดังนั้นเราไปกันเลย!
David Lord

การแก้ไข NVRAM เพื่อปิดใช้งานโหมดรูทไม่ทำงานบน El Capitan จาก (อย่างน้อย) รุ่น GM ไปข้างหน้า ตรวจสอบคำตอบนี้สำหรับวิธีการที่ใช้งานได้ในเวอร์ชั่นที่ออกมาตอนนี้: stackoverflow.com/questions/32590053/ …
Chris Ostmo

สิ่งนี้ไม่ได้ผลสำหรับฉันด้วย
gsscoder

1
ยังให้ฉันOperation not permitted
Sinux

2
วิธีแก้ปัญหาของฉันคือการติดตั้งไปที่ / usr / local / bin
anon58192932

-2

ในรุ่น El Capitan ของ/binฉันไม่มีไดเรกทอรีอยู่:

/usr/local/bin

ดังนั้นการแก้ไขคือ:

mkdir -p /usr/local/bin

-pธงจะสร้าง dir (และบังเอิญ dirs ใด ๆ ในเส้นทางที่เต็ม) ถ้ามันไม่ได้อยู่

จากนั้นคุณสามารถสร้าง symlink และคัดลอกแอปไป/usr/local/binเพราะ/usr/localไม่ได้เป็นส่วนหนึ่งของโหมด "รูท"


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