इंस्टॉल करें, लेकिन डिफ़ॉल्ट निर्देशिकाओं के लिए नहीं?


148

मैं 'मेक इनस्टॉल' चलाना चाहता हूं, इसलिए मेरे पास वह सबकुछ है जिसकी मुझे जरूरत है, लेकिन मैं यह चाहूंगा कि सिस्टम के / usr / बिन आदि के विपरीत चीजों को अपने स्वयं के फ़ोल्डर में स्थापित करना संभव है? यहां तक ​​कि अगर यह / usr / बिन आदि में उपकरणों का संदर्भ देता है?


3
यदि आपने पहले से ही परियोजना का निर्माण किया है और आप भाग चुके हैं। एक उपसर्ग के बिना /
configure करें

जवाबों:


213

यह पैकेज पर निर्भर करता है। यदि MakeUile GNU ऑटोटॉल्स ( ./configure) द्वारा उत्पन्न होता है, तो आप आमतौर पर लक्ष्य स्थान को इस तरह सेट कर सकते हैं:

./configure --prefix=/somewhere/else/than/usr/local

यदि मेकफाइल ऑटोटॉल्स द्वारा उत्पन्न नहीं होता है, लेकिन सॉफ़्टवेयर के साथ वितरित किया जाता है, तो बस इसे एक संपादक में खोलें और इसे बदल दें। स्थापित लक्ष्य निर्देशिका शायद एक चर में कहीं परिभाषित है।


9
make && make installकॉन्फ़िगर क्लॉज का पालन नहीं करना चाहिए ?
नास

1
मेरे पास समस्या यह --prefixहै कि यदि आप stringsपरिणामी बाइनरी पर बाद में चलते हैं, तो आप देखते हैं कि पथ अंदर संग्रहीत है। मुझे नहीं पता कि यह क्यों खुश है, लेकिन मैं निश्चित रूप से अपने मशीन पथ बायनेरिज़ पर नहीं चाहता कि मैं अन्य उपयोगकर्ताओं को जहाज करूं।
एरिक एगर

एरिक, ऐसा लगता है कि आपके द्वारा किसी भी तरह से बनाए गए रास्ते का संदर्भ होगा, यदि आप स्रोत से निर्माण करते हैं।
कॉन्स्टेंटिन रयबाकोव

44

चूंकि आपको पता नहीं है कि आप कौन से संस्करण का उपयोग करके DESTDIR पर्यावरण चर का उपयोग कर सकते हैं ।
सुनिश्चित करने के लिए Makefile देखें।

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

 export DESTDIR="$HOME/Software/LocalInstall" && make -j4 install

9
यह तब काम करता है जब आप बिना कमांड लाइन तर्क के कॉन्फ़िगर किया गया था और आपने पहले ही प्रोजेक्ट बना लिया था, लेकिन आप इसे डिफ़ॉल्ट स्थानों पर स्थापित नहीं करना चाहते हैं, बल्कि इसके बजाय कस्टम इंस्टॉलेशन पथ निर्दिष्ट करना चाहते हैं। यह DESTDIR के लिए डिफ़ॉल्ट usr / लोकल / बिन / पथ को जोड़ देगा और आपकी परियोजना $ HOME / Software / LocalInstall / usr / local / bin /
bitek

यह एक शानदार समाधान है। मुझे नहीं पता कि यह चुना हुआ जवाब क्यों नहीं है! लगभग सभी अन्य उत्तर पुनः कॉन्फ़िगर करने के लिए कहते हैं, जिसका अर्थ है कि एक को फिर से बनाने की भी आवश्यकता है। कल्पना करें कि 2 ~ 3 घंटे के बाद पूरे MITK का निर्माण हो जाता है और फिर इसे फिर से करने के लिए कहा जाता है, सिर्फ इसलिए कि मैं संकलित फाइलों को एक अलग स्थान पर स्थापित करना चाहता हूं। यह यहाँ उस स्थिति से बचने के लिए एक अद्भुत काम है।
बतख डॉजर्स

23
make DESTDIR=./new/customized/path install

इस त्वरित कमांड ने मेरे लिए Ubuntu 16 पर opencv रिलीज़ 3.2.0 इंस्टॉलेशन के लिए काम किया। DESTDIR पथ सापेक्ष होने के साथ-साथ निरपेक्ष भी हो सकता है।

ऐसा पुनर्निर्देशन तब भी उपयोगी हो सकता है जब उपयोगकर्ता के पास तब तक व्यवस्थापक विशेषाधिकार न हों, जब तक कि DESTDIR स्थान उपयोगकर्ता के लिए सही पहुँच न हो। उदा / घर //


1
PREFIX को ओवरराइड करने की भी आवश्यकता हो सकती है यदि यह मेकफाइल के अंदर डिफ़ॉल्ट मान है
Mark Ch

17

यह इस बात पर निर्भर हो सकता है कि जिस मॉड्यूल को आप संकलित करने का प्रयास कर रहे हैं, उसका समर्थन क्या है। यदि आपका मेकफाइल ऑटोटूल का उपयोग करके उत्पन्न होता है, तो उपयोग करें:

--prefix=<myinstalldir>

जब चल रहा हो ।/configure

कुछ पैकेज आपको चलते समय ओवरराइड करने की अनुमति देते हैं:

make prefix=<myinstalldir>

हालाँकि, यदि आपका उपयोग नहीं हो रहा है ।/configure, सुनिश्चित करने के लिए जानने का एकमात्र तरीका है मेकफाइल को खोलना और जांचना। यह शीर्ष पर पहले कुछ चरों में से एक होना चाहिए।


3
आपको यह भी पता होना चाहिए कि make prefix=...गलत हार्ड-कोडेड रास्तों के साथ बायनेरिज़ में परिणाम हो सकते हैं, क्योंकि आमतौर पर उन के बाद संशोधित नहीं किया जा सकता है./configure --prefix=...
टोबियास किन्ज़लर

3

यदि पैकेज प्रदान करता है Makefile.PL- एक का उपयोग कर सकते हैं:

perl Makefile.PL PREFIX=/home/my/local/lib LIB=/home/my/local/lib
make
make test
make install

* आगे की व्याख्या: https://www.perlmonks.org/?node_id=564720


0

मैंने उपरोक्त समाधानों की कोशिश की। किसी ने काम नहीं किया।

अंत में मैंने मेकफाइल फ़ाइल को खोला और मैन्युअल रूप से नीचे की तरह वांछित स्थापना पथ में उपसर्ग पथ को बदल दिया।

PREFIX ?= "installation path"

जब मैंने कोशिश की थी - उपसर्ग, "मेक" ने शिकायत की कि ऐसा कोई कमांड इनपुट नहीं है। हालांकि, शायद कुछ पैकेज स्वीकार करते हैं - उपसर्ग जो निश्चित रूप से एक क्लीनर समाधान है।


1
--prefixविकल्प है ./configureजो आप से पहले फोन make
गस

-7

INSTALL_ROOT का उपयोग करके देखें।

make install INSTALL_ROOT=$INSTALL_DIRECTORY

11
लोगों को किसी भी जानकारी के बिना किसी "जानकारी" का सुझाव न दें।
रिचीएचएच

यह एक टिप्पणी होनी चाहिए।
EJoshuaS -
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.