2009-03-02 34 views
8

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

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

यदि यह कोई फर्क पड़ता है, तो स्रोत जीसीसी का उपयोग करके सी में है। वरीयता के अवरोही क्रम में, मेरे पास मेरे डेस्कटॉप पर Emacs, Vi, और Netbeans हैं, और अंतिम उपाय के लिए एक और आईडीई स्थापित करने के लिए तैयार हूं।

उत्तर

13

एक विकल्प TRAMP दूरदराज के संपादन पैकेज (Emacs 22 और नए में निर्मित उपयोग करने के लिए है, और आप इसे पुराने संस्करणों में स्थापित कर सकते हैं)। हर बार जब आप अपनी फाइल को सहेजते हैं, तो Emacs लिनक्स मशीन पर एसएसएच (डिफ़ॉल्ट रूप से; निश्चित रूप से प्रत्येक विवरण पूरी तरह विन्यास योग्य) पर अपनी सामग्री भेजता है। M-x compile और M-x grep जैसे कमांड ट्रैम्प-जागरूक हैं और दूरस्थ होस्ट पर निष्पादित हैं।

0

एक समाधान में कुछ प्रकार के मतदान ऐप होने की संभावना है जो फाइलों पर टाइमस्टैम्प की जांच करता है कि वे बदल गए हैं या नहीं। यदि वे इसे सहेजने के लिए प्राप्त करते हैं और फिर संकलित करते हैं। किंडा इस तरह हैकिस लेकिन यह काम करने योग्य होगा।

6

मैं आपके पर्यावरण के लिए निरंतर एकीकरण की तलाश में हूं। इस तरह आप स्रोत नियंत्रण में परिवर्तन कर सकते हैं, और लिनक्स बॉक्स को बिल्ड सर्वर के रूप में कार्य कर सकते हैं। आप परीक्षणों से संबंधित परीक्षण और अन्य संबंधित रोचक सामग्री ले सकते हैं जिन्हें आप चलाने के लिए चाहते हैं।

अद्यतन 1: इसके अलावा यह आपके लिए काम कर सकते हैं: http://metamod-p.sourceforge.net/cross-compiling.on.windows.for.linux.html (यह भी लायक है समान उपकरण पर कुछ खोज करने की एक कोशिश)

+0

लेकिन मैं निर्माण के लिए चेक इन पर निर्भर नहीं होना चाहता; मैं यह सुनिश्चित करने के लिए पहले बनाना चाहता हूं कि यह चेक इन से पहले अच्छा है। –

2

आप अपने लिनक्स और विंडोज मशीनों के बीच एक डिस्क को साझा करने के सांबा का उपयोग कर की कोशिश कर सकते या ऐसा कुछ। फिर आप अपनी स्थानीय मशीनों पर संपादित कर सकते हैं और फ़ाइलों को दूरस्थ मशीन पर तुरंत दिखाई देगा क्योंकि ड्राइव दोनों के लिए दृश्यमान होगी।

जहां मैं काम करता हूं हमारे पास एनएफएस पर सभी फाइलें हैं जो सभी लिनक्स मशीनों और विंडोज मशीनों से सुलभ है। मुझे नहीं पता कि इसे स्थापित करना कितना मुश्किल है क्योंकि मैं एक बड़े निगम में काम करता हूं और आईटी मुझसे दूर है, लेकिन सरल डिस्क साझा करना बहुत सरल होना चाहिए।

1

क्या आप सीधे रिमोट मशीन पर फ़ाइलों को सहेजने के लिए एक सांबा शेयर का उपयोग कर सकते हैं? मैं अक्सर इस तरह PHP करता हूँ।

फिर रिमोट बॉक्स पर कमांड चलाने के लिए बस एक पुटी विंडो खोलें।

या मैं कुछ याद आ रही है?

2

आप विंडोज़ पर एक्स सर्वर क्यों शुरू करते हैं? निजी तौर पर, मैं वीएमवेयर के साथ एक लिनक्स वीएम स्थापित करता हूं या जो भी आपकी पसंदीदा वीएम तकनीक है (वीएमवेयर मुफ्त है और अच्छी तरह से काम करता है)। फिर आप जो भी लिनक्स वितरण चाहते हैं उसे चुनें। आपको बस बहुत बुनियादी कार्यों की आवश्यकता है, ज्यादातर मानक "टूलचेन"। आप सेंटोस, उबंटू, फेडोरा, डेबियन, जो कुछ भी चुन सकते हैं। मैं आमतौर पर सेंटोस या डेबियन का उपयोग करता हूं। इसे सेट करें, और केवल अपने वीएम में पुटी का उपयोग करें। वहां से, आप अपने रिमोट सर्वर पर फ़ाइलों को स्कैन कर सकते हैं और आगे भी। इस तरह आपको सिग्विन या एक्स सर्वर या उनमें से किसी से परेशान करने की आवश्यकता नहीं है।

5

अन्य ने सैम्बा का सुझाव दिया है जो आपके लिनक्स बॉक्स पर संभव नहीं हो सकता है। एसएसएच पर एक दूरस्थ निर्देशिका को माउंट करने के लिए अपने विंडोज बॉक्स पर Dokan SSHFS का उपयोग करने का एक अच्छा विकल्प है।

24

यह निश्चित रूप से विम में करने योग्य है। आप रिमोट फाइलों को संपादित करने के लिए vp के भीतर scp: // प्रोटोकॉल का उपयोग कर सकते हैं, और एक स्थानीय प्रतिलिपि लिखने वाले कमांड को सेट कर सकते हैं। आप यह भी बदल सकते हैं कि कौन सा प्रोग्राम विम उपयोग करता है: अपने सर्वर पर इसके बजाय एसएसएच बनाना।

आपको यह दर्द रहित रखने के लिए अपनी एसएसएच-कुंजी सेट अप करने की आवश्यकता होगी (अन्यथा आप हर समय अपना पासवर्ड दर्ज करेंगे) लेकिन यह काफी आसान है।

एक और विकल्प दूरस्थ रूप से संपादन करने के बजाय, आपके कमांड कमांड के हिस्से के रूप में रिमोट रेपो को धक्का देना होगा।


संपादित करें:

पहले, vim भीतर scp:// प्रोटोकॉल का उपयोग। :help netrw-start से (या :help scp से पेज नीचे)

Netrw "पारदर्शी" यूआरएल (देखें | netrw पारदर्शी |) का उपयोग अन्य मशीनों पर फ़ाइलों के संपादन का समर्थन करता। इसका एक उदाहरण के रूप में, मान लीजिए कि आपके पास किसी अन्य मशीन पर खाता है; यदि आप एसपीपी का उपयोग कर सकते हैं, तो कोशिश करें:

vim scp://hostname/path/to/file 

एसएसएच/एसपीपी का उपयोग करना आसान बनाना चाहते हैं? चेक आउट | netrw-ssh-hack |

तुम भी :edit आदेशों में scp:// रास्तों का उपयोग कर सकते हैं, या वास्तव में कहीं भी है कि आप एक सामान्य पथ इस्तेमाल कर सकते हैं।

और उल्लेख किया :help netrw-ssh-hack से, कैसे आपकी SSH कुंजियां स्थापित करने के लिए पर निर्देश:

में सुधार ब्राउजिंग * netrw-listhack * * netrw-ssh-हैक * {{{2

विशेष रूप से रिमोट डायरेक्टरी ब्राउजर के साथ, लगातार पासवर्ड दर्ज करना थकाऊ है।

लिनक्स/यूनिक्स प्रणालियों के लिए, पुस्तक "लिनक्स सर्वर हैक्स - 100 औद्योगिक ताकत सुझावों & उपकरण" रोब Flickenger द्वारा (ओ रेली, आईएसबीएन 0-596-00461-3) की स्थापना के लिए एक टिप देता है कोई -स्क्रिप्ट एसएसएच और एसपीपी और संबंधित सुरक्षा मुद्दों पर चर्चा करता है। यह http://hacks.oreilly.com/pub/h/66, पर उपलब्ध होता था लेकिन जाहिर है कि पता अब कुछ "हैकज़िन" पर रीडायरेक्ट किया जा रहा है। मुझे लगता है कि लेख पर और बेन श्मिट से एक संचार के आधार पर एक सारांश का प्रयास करेंगे:

(1) स्थानीय मशीन (SSH ग्राहक) पर एक सार्वजनिक/निजी कुंजी युग्म उत्पन्न करें:

ssh-keygen -t rsa 

(संकेतों के अनुसार ~/.ssh/id_rsa में फ़ाइल को सहेजने)

(2) बस जब कोई पदबंध के लिए पदबंध (दो बार) के लिए कहा मारा। यदि आप पासफ्रेज़ का उपयोग करते हैं, तो आपको एसएसएच-एजेंट का उपयोग करने की भी आवश्यकता होगी ताकि आपको केवल प्रति सत्र एक बार पासफ़्रेज़ टाइप करना होगा। यदि आप पासफ्रेज का उपयोग नहीं करते हैं, तो बस अपने स्थानीय कंप्यूटर पर लॉग ऑन करना या किसी भी तरह से कीफाइल तक पहुंच प्राप्त करना किसी भी एसएसएच सर्वर तक पहुंचने के लिए पर्याप्त होगा जिसमें लॉगिन के लिए अधिकृत कुंजी है।

~/.ssh/id\_rsa 
    ~/.ssh/id\_rsa.pub 

(4) लक्षित मशीन पर (ssh सर्वर):

(3) यह दो फ़ाइलें बनाता है

cd 
mkdir -p .ssh 
chmod 0700 .ssh 

(5) अपने स्थानीय मशीन (SSH ग्राहक) पर: (एक पंक्ति)

ssh {serverhostname} cat '>>' '~/.ssh/authorized\_keys2' < ~/.ssh/id_rsa.pub 

या, OpenSSH के लिए, (एक पंक्ति)

ssh {serverhostname} cat '>>' '~/.ssh/authorized\_keys' < ~/.ssh/id_rsa.pub 

आप

ssh {serverhostname} 

साथ इसे बाहर का परीक्षण कर सकते हैं और आप आगे टाइप करने के लिए कुछ चाहिए बिना सर्वर मशीन पर लॉग इन किया जाना चाहिए।

आप पासफ़्रेज़ का उपयोग करने का फैसला किया है, तो कार्य करें:

ssh-agent $SHELL 
ssh-add 
ssh {serverhostname} 

आप अपने कुंजी पासफ़्रेज़ के लिए संकेत दिया जाएगा जब आप ssh-जोड़ने उपयोग करें, लेकिन नहीं बाद में आप ssh का उपयोग करते हैं। vim के साथ प्रयोग के लिए, यदि आप

ssh-agent vim 

उपयोग कर सकते हैं और, जब अगले vim भीतर, का उपयोग

:!ssh-add 

वैकल्पिक रूप से, आप ssh-एजेंट टर्मिनल आप की योजना बना रहे करने के लिए पर में vim चल आवेदन कर सकते हैं :

ssh-agent xterm & 

और जब भी आपको आवश्यकता हो तो ssh-add करें।

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

किंग्स्टन फंग एक और तरीका है के बारे में लिखा लगातार पासवर्ड दर्ज करने के लिए की आवश्यकता होगी, से बचने के लिए: SCP के लिए हर बार पासवर्ड में टाइप करने की जरूरत से बचने के लिए

के लिए, आप करने के लिए डॉक्स में एक हैक प्रदान एक गैर पासवर्ड एसएसएच खाता सेट अप करें। मुझे ऐसा करने का बेहतर तरीका मिला: मैं एक नियमित एसएसएच खाता का उपयोग कर सकता हूं जो पासवर्ड का उपयोग करता है, बिना किसी पासवर्ड के में कुंजी की आवश्यकता के बिना सामग्री तक पहुंचने के लिए। यह सुरक्षा और सुविधा के लिए अच्छा है। मैंने एसएसएच सार्वजनिक कुंजी प्राधिकरण + एसएसएच-एजेंट की कोशिश की, इसे कार्यान्वित किया, और यह काम करता है!यहाँ के निर्देश के साथ दो लिंक कर रहे हैं:

दूरस्थ सिस्टम पर बनाने के लिए, आप करने के लिए अपने makeprg चर सेट करने के लिए एक ssh मेकअप करना की जरूरत है। :help makeprg

": make" कमांड के लिए उपयोग करने के लिए प्रोग्राम। देखें |: make_makeprg | इस विकल्प में '%' और '#' वर्ण हो सकते हैं, जिन्हें वर्तमान और वैकल्पिक फ़ाइल नाम तक बढ़ाया गया है। |: _% | |: _ # | पर्यावरण चर का विस्तार किया गया है।: Set_env | देखें | विकल्प-बैकस्लैश | रिक्त स्थान और बैकस्लाश सहित।

ध्यान दें कि '|' दो बार बच जाना चाहिए: एक बार "सेट" के लिए और एक बार कमांड की व्याख्या के लिए। जब आप एक फिल्टर "myfilter" कहा जाता है का उपयोग इस तरह यह कार्य करें:

:set makeprg=gmake\ \\\|\ myfilter 

प्लेसहोल्डर "$ *" (यहां तक ​​कि कई बार) जहां तर्क शामिल किया जाएगा निर्दिष्ट करने के लिए दिया जा सकता है उदाहरण के लिए,:

:set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*} 

यह विकल्प किसी मॉडल से सेट नहीं किया जा सकता है। या सैंडबॉक्स में, सुरक्षा कारणों से।

+0

मुझे scp: // प्रोटोकॉल का उपयोग करने के बारे में विवरण देखना अच्छा लगेगा। Ssh-keys निर्देशों के लिए एक सूचक शामिल करने के लिए भी अच्छा हो सकता है। – dreeves

+0

'एसपीपी' पर विम के मैन पेज की प्रतिलिपि बनाने के लिए धन्यवाद, लेकिन यह नहीं है कि लड़के की क्या ज़रूरत है। उसे अपनी सभी फाइलों के लिए ऐसा करना होगा। किसी भी परियोजना पर दूरस्थ रूप से काम करने के तरीके पर कोई विचार? –

+0

एड्रियान-गिबोयर: अच्छा, व्यक्तिगत रूप से, मैं बस मशीन पर ssh, tmux या स्क्रीन आग लगाना होगा, और इस तरह से दूरस्थ रूप से काम करेंगे। लेकिन पूछताछकर्ता ने विशेष रूप से कहा कि वे स्थानीय रूप से विकसित करना चाहते हैं। इसके अलावा, आप vim में दूरस्थ निर्देशिका लोड करने के लिए 'scp: //' उपसर्ग का उपयोग कर सकते हैं, और फ़ाइल व्यूअर का उपयोग करके यह चुनने के लिए कि आप किसके साथ काम करना चाहते हैं। बहुत आसान। – rampion

1

एक स्रोत नियंत्रण प्रणाली सेट करें और इसका उपयोग करें। फिर आप अपने आईडीई में सहेजने के बाद ही प्रतिबद्ध हो सकते हैं, और सर्वर पर आप कुछ भी कर सकते हैं।

इस परीक्षण को गति प्रदान कर सकते हैं, निर्माण, आप के लिए किसी भी त्रुटि मेल ...

0

मैं व्यक्तिगत रूप से PuTTY के साथ उपयोग करता हूं। मैं XMing चल रहा है जबकि PUTTY का उपयोग कर ssh। मैं कोई भी संपादक खोल सकता हूं (gvim, emacs, gedit, आदि) और यह दिखाई देगा।

आप पुट्टी पर कुछ सेटअप करने के लिए हालांकि की आवश्यकता होगी: विस्तृत कनेक्शन

  • X11 पर SSH विस्तृत
  • क्लिक करें
  • चेक

    1. पाठ में "X11 अग्रेषण सक्षम करें" प्रदर्शन स्थान के लिए फ़ील्ड, दर्ज करें (उद्धरण के बिना): "localhost: 0"
    2. सत्र सहेजें और कनेक्ट करें।
  • संबंधित मुद्दे