2008-11-11 12 views
6

पर साझा किया गया है, तो मेरे साझा होस्ट ने गिट प्रदान नहीं किया है, इसलिए मैंने इसे ~/bin में बनाया और स्थापित किया है। जब मैंने इसे चलाया, तो मुझे अधिकांश आदेशों पर निम्न त्रुटि मिली, हालांकि वे सफल रहे। मेरी deploy.rb कोरिमोट गिट एक मानक मानक

default_run_options[:pty] = true

, लेकिन फिर मैं इस त्रुटि है, जो ब्लॉक तैनाती मिलती है:

stdin: is not a tty

मैं जोड़कर इस समस्या का समाधान कर सकते हैं :

sh: git: command not found

कैसे मैं दोनों की त्रुटियां सुधारने में कर सकते हैं?

मैंने "PATH=$PATH:$HOME/bin" के साथ ~/.ssh/पर्यावरण फ़ाइल जोड़ने की कोशिश की (और इसका उपयोग करने के लिए sshd_config बदल रहा है) लेकिन यह कुछ भी नहीं किया।

ऐसा लगता है कि कैपिस्ट्रानो द्वारा जो भी खोल उपयोग किया जा रहा है वह दूरस्थ सर्वर पर ~/.bashrc या ~/.bash_profile का उपयोग नहीं कर रहा है।

कोई विचार रिमोट मशीन पर पथ कैसे सेट करें?

अन्य जानकारी: मैं स्थानीय रूप से ओएस एक्स का उपयोग कर रहा हूं, और साझा सर्वर साइट 5 पर लिनक्स है।

+0

कृपया इस मुद्दे को हल करने के लिए उत्तर दें। – cfx

उत्तर

2

एक त्वरित समाधान का अपने deploy.rb फ़ाइल में निम्न स्थापित करने के लिए है:

set :deploy_via, :copy 

यह चेकआउट अपनी खुद की मशीन पर होने का कारण होगा और उसके बाद तैनाती सर्वर में कॉपी किया।

3

तुम इतनी तरह git करने के लिए पूरा पथ निर्दिष्ट करने के लिए सक्षम होना चाहिए:

set :scm_command, "/home/your_cap_runner_user/bin/git"

मैं खुद के लिए बाहर इस प्रयास नहीं किया है - git.rb के लिए स्रोत कोड में दस्तावेज में यह पाया Capistrano में ही।

+0

जो इतने लंबे समय तक काम करता है क्योंकि स्थानीय और रिमोट गिट कमांड दोनों एक ही पथ में हैं –

14

धन्यवाद, चू - आपने मुझे सही रास्ते पर रखा है।

बस उपयोग कर रहे हैं: set :scm_command, "~/bin/git"
ने मुझे अभी भी त्रुटियां दी हैं, क्योंकि मेरा स्थानीय गिट उस स्थान पर नहीं है।
set :scm_command, "~/bin/git"
set :local_scm_command, "/usr/local/bin/git"

1

यह एक बहुत मदद है, जैसा कि मैंने मूल पोस्टर के रूप में ही मुद्दे में चल रहा था:

हालांकि, निम्नलिखित काम करने के लिए, और मेरे मुद्दों को हल करने लगता है।

"इससे पहले कि" लक्षण:

  • रन टोपी तैनाती: सेटअप (सफल)
  • टोपी तैनाती भाग गया: जाँच (विफल रहता है, के साथ 'Git आदेश नहीं मिला')

मैं अब जोड़ा गया सेट: scm_command, "~/bin/git" मेरी deploy.rb फ़ाइल में।

  • टोपी तैनाती भाग गया: चेक (सफल)
  • दौड़ा टोपी तैनाती: ठंड (विफल रहता है, तो निम्न त्रुटि के साथ)

    : 97: सेटअप (सफल)

  • टोपी तैनाती भाग गया में `` ': इस तरह के कोई फ़ाइल या निर्देशिका - ~/bin/Git जानकारी [email protected]: quintar/यूरोपीय संघ reka.git -rHEAD (errno :: ENOENT)

तो यह की तरह लग रहा' Git ' मैं एस मान्यता प्राप्त है, लेकिन मेरे deploy.rb में शामिल भंडार को छोड़ दिया गया है?

8

समस्या आप

default_run_options[:pty] = true 

जो कि आपके .bash_profile या अपने सामान्य खोल init फ़ाइल को चलाने नहीं दी जाएगी, जिस स्थिति जब आप इसे गलत पर सेट नहीं है इसका मतलब है निर्धारित किया है वह यह है कि - लेकिन तब आपको समस्या होगी जब वह आपको पासवर्ड के लिए पूछना चाहता है।

इस समस्या को हल करने के लिए, यदि आप स्वयं अपनी तैनाती फ़ाइल में अपने पथ वातावरण चर सेट कर सकते हैं:

default_environment['PATH'] = "/your/path/to/git:/and/any/other/path/you/need" 
+0

आपका डिफ़ॉल्ट_एन्वायरमेंट सुझाव मुझे रेल रंबल 2010 के लिए एक बड़ा सिरदर्द मिला है। धन्यवाद! – Jared

3
stdin: is not a tty 

ऐसा इसलिए है क्योंकि CPanel के अपने साझा मेजबान पर स्थापित है। यह वैश्विक /etc/.bashrc फ़ाइल में "mesg y" निष्पादित करता है जो आपके ~/.bashrc में शामिल है। तो आप बस शामिल करने पर टिप्पणी कर सकते हैं। http://webhostingneeds.com/Git_stdin_is_not_a_tty

0

~/.ssh/पर्यावरण फ़ाइल एक खोल द्वारा निष्पादित नहीं कर रहा है:

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