2013-02-18 4 views
5

मैं हाल ही में जाओ स्थापित इनकार किया। ऐसा लगता है कि इंस्टॉल ठीक हो गया है। हालांकि मैं एक परीक्षण "हैलो दुनिया" स्क्रिप्ट बनाया है, और मैं निम्नलिखित आउटपुट प्राप्त जब मैं चलाते हैं।जाओ कांटा/कार्यकारी अनुमति CentOS 6.3 के साथ हमारे सर्वर पर त्रुटि

fork/exec /tmp/go-build967564990/command-line-arguments/_obj/a.out: permission denied 

अब चल रहा है env या अन्य जाने के आदेश काम करने लगते हैं। सबसे पहले मुझे लगा कि यह एक अनुमति मुद्दा था, हालांकि रूट उपयोगकर्ता के रूप में चल रहा है, मुझे वही चीज़ मिलती है। एक

उत्तर

10

बस अनुमान लगा: आपका nix शायद/tmp में कार्यक्रमों को क्रियान्वित सुरक्षा कारणों से अक्षम करता है। यह CentOS में कॉन्फ़िगर करने योग्य हो सकता है, लेकिन मुझे यह नहीं पता।

वैकल्पिक समाधान: यह आप एक जाओ कार्यक्रम पर अमल करने (स्क्रिप्ट के रूप में है जो के रूप में सी एक स्क्रिप्ट है) go run कोशिश कर रहे हैं लगता है। ($GOPATH=~, आसान संभावना यह सोचते हैं) के बजाय एक सामान्य निर्माण, यानी बजाय

me:~/src/foo$ go run main.go 

की कोशिश

me:~/src/foo$ go build # main.go should not be necessary here 
me:~/src/foo$ ./foo 

यह बात का उपयोग करेगा/tmp-जो कुछ भी बाइनरी बनाने के लिए, IIRC, लेकिन यह प्रयास करें वहां से इसे निष्पादित करने का प्रयास नहीं करेगा।

पुनश्च: करो रूट के रूप में इन कमांड चलाएँ नहीं। सही सेटअप के साथ इसकी कोई ज़रूरत नहीं है।

+2

@ user387049, लग रहा है jnml तरह सही है: चल 'mount' कोशिश करते हैं और देखते हैं'/tmp' के लिए उत्पादन 'noexec' विकल्प का उल्लेख है। – kostix

+0

चल माउंट बताते हैं कि/tmp noexec विकल्प था किया था। इसे अक्षम करने, निर्माण करने और फिर समस्या को ठीक करने के लिए नहीं चाहते हैं। धन्यवाद! – user387049

+0

मैं एक त्वरित जाओ स्क्रिप्ट का निर्माण हो जाए और उसके बाद के बाद कार्यक्रम अधिकारियों बना दिया। मैं टूटा हुआ लिंक – richoffrails

-4

की कोशिश कर रहा पर विचार करें:

sudo mount -o remount exec /tmp 
+0

में दो चरणों को कम करने के पसंद करते हैं एक आकर्षण – codecraig

8

मैं आज इस मुद्दे का सामना करना पड़ा लेकिन इसके बाद के संस्करण समाधान काम नहीं किया। मेरा बस चलाकर तय किया गया था:

$ export TMPDIR=~/tmp/ 

तो मैं साथ चलाने के लिए स्क्रिप्ट प्राप्त करने में सक्षम था:

$ go run hello.go 
hello, world 

केवल नकारात्मक पक्ष यह है आप export TMPDIR हर बार जब आप एक आवेदन चलाना चाहते हैं चलाने के लिए है ।

Adam Goforth

+1

के लिए वोट नीचे एक :) https://github.com/rjbishop/gobe – victorkurauchi

+0

की तरह काम किया आप हर बार जब आप चलाना चाहते हैं निर्यात करने के लिए की जरूरत नहीं है .. बस डाल अपने ~/.profile या ~/.bashrc –

+0

यदि आप अन्य कार्यक्रमों को प्रभावित करने से बचना चाहते हैं, तो आप 'उर्फ जा सकते हैं = 'TMPDIR = ~/tmp go'' पर निर्यात – kbolino

0

को कुडोस fix this issue on my Chromebook करने के लिए मैं बस निष्पादन योग्य के रूप में ~/tmp remounted। ऐसा करने में सुरक्षा के प्रभाव हो सकता है लेकिन अन्य प्लेटफार्मों पर काम करता है go run के बाद से मैं शायद समझ यह है कि बुरा (विशेष रूप से एक स्थानीय देव मशीन पर) नहीं है:

sudo mount -i -o remount,exec /tmp/ 

मैं अपने .bash_profile स्क्रिप्ट में जोड़ा है।

संबंधित मुद्दे