मैं होमब्रे को रूट के रूप में कैसे चलाऊं?


11

कई साल पहले, आप brewरूट के रूप में रनिंग करके रूट के साथ भाग सकते थे, brewलेकिन उन्होंने उस सुविधा को हटा दिया। इसलिए होमब्रे १.१.६ में, मैं /usr/local/Homebrew/Library/Homebrew/brew.shरूट चेक को हटाने के लिए संपादन करता था (एक ने कहा कि यह "अत्यंत खतरनाक" है) इसलिए मैं brewरूट के रूप में चला सकता था ।

Homebrew का नया संस्करण अभी भी उसी के साथ काम करता है, लेकिन brew.shमेरे चलने के बाद brewभी हर बार फाइल वापस लौटाता रहता है , भले ही मैं chmod 500यह करूं । मैं इसे बदलने के लिए एक स्क्रिप्ट लिख सकता था फिर brewस्वचालित रूप से चला सकता हूं, लेकिन मुझे यकीन नहीं है कि यह हमेशा काम करेगा और चांस नहीं लेना चाहता। क्या किसी ने Homebrew को रूट के रूप में चलाने के लिए एक अलग विधि पाई है?


3
जिज्ञासा से बाहर, आप brewजड़ के रूप में क्यों चलना चाहते हैं ? इसके अलावा, sudoआपके उद्देश्यों के लिए पर्याप्त नहीं है?
एलन

2
@ ऑलन sudoइसे रूट के रूप में चलाता है, और यह मुझे वही "बेहद खतरनाक" त्रुटि देता है। मैं रूट के रूप में चलाना चाहता हूं क्योंकि इसमें कुछ निश्चित पैकेजों को स्थापित करने में समस्याएं हैं, खासकर अगर कुछ भी Homebrew (जैसे माध्यम से pip) के माध्यम से स्थापित नहीं किया गया था । मैं कई बार उस मार्ग से नीचे जा चुका हूँ। जब तक मैं सब कुछ रूट के रूप में स्थापित नहीं करता, तब तक यह अजीब वर्कअराउंड के बिना कई उपयोगकर्ताओं के लिए ठीक से काम नहीं करता है।
sudo

$ su -> $ काढ़ा whateveryouwant?
स्ट्रॉहारा

1
एक सॉफ्टवेयर पैकेज बनाना rootजोखिम भरा है। यहां तक ​​कि एक पैकेज प्रबंधक के बिना एक पैकेज का निर्माण करते हुए, आप पैकेज को एक गैर-विशेषाधिकार प्राप्त उपयोगकर्ता (स्वयं) के रूप में बनाएंगे और फिर पैकेज को उसी के rootसाथ स्थापित करेंगे sudo। फ़िंक और मैकपोर्ट जैसे पैकेज प्रबंधक अपने स्वयं के गैर-विशेषाधिकार वाले उपयोगकर्ताओं के साथ निर्माण करते हैं और फिर स्थापित होते हैं root। Homebrew के पास ऐसा कोई तंत्र नहीं है।
fd0

1
हम्म, मैं अपने अंत में इस मुद्दे को नहीं देख रहा हूँ जिसमें brew.shफ़ाइल को संशोधित करने और फिर एक brewकमांड चलाने के बाद वापस किया जा रहा है । इसलिए मैं भाग सकता हूं sudo brew whateverऔर brew whateverठीक हो सकता हूं । मेरा brew --versionआउटपुट इस प्रकार है: Homebrew 1.2.1-98-g803f9cbf7b-dirty Homebrew/homebrew-core (git revision d3d6; last commit 2017-05-28) FYI करें, मैंने फ़ंक्शन brew.shमें सभी लाइनों पर टिप्पणी करने के लिए अपनी फ़ाइल को संशोधित किया check-run-command-as-rootऔर returnइसके बजाय फ़ंक्शन के शीर्ष पर एक एकल स्टेटमेंट रखा ।
जीडीपी 2

जवाबों:


2

स्क्रिप्ट में अपना परिवर्तन करने के बाद, brew.sh पर अपरिवर्तनीय ध्वज सेट करने का प्रयास करें।

chflags uchg /usr/local/Homebrew/Library/Homebrew/brew.sh

मैंने परीक्षण नहीं किया है। एक सामान्य नियम के रूप में, मैं उन एप्लिकेशन को रूट नहीं देता, जिनके डेवलपर मुझसे भीख नहीं मांग रहे हैं।


मैं भी जेसन से सहमत हूं। वहाँ एक कारण वे कहते हैं कि जड़ के रूप में काढ़ा नहीं चलाना है। ज्यादातर इसलिए कि वे देव हैं और आईएलएल उन्हें अपने सॉफ्टवेयर के साथ भरोसा करते हैं। इसके अलावा, मैकपोर्ट्स के विपरीत, जिसकी पिछली बार मैंने जांच की थी कि ब्रू को अभी भी आवश्यकता नहीं है या रूट अनुमतियाँ नहीं चाहिए, यदि आप कुछ स्क्रू करते हैं, तो यह आपके पूरे सिस्टम के लिए संभव नहीं है। सब कुछ आपके उपयोगकर्ता खाते में समाहित है और sudo के साथ खिलवाड़ करने की आवश्यकता नहीं है।
user9950573

1
काम करने की पुष्टि, धन्यवाद। पहली बार अपडेट करने के प्रयास में कुछ समय लगता है, लेकिन बाद sudo brew installमें सामान्य रूप से चलता है।
सूदो

1
वहाँ गड़बड़ करने के लिए बहुत कुछ नहीं है और मैं मैक पर स्थापित कर रहा हूँ संकुल के साथ अनुपयोगी एक प्रणाली को प्रस्तुत करना। वैसे भी, मैं 30 मिनट के भीतर अपने सिस्टम को पुनर्स्थापित कर सकता हूं। मेरे उपयोगकर्ता की सफाई बहुत कठिन है, और कई चीजें सीधे काम नहीं करती हैं जब तक कि सिस्टम-वाइड स्थापित नहीं होता है, जैसा कि मैं ऊपर की टिप्पणियों में समझाता हूं।
सूदो

1

विशिष्ट उपयोगकर्ताओं को ऐसा नहीं करना चाहिए, लेकिन आप विशिष्ट नहीं हैं?

दो मुद्दे:

  1. आप जड़ को रोक नहीं सकते। यदि आप रूट का उपयोग करने पर जोर देते हैं, तो रूट brew.shकोई फर्क नहीं पड़ता कि क्या हो सकता है।

  2. आप रोक नहीं सकते brew, आखिरकार, आप चलने की बात कर रहे हैं brew

तो हम उसके साथ काम करेंगे। चलो brew.shफिर चलाने के लिए एक उपनाम सेट करें brew

alias brew='cp /<modified>/brew.sh /<actuall>/brew.sh; /usr/local/bin/brew'

(अपने सिस्टम से मिलान करने के लिए रास्तों को ठीक करें)।

अब आपको बस इतना करना है:

sudo brew <arguments>

(यह रूट हो जाएगा, कॉपी पर brew.sh, फिर brewतर्क के साथ रूट के रूप में चला brewजाएगा , बाद में ओवरराइट हो जाएगा brew.shऔर आप इसे फिर से करने के लिए तैयार होंगे)

नोट: आप sudoउपनाम में भी डाल सकते हैं, लेकिन यह तरीका बेहतर लगता है क्योंकि आपको हर बार पासवर्ड के लिए संकेत दिया जाएगा।

आमतौर पर आप सुरक्षा के लिए शेल स्क्रिप्ट पर रूट करने के लिए setuid( chmod u+s) का उपयोग नहीं कर सकते हैं । पर्ल का एक अलग कार्यक्रम है suidperlजिसे स्थापित किया जा सकता है और उपयोगकर्ता विशेषाधिकार को बढ़ा सकता है, लेकिन ऐसे समाधान त्वरित उत्तर के लिए थोड़ा गहरे हैं।

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