एक मैक पर / usr / बिन में प्रतीकात्मक लिंक कैसे बनाएं?


11

पर्यावरण: OSX सिएरा, डार्विन कर्नेल संस्करण 16.3.0

रूट प्रॉब्लम: मैं एक सेंट्रल रिपॉजिटरी में शेल स्क्रिप्ट का एक गुच्छा इस्तेमाल करना चाहता हूं, जिसमें एक #! / Usr / bin / zsh है। मेरे मैक पर, zsh / bin / zsh में है।

समाधान का प्रयास: मैं एक प्रतीकात्मक लिंक बनाना चाहता हूं

ln -s /bin/zsh /usr/bin/zsh

मेरे उपयोगकर्ता खाते में व्यवस्थापक अधिकार हैं, लेकिन मैं रूट नहीं हूं, और मैं इस मैक पर रूट उपयोगकर्ता को सक्षम नहीं करना पसंद करूंगा। इसलिए मैंने पहली बार ए

sudo su

रूट विशेषाधिकारों के साथ एक शेल प्राप्त करने के लिए और फिर ln कमांड को निष्पादित किया । हालाँकि मुझे अभी भी त्रुटि संदेश ln: / usr / bin / zsh: ऑपरेशन की अनुमति नहीं है

प्रशन:

  • मुझे यह त्रुटि संदेश क्यों मिलता है?

  • लिंक बनाने के लिए मुझे क्या करना होगा?

  • क्या मेरे मूल लक्ष्य को प्राप्त करने का कोई बेहतर तरीका है? ध्यान दें कि # ठीक कर रहा है! लाइनें एक विकल्प नहीं है।


आप क्यों नहीं बस कॉपी नहीं है /usr/bin/zshकरने के लिए /bin/zsh?
लेनिए

1
@ Lenniey इस तरह से आप एक ढीली कॉपी बना रहे हैं जिसे मूल के साथ अपडेट नहीं किया जाएगा।
मारियो

@Merio whelp ... बेशक आप सही कह रहे हैं। ओपी: ऐसा कभी मत करो! ;)
लेनिए

1
@ लेन्नी - कॉपी को दूसरे रास्ते पर जाने की जरूरत है! और अगर आप कॉपी कर सकते हैं, तो आप लिंक कर सकते हैं।
AFH

@AFH हाँ मेरी टिप्पणी एक पूरी गड़बड़ है ...
लेन्नी

जवाबों:


15

यह संदेश आपको Apple के सिस्टम इंटीग्रिटी प्रोटेक्शन के कारण मिलता है । सिस्टम इंटीग्रिटी प्रोटेक्शन में सिस्टम के इन हिस्सों के लिए सुरक्षा शामिल है:

/System
/usr
/bin
/sbin
Apps that are pre-installed with OS X

तृतीय-पक्ष एप्लिकेशन और इंस्टॉलर पथ और एप्लिकेशन शामिल करने के लिए लिखना जारी रख सकते हैं:

/Applications
/Library
/usr/local

इसका मतलब है कि आप बस एक प्रतीकात्मक लिंक बना सकते हैं /usr/local/bin(यह अभी भी आपके $ पेट में है)।

लेकिन, ऐसा लगता है कि आपको विशेष रूप से प्रतीकात्मक लिंक बनाने की आवश्यकता है /usr/bin। आप सिस्टम इंटीग्रिटी प्रोटेक्शन को अक्षम करके इसे प्राप्त कर सकते हैं (कृपया ऐसा न करें, बस स्क्रिप्ट्स को संपादित करें ..)। आप इसे निष्क्रिय कर सकते हैं (मैंने स्वयं इसका परीक्षण नहीं किया है !!!):

Click the  menu.
Select Restart...
Hold down command-R to boot into the Recovery System.
Click the Utilities menu and select Terminal.
Type csrutil disable and press return.
Close the Terminal app.
Click the  menu and select Restart....

2
आप इस बिंदु से चूक गए हैं: प्रश्नकर्ता के पास स्क्रिप्ट हैं जो #!/usr/bin/zhशेल के रूप में निर्दिष्ट हैं , इसलिए वह जिस समाधान की तलाश करता है वह इस स्थान को लिंक करने के लिए है जहां शेल वास्तव में रहता है, लेकिन जैसा कि आप कहते हैं कि वह ऐसा करने से सुरक्षित है। जब तक सुरक्षा को दरकिनार नहीं किया जाता, तब तक एकमात्र समाधान लिपियों का एक बैच संपादन प्रतीत होगा।
AFH

ठीक है, तुम सही हो, उसे स्क्रिप्ट्स (जो एक कमांड से हो सकती है) को एडिट करना होगा।
13dimitar

@Dimitar इस सवाल पर गौर करें: क्या मेरा मूल लक्ष्य हासिल करने का बेहतर तरीका है? ध्यान दें कि फिक्सिंग #! लाइनें एक विकल्प नहीं है।
लेनिइ

1
ध्यान दें, मैंने अपना उत्तर संशोधित किया है
13dimitar
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.