2012-03-01 12 views
5

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

समस्या यह है कि यह बाइनरी निष्पादन योग्य नहीं है (इसके फ़ाइल मोड में कोई 'x' नहीं है ... मुझे पता है कि इसे जावा के साथ सेट करना संभव है लेकिन मुझे एक सामान्य तरीका चाहिए।

क्या आपके पास कोई विचार है कि तैनाती को कैसे अच्छी तरह से किया जाए?

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

+0

एक अच्छा तरीका से आपका क्या मतलब है? यदि आपके पास संग्रह में जाने वाली फ़ाइलों पर नियंत्रण है तो बस सुनिश्चित करें कि इसे पैक करने से पहले बाइनरी के उचित तरीके हैं। – Perception

+0

@ धारणा: सभी ज़िप कंप्रेसर यूनिक्स फ़ाइल मोड बिट्स को संग्रहीत करने का समर्थन नहीं करते हैं। और सभी ज़िप डिकंप्रेसर इसे बहाल करने का समर्थन नहीं करते हैं ... – thkala

+0

@thkala मुझे यही चाहिए। क्या जावा लीब है जो यह कर सकती है? – alexvetter

उत्तर

3

आप आसानी से callchmod कमांड अपने जावा एप्लिकेशन से कम कर सकते हैं ताकि x बिट लापता हो। chmod निष्पादन योग्य (x) बिट के रूप में यूनिक्स पर मानक के रूप में मानक है।

या आप इसे straight from Java कर सकते हैं।

यदि आप निष्पादन योग्य बिट को डिकंप्रेशन पर सेट करना चाहते हैं, हालांकि, आपको शायद जावा डिकंप्रेशन लाइब्रेरी का उपयोग नहीं करना चाहिए। अपने संग्रह को डिकंप्रेस करने के लिए यूनिक्स unzip कमांड का उपयोग करने का प्रयास करें - यह कुछ समय के लिए यूनिक्स फ़ाइल मोड बिट्स को संग्रहीत और पुनर्स्थापित करने का समर्थन करता है। यदि आपके यूनिक्स विक्रेता के पास यह नहीं है, तो आप इसे the source से प्राप्त कर सकते हैं।

+1

क्षमा करें, आप मदद नहीं कर रहे हैं। मैं जावा से निष्पादन योग्य ध्वज सेट कर सकता हूं। मुझे सभी बाइनरी के बारे में पता नहीं है इसलिए मैं ध्वज सेट नहीं कर सकता। सबसे अच्छी चीज संग्रह को "अनपैक" करना होगा और झंडे पहले ही सेट हो चुके हैं। – alexvetter

+0

'unzip -X' जीआईडी ​​/ यूआईडी रखता है। समस्या यह है कि jarsigner (उपकरण जिसे मैं हस्ताक्षर करने के लिए उपयोग करता हूं) झंडे को सुरक्षित नहीं करता है। तो यह बॉक्स के बाहर काम नहीं करेगा। मैं एक मेटाफॉफ़ाइल जोड़ने के बारे में सोचता हूं जिसमें सभी निष्पादन योग्य फ़ाइलें शामिल हैं। 'ढूंढो। -executable -type f 'उस के साथ मदद कर सकते हैं। – alexvetter

+0

@alexvetter: इसलिए जब तक आपके एप्लिकेशन को संग्रह प्राप्त होता है, तब तक निष्पादन योग्य बिट्स पहले से ही खो चुके हैं: -/ – thkala

0

यदि आप tar के साथ अपनी फ़ाइलों को पैक करते हैं और फिर वैकल्पिक रूप से संपीड़ित करते हैं, तो यह पैकिंग से पहले आपकी अनुमतियां रखता है। अनपॅक करते समय --preserve-permissions का उपयोग करें।