OS X "El Capitan" पर रत्न स्थापित नहीं कर सकते


182

मैं fakes3एल कैपिटन बीटा 5 पर मणि स्थापित और चलाने में सक्षम नहीं हूं ।

मैंने कोशिश की:

sudo gem install fakes3
ERROR:  While executing gem ... (Errno::EPERM)
    Operation not permitted - /usr/bin/fakes3

फिर मैंने इसे कोकोपोड्स तरीके से करने की कोशिश की। यह कोकोपोड्स के लिए काम करता था लेकिन फेक 3 के लिए नहीं।

mkdir -p $HOME/Software/ruby
export GEM_HOME=$HOME/Software/ruby
gem install cocoapods
[...]
1 gem installed
gem install fakes3
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

3
sudoरूबी को स्थापित करने, या रत्न बदलने के लिए उपयोग न करें । इसके बजाय रूबी को स्थापित करने और प्रबंधित करने के लिए आरएनबीवी या आरवीएम का उपयोग करें । उनके संबंधित साइटों पर निर्देशों को पढ़ें और उनका पालन करें। और, या तो मामले में, स्थापित करने के बाद, उपयोग न करें sudoजब तक आप यह नहीं समझते कि क्या बदल रहा है और आप इसे क्यों करना चाहते हैं।
टिन मैन

जवाबों:


333

डिस्क्लेमर: @theTinMan और अन्य रूबी डेवलपर्स अक्सर sudoजवाहरात स्थापित करते समय उपयोग नहीं करने और RVM जैसी चीजों की ओर इशारा करते हैं । रूबी विकास करते समय बिल्कुल सच है। आगे बढ़ो और उस का उपयोग करें।

हालांकि, हम में से कई बस कुछ द्विआधारी ऐसा होता है एक रत्न के रूप में वितरित किया जा करना चाहते हैं (उदाहरण के लिए fakes3, cocoapods, xcpretty...)। मैं निश्चित रूप से एक अलग रूबी के प्रबंधन के साथ परेशान नहीं करना चाहता। यहां आपके त्वरित विकल्प हैं:

विकल्प 1: सुडो का उपयोग करते रहें

sudoयदि आप चाहते हैं कि ये उपकरण विश्व स्तर पर स्थापित हों तो उपयोग करना संभवत: ठीक है।

समस्या यह है कि इन बायनेरिज़ को स्थापित किया गया है /usr/bin, जो एल कैपिटन के बाद से बंद सीमा है । हालाँकि, आप उन्हें /usr/local/binइसके बजाय स्थापित कर सकते हैं । यही कारण है कि होमब्रे ने अपना सामान स्थापित किया है, इसलिए यह संभवतः पहले से मौजूद है।

sudo gem install fakes3 -n/usr/local/bin

रत्न स्थापित हो जाएंगे /usr/local/binऔर आपके सिस्टम का प्रत्येक उपयोगकर्ता उनका उपयोग कर सकता है यदि यह उनके पेट में है

विकल्प 2: अपने घर निर्देशिका में स्थापित करें (बिना sudo)

निम्नलिखित में रत्न स्थापित किए जाएंगे ~/.gemऔर बायनेरिज़ को ~/bin(जिसमें आपको फिर अपने को जोड़ना चाहिए PATH) डाल दिया जाएगा ।

gem install fakes3 --user-install -n~/bin

इसे डिफ़ॉल्ट बनाएं

किसी भी तरह से, आप इन मापदंडों को अपने साथ जोड़ सकते हैं ~/.gemrcताकि आपको उन्हें याद न रखना पड़े:

gem: -n/usr/local/bin

अर्थात echo "gem: -n/usr/local/bin" >> ~/.gemrc

या

gem: --user-install -n~/bin

अर्थात echo "gem: --user-install -n~/bin" >> ~/.gemrc

( टिप: आप --no-documentरूबी डेवलपर प्रलेखन को छोड़ने के लिए भी फेंक सकते हैं ।)


आपको बहुत - बहुत धन्यवाद! मैंने काढ़ा और माणिक के नए संस्करणों के साथ संघर्ष किया है, लेकिन अभी भी / usr / बिन समस्या को पास नहीं कर सका। gem installसमस्या को हल करते समय वांछित पथ निर्दिष्ट करना ।
डैनियल सैडी

.gemrcहोना चाहिए gem: -n /usr/local/bin(-n के बाद एक स्थान की आवश्यकता)।
पॉल श्रेबर

@PaulSchreiber खैर, मैं इसे अब पांच महीने तक बिना स्पेस के इस्तेमाल कर रहा हूं। :) क्या आपको यकीन है?
nschum

2
विकल्प # 2 के लिए प्लस 1, जो एक व्यवहार्य और सुरक्षित विकल्प है यदि आप केवल एक अलग रूबी के बिना उन बायनेरी चाहते हैं। हमारे घर निर्देशिका जोड़े गए रत्नों के लिए सही स्थान हैं, और PATH के लिए एक त्वरित ट्विक उन्हें सुलभ बनाता है। मैं विकल्प # 1 की सिफारिश नहीं कर सकता क्योंकि कोई एक मणि को अधिलेखित कर देगा और उनके सिस्टम को तोड़ देगा रूबी या एप्पल का अंतर्निहित कोड जो इसका उपयोग करता है, और फिर वे एसओ पर एक और सवाल पूछेंगे कि इसे कैसे ठीक किया जाए।
टिन मैन

1
यह एक उत्कृष्ट उत्तर है, लेकिन शायद पुराना है। सिएरा पर, मुझे जिस विकल्प की आवश्यकता थी, वह था - स्थापना-डीआईआर / यूएसआर / स्थानीय / बिन
रयान बैलेन्टाइन

107

मेरे मामले में, मुझे ब्रू का उपयोग करके रूबी को फिर से स्थापित करना पड़ा । ऐसा लगता है कि समस्या को हल कर दिया है क्योंकि मैं फिर से जवाहरात स्थापित कर सकता हूं।

brew install ruby

इसके बाद, आपको लॉग आउट और लॉग इन करने की आवश्यकता है, या तो ग्राफिक रूप से या बस अपने टर्मिनल को पुनः आरंभ करने के लिए।


मेरे लिए अच्छा काम किया! मुझे लगता है यह बंडल माणिक स्थापित में किसी भी अजीबता से छुटकारा दिलाता है ... IMO यह सबसे अच्छा समाधान है।
n13

आप बता सकते हैं कि मेरे मशीन पर `` `कौन-सा रूबी` `के साथ चल रहा है जो देता है:` `$ जो -a रूबी / usr / स्थानीय / बिन / रूबी / usr / स्थानीय / बिन / रूबी / usr / bin / रूबी `` `क्यों / usr / स्थानीय / बिन पथ पर दो बार है - ऐसा लगता है brew install rubyकि यह वहाँ पहले से ही है, भले ही वहाँ डालता है। वर्तमान में रूबी इन / usr / लोकल को अपने रत्न को ऐसे स्थान पर स्थापित करने के लिए कॉन्फ़िगर किया गया है जिसे रूट एक्सेस की आवश्यकता नहीं है (जो वास्तव में सही अर्थ बनाता है)।
वॉलस्टप्रोग

7
PS आपको लॉगआउट करने और टर्मिनल के माध्यम से लॉग इन करने की आवश्यकता है या gem installअभी भी विफल रहेगा।
वॉलस्टप्रोग

मेरे लिए ठीक काम किया। मैंने इस एक के साथ स्वीकृत उत्तर को जोड़ दिया। आप दोनों को धन्यवाद
youssman

1
आपको लॉग आउट करने और फिर से लॉग इन करने की आवश्यकता नहीं है। बस rehashयह सुनिश्चित करने के लिए दौड़ें कि आपके शेल को पता चलता है कि rubyपहले एक नया है $PATH। यहां तक ​​कि यह उस स्थिति में आवश्यक नहीं होगा जहां आप rubyशेल सत्र में अभी तक नहीं चले थे ।
रेडन रोसबोरो

38

इसका कारण ओएस एक्स "एल कैपिटन" के नए सुरक्षा कार्य है। --user-installSudo का उपयोग करने के बजाय जोड़ने का प्रयास करें :

$ gem install *** --user-install

उदाहरण के लिए, यदि आप नकली 3 स्थापित करना चाहते हैं तो उपयोग करें:

$ gem install fake3 --user-install

हाँ! आपको बहुत - बहुत धन्यवाद!
लुई मैगनेटी

काढ़ा अप्रोच, क्लोजिंग टर्मिनल आदि के साथ 30 मिनट बिताने के बाद इस घोल में 10.10.5 पर काम किया गया, लेकिन फिर भी यकीन नहीं होता कि क्यों काढ़ा अप्रोच काम नहीं करता। कृपया स्पष्ट करें। कौन से रूबी पोस्ट काढ़ा स्थापित करें / usr / bin / माणिक
विक्रमवी

1
वाह अब मुद्दा है वापस मणि स्थापित करें redcarpet -v '3.3.4' --user-install थ्रोइंग एरर वार्निंग: आपके पास आपके PATH, रत्न में /User/user_name/.gem/ruby/2.0.0/bin नहीं है। निष्पादक नहीं चलेंगे। इससे पहले मुझे यह त्रुटि नहीं मिल रही थी
विक्रमावि

1
stackoverflow.com/questions/19579392/… , इससे मुझे समस्या हल करने में मदद मिली
vikramvi


19

आपको Xcode को नवीनतम (v7.0.1) में अपडेट करना होगा और सब कुछ सामान्य की तरह काम करेगा।

यदि आप नवीनतम Xcode स्थापित करने के बाद भी और फिर भी इस तरह से मणि स्थापित करने का प्रयास नहीं करते हैं:

sudo gem install -n /usr/local/bin GEM_NAME_HERE

उदाहरण के लिए:

sudo gem install -n /usr/local/bin fakes3
sudo gem install -n /usr/local/bin compass
sudo gem install -n /usr/local/bin susy

10

OS X El Capitain में अपग्रेड करते समय लगता है, / usr / स्थानीय निर्देशिका को कई तरीकों से संशोधित किया गया है:

  1. उपयोगकर्ता अनुमतियां रीसेट की जाती हैं (यह होमब्रे का उपयोग करने वाले लोगों के लिए भी एक समस्या है)
  2. बायनेरिज़ और सिम्लिंक को हटा दिया गया या बदल दिया गया

[संपादित करें] इसमें एक प्रारंभिक बात भी है: Xcode का उन्नयन ...

# 1 के लिए समाधान:

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

यह /usr/localनिर्देशिका पर अनुमतियों को ठीक करेगा जो तब दोनों gem installऔर brew install|link|...कमांड को ठीक से काम करने में मदद करेगा ।

# 2 का समाधान:

रूबी आधारित मुद्दे

सुनिश्चित करें कि आपने /usr/localनिर्देशिका की अनुमति तय कर ली है (ऊपर # 1 देखें)

पहले अपने रत्न का उपयोग करके पुनः स्थापित करने का प्रयास करें:

sudo gem install <gemname>

ध्यान दें कि यह निर्दिष्ट मणि का नवीनतम संस्करण स्थापित करेगा।

यदि आप पिछड़े-अनुकूलता के मुद्दों का सामना नहीं करना चाहते हैं, तो मेरा सुझाव है कि आप सबसे पहले यह निर्धारित करें कि आप किस रत्न को प्राप्त करना चाहते हैं और फिर उसे फिर से इंस्टॉल करें -v version। यह सुनिश्चित करने के लिए नीचे देखें कि सिस्टम को capistrano का नया संस्करण नहीं मिलेगा।

$ gem list | grep capistrano
capistrano (3.4.0, 3.2.1, 2.14.2)
$ sudo gem install capistrano -v 3.4.0

आधारित मुद्दों काढ़ा

काढ़ा अपडेट करें और अपने सूत्रों को अपग्रेड करें

$ brew update
$ brew upgrade

आपको उनमें से कुछ को मैन्युअल रूप से फिर से लिंक करना पड़ सकता है

$ brew link <formula>

3

जैसा कि कहा गया है, "एल कैपिटन" के बाद से यह मुद्दा मैक ओएसएक्स के सुरक्षा फ़ंक्शन से आता है।

डिफ़ॉल्ट सिस्टम रूबी का उपयोग करते हुए, इंस्टॉल प्रक्रिया उस /Library/Ruby/Gems/2.0.0निर्देशिका में होती है जो उपयोगकर्ता के लिए उपलब्ध नहीं है और त्रुटि देता है।

आप कमांड के साथ अपने रूबी वातावरण मापदंडों पर एक नज़र डाल सकते हैं

$ gem env

वहाँ एक इंस्टीट्यूशन डाइरेक्टरी और एक USER इन्स्टालरेशन डाइरेक्टरी है। डिफ़ॉल्ट स्थापना निर्देशिका के बजाय उपयोगकर्ता स्थापना निर्देशिका का उपयोग करने के लिए, आप --user-installपैरामीटर का उपयोग कर सकते हैं इसके बजाय sudoऐसा करने का अनुशंसित तरीका नहीं है।

$ gem install myGemName --user-install

प्रक्रिया में अब कोई अधिकार नहीं होना चाहिए। रत्नों को तब उपयोगकर्ता निर्देशिका में स्थापित किया जाता है:~/.gem/Ruby/2.0.0/bin

लेकिन स्थापित रत्नों को उपलब्ध करने के लिए, यह निर्देशिका आपके मार्ग में उपलब्ध होनी चाहिए। के अनुसार रूबी के पूछे जाने वाले प्रश्न , आप के लिए निम्न पंक्ति जोड़ सकते हैं अपने ~/.bash_profileया~/.bashrc

if which ruby >/dev/null && which gem >/dev/null; then
    PATH="$(ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH"
fi

फिर अपने टर्मिनल को बंद करें और पुनः लोड करें .bash_profileया अपने या .bashrc( . ~/.bash_profile) को पुनः लोड करें


2

यह वह उपाय है जिसका मैंने उपयोग किया है:

नोट: यह फिक्स कम्पास के लिए है जैसा कि मैंने इसे एक अन्य एसओ प्रश्न पर लिखा था, लेकिन मैंने सभी टर्मिनल प्रक्रियाओं के लिए कार्यक्षमता को पुनर्स्थापित करने के लिए एक ही प्रक्रिया का उपयोग किया है, जाहिर है कि आप जो रत्न स्थापित कर रहे हैं वह अलग है, लेकिन प्रक्रिया समान है।

मेरी भी यही समस्या थी। यह Apple के सिस्टम इंटिग्रिटी प्रोटेक्शन (SIP) को लागू करने के कारण है। आपको पहले अक्षम करना होगा ...

वसूली मोड में रिबूट:

रिबूट और कमांड + आर को तब तक दबाए रखें जब तक कि आप सेब का लोगो न देख लें।

एक बार बूट उपयोगिता का चयन करें > शीर्ष बार से टर्मिनल

प्रकार: csrutil disable

फिर टाइप करें: reboot

एक बार रिबूट हो गया

टर्मिनल खोलें और कमांड दर्ज करें:

sudo gem uninstall bundler

sudo gem install bundler

sudo gem install compass

sudo gem install sass

sudo gem update --system

व्यक्तिगत रत्नों को जो विफल हो गया था, उन्हें ठीक करने की आवश्यकता है, इसलिए प्रत्येक के लिए निम्न कार्य करें:

मेरी मशीन पर यह पहली निर्भरता काम नहीं कर रही थी इसलिए मैंने इसे सूचीबद्ध किया :

sudo gem pristine ffi --version 1.9.3

उन रत्नों की सूची के माध्यम से आगे बढ़ें जिन्हें मरम्मत की आवश्यकता है। सभी में आप इसे ठीक करने के बारे में 10 मिनट देख रहे हैं, लेकिन आपके पास कम्पास के काम करने के लिए टर्मिनल कमांड होंगे।

स्क्रीनशॉट


2

यदि आप जिस रत्न को स्थापित करने की कोशिश कर रहे हैं, उसके लिए xml पुस्तकालयों की आवश्यकता है, तो यह प्रयास करें:

sudo gem install -n /usr/local/bin  <gem_name> -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib/

विशेष रूप से, मैं OS X El Capitan पर nokogiri रत्न v 1.6.8 स्थापित करते समय एक समस्या में भाग गया

और यह अंत में मेरे लिए काम किया:

sudo gem install -n /usr/local/bin  nokogiri -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib/

यह सुनिश्चित करने के लिए कि आपके पास libxml2 है और libxslt स्थापित है, आप यह कर सकते हैं:

brew install libxml2 libxslt
brew install libiconv

और फिर यह सुनिश्चित करने के लिए जांचें कि आपके पास xcode कमांड लाइन टूल स्थापित है:

xcode-select --install 

इस त्रुटि को वापस करना चाहिए:

xcode-select: error: command line tools are already installed, use "Software Update" to install updates

1

RVM को पुनर्स्थापित करना मेरे लिए काम करता है, लेकिन मुझे अपने सभी रत्नों को बाद में पुनः स्थापित करना पड़ा:

rvm implode
\curl -sSL https://get.rvm.io | bash -s stable --ruby
rvm reload

0

मैं एल कैपिटन को स्थापित करने के बाद उसी मुद्दे पर भाग गया, मैंने एक सिम्फनी प्रोजेक्ट में सैस और कम्पास स्थापित करने की कोशिश की, निम्नलिखित कमांड ने निम्नलिखित त्रुटि वापस की:

$ सुडो रत्न स्थापित कम्पास

त्रुटि: कम्पास को स्थापित करने में त्रुटि: त्रुटि: रत्न मूल विस्तार का निर्माण करने में विफल।

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb 

ffi.h ... /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:434.in 'try_do' के लिए जाँच: कंपाइलर जनरेट करने में विफल रहा निष्पादनीय फाइल। (रनटाइम त्रुटि)

तो मैं तो के साथ सैस स्थापित करने की कोशिश की: $ sudo मणि स्थापित सैस

एक ही त्रुटि संदेश मिला, कुछ गोलगप्पे के बाद मैं निम्नलिखित कमांड का उपयोग करके सैस स्थापित करने में कामयाब रहा:

$ सुडो मणि स्थापित -n / usr / स्थानीय / बिन सैस

ऊपर ने मेरे लिए सैस लगाने का काम किया लेकिन कंपास लगाने का काम नहीं किया। मैंने पढ़ा कि किसी ने कहीं xcode का एक उदाहरण खोला था, फिर उसे फिर से बंद कर दिया, फिर उसी कमांड को सफलतापूर्वक चलाया जिसके बाद उनके लिए काम किया। मैंने xcode खोलने का प्रयास किया लेकिन एक संदेश के साथ कहा गया कि स्थापित किया गया xcode का संस्करण El Capitan के साथ संगत नहीं था। इसलिए मैंने फिर ऐप स्टोर से xcode अपडेट किया, निम्नलिखित कमांड को फिर से चलाया जो इस बार सफलतापूर्वक चला:

$ सुडो मणि स्थापित -n / usr / स्थानीय / बिन कम्पास

मैं तब $ कम्पास init चलाने में सक्षम था

मेरे पास अब मेरे सभी रत्न काम कर रहे हैं और कुछ प्यारे सास सामान बनाने के लिए आगे बढ़ सकते हैं :)



-1

मैं sudo के साथ सामान स्थापित करना पसंद नहीं करता। एक बार जब आप sudo से शुरू करते हैं तो आप रोक नहीं सकते हैं।

रत्न निर्देशिका को अनुमति देने का प्रयास करें।

sudo chown -R $(whoami) /Library/Ruby/Gems/2.0.0

2
रूबी रत्न प्रणाली के स्वामित्व में परिवर्तन न करें। मैक ओएस जब कुछ भी अपडेट करने का प्रयास करता है तो यह समस्या पैदा कर सकता है।
टिन मैन

-1
sudo chown -R $(whoami):admin /usr/local

वह अनुमति वापस दे देगा (Homebrew रूबी वहाँ स्थापित करता है)


2
यदि आप यह आदेश चलाते हैं और यह आपके MySQL डेटा की अनुमतियों को गड़बड़ कर देता है तो आपको अनुमतियाँ वापस सेट करने की आवश्यकता होगी। ऐसे। stillatmylinux.com/not-every-linux-command-is-good-for-you
stillatmylinux
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.