मुझे अपने द्वारा संकलित किए गए सॉफ़्टवेयर को कहां रखना चाहिए?


126

मुझे अपने फेडोरा मशीन पर कुछ सॉफ़्टवेयर संकलित करने की आवश्यकता है। पैक किए गए सॉफ़्टवेयर में हस्तक्षेप न करने के लिए इसे रखने के लिए सबसे अच्छी जगह कहां है?


आपको यह प्रश्न उपयोगी भी लग सकता है।
rozcietrzewiacz

जवाबों:


89

अंगूठे का नियम, कम से कम डेबियन-स्वाद वाले सिस्टम पर:

  • /usr/localसामान के लिए है जो "पूरे सिस्टम में 'यानी /usr/localएक distro के डिफ़ॉल्ट में हो जाता है $PATH, और के साथ एक मानक यूनिक्स निर्देशिका पदानुक्रम इस प्रकार /usr/local/bin, /usr/local/libआदि

  • /optसामान के लिए आपको प्रति-एप्लिकेशन उपसर्गों-यानी साथ पूरे सिस्टम में बनाने के लिए, पर विश्वास नहीं है /opt/firefox-3.6.8, /opt/mono-2.6.7, और इतने पर। यहाँ सामग्री में अधिक सावधानी से प्रबंधन की आवश्यकता होती है, लेकिन आपके सिस्टम के टूटने की भी संभावना कम होती है - और इसे हटाना आसान होता है क्योंकि आप केवल फ़ोल्डर को हटाते हैं और यह चला गया है।


दिलचस्प बात यह है कि कई प्रोग्राम / ऐप्लीकेशन्स स्वचालित रूप से /optयदि आप sudoइंस्टॉल करते हैं तो इंस्टॉल करने का सुझाव देते हैं ।
हांगबोझू

50

यदि आप वास्तव में यह बिल्कुल भी हस्तक्षेप नहीं करना चाहते हैं, तो इसे अपने में कहीं भी न रखें $PATH

यदि आप इसे चाहते हैं $PATH, तो कम से कम यह सुनिश्चित करें कि इसे स्थापित न करें /usr/local। मैंने पाया है कि डिस्ट्रो द्वारा स्थापित किए जाने पर भी बहुत सारे सॉफ्टवेयर वहां दिखते हैं /usr

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

mkdir ~/stage
./configure --prefix=/home/username/stage && make && make install

और यदि आप चाहते हैं, तो आप /home/username/stage/binअपने में जोड़ सकते हैं $PATH


1
निश्चित रूप से, अपने घर निर्देशिका का उपयोग करना सबसे अच्छा विकल्प है। IMO।
bitek

1
+1 पर सहमत हुए। मुझे बैश / रूबी / पाइथन लिपियों के लिए ~ / sbin पसंद है, और संकलित इंस्टॉल के लिए ~ / bin में उपनाम के साथ ~ / ऑप्ट / ... है।
क्रिस

4
अपने घर निर्देशिका का उपयोग करने के लिए +1 क्योंकि यह चीजों को सरल बनाता है; $ PATH से बचने के सुझाव के लिए -1 - वहाँ वास्तव में निर्देशिकाएं हैं (मानकों के अनुसार "स्थानीय इंस्टॉल के लिए आरक्षित" /usr/local) (जैसे, )।
रिकार्डो मुर्री

1
बचने / usr / स्थानीय करने के लिए मेरा सुझाव मूल पोस्टर (कुछ अस्पष्ट) पैक सॉफ्टवेयर के साथ हस्तक्षेप नहीं करने की इच्छा पर आधारित था। चूँकि बहुत सारे पैकेज्ड सॉफ्टवेयर हैं जो "usr / लोकल या $ PATH" में देखकर "मदद" करेंगे, मुझे लगा कि यह हस्तक्षेप करने के योग्य है। लेकिन यह वास्तव में एक व्यक्ति की व्यक्तिगत जरूरतों और लक्ष्यों पर निर्भर करता है। / usr / स्थानीय कई स्थितियों में एक पूरी तरह से ठीक विकल्प हो सकता है।
सैंडी

टिप्पणी # 2 में "s" अक्षर की गलतफहमी पर किसी का ध्यान नहीं गया। वह नष्ट कर दिया जाना चाहिए
meffect

20

FHS इसे / usr / लोकल में डालने के लिए कहता है जहाँ वितरण को इसे छूना नहीं चाहिए। स्रोत के लिए और पुस्तकालयों के लिए /usr/local/binबायनेरिज़ के /usr/local/srcलिए /usr/local/lib। अधिक जानकारी के लिए FHS युक्ति देखें


कॉन्फ़िगरेशन के बारे में क्या? मान लें कि मैंने पैकेज प्रबंधक का उपयोग किए बिना MySQL स्थापित किया है, क्या मुझे अभी भी /etc/mysqlकॉन्फ़िगरेशन के लिए उपयोग करना चाहिए ?
हब्रो

मैंने अभी देखा /usr/local/etcकि डिफ़ॉल्ट रूप से एक फ़ोल्डर है, मुझे लगता है कि मुझे इसका उपयोग करना चाहिए ... :-)
हब्रो

10

ज्यादातर समय, मैं अपने संकलित सामान को अंदर रखना पसंद करता हूं /opt। यह एक छद्म मानक जगह की तरह है। आप भी विचार कर सकते हैं /usr/local, लेकिन मैं अपना सामान 100% अलग रखना पसंद करता हूं।


1
distro की प्रवृत्ति काफी कुछ चीजें / ऑप्ट (आमतौर पर मालिकाना पैकेज) में डालती है / ऑप्ट यह नहीं कहता है कि distro इसे छू नहीं सकता है। हालाँकि यह कहता है कि / usr / स्थानीय के
xenoterracide

1
मैंने कभी भी डिस्ट्रो का सामान नहीं देखा है /opt, हालाँकि मैंने कई बार देखा /usr/localहै कि कबाड़ से अटे पड़े हैं जो डिस्ट्रो से आता है
स्कॉट एंडरसन

distro's I use like java in / opt मैंने वहां एक्रोबेट रीडर भी देखा है। अगर वे / usr / लोकल में सामान लगा रहे हैं तो वे FHS को अनदेखा कर रहे हैं, जो कहते हैं कि सिस्टम अपडेट में ओवरराइट होने से सुरक्षित रहने की जरूरत है।
xenoterracide

मुझे लगता है अपने हरेक व्यक्ति के लिए। FHS अच्छा है, लेकिन मुझे लगता है कि इसे कभी-कभी अनदेखा कर दिया जाता है।
स्कॉट एंडरसन

एकमात्र सामान जो मैंने कभी डिस्ट्रो पैकेज की जगह पर देखा है, /usr/localवह निर्देशिका पदानुक्रम था जो मानक पेड़ में उन लोगों को दर्शाता है, और शायद TeX जैसी चीजों के लिए फ़ाइलों को अनुक्रमित करता है।
फिल मिलर

9

उन्हें लगाओ /usr/local/src

मैं इस निर्देशिका में स्रोत को निकालता हूं। यह एक रास्ता बनाएगा

/usr/local/src/postgresql-8.3.7

फिर मैं इसका एक प्रतीकात्मक लिंक बनाता हूँ:

/usr/local/src # ln -s  postgresql-8.3.7 postgresql

अपनी सारी बिल्डिंग अंदर करो /usr/local/src/postgresql

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


1
+1 आपके औचित्य को बताने के लिए और कैसे ओपी इसे लागू कर सकता है, जिसमें संस्करण भी शामिल है।
samt

6

यह मुझे याद दिलाता है, मुझे अधिक बार जांच- पड़ताल का उपयोग करने की आवश्यकता है ! इस तरह से मैं हमेशा की तरह

 ./configure
 make

के बाद

 sudo checkinstall

.deb फ़ाइल बनाने के लिए ...


2
सवाल का जवाब नहीं देता।
जेन्बले

5

यदि संभावना है - मैं आपके सॉफ़्टवेयर को संकलित करने और फिर FC पैकेज बनाने का सुझाव दूंगा (मेरा मानना ​​है कि यह सॉफ़्टवेयर पैकेज स्थापित करने के लिए yum का उपयोग कर रहा है)। फिर आप अपने खुद के संकलित सॉफ़्टवेयर के उस पैकेज को स्थापित कर सकते हैं और इसे हटाए बिना पूरे सिस्टम को गड़बड़ कर सकते हैं।


5

यदि आप अपने द्वारा निर्मित कई एप्लिकेशन को आसानी से स्थापित और हटाने में सक्षम हैं, तो आप स्टोव को एक साधारण पैकेज मैनेजर के रूप में उपयोग कर सकते हैं ।


5

प्रति FHS , /usr/local/, स्रोत से संकलित अनुप्रयोगों के लिए प्रयोग किया जाता है, जबकि /opt/आपके ऑपरेटिंग सिस्टम विक्रेता द्वारा समर्थित नहीं 3 पार्टी अनुप्रयोगों के लिए प्रयोग किया जाता है।


4

दो चीजें जो मैं सुझाऊंगा:

सिस्टम वाइड: स्टोव का उपयोग करें और / usr / स्थानीय / स्टोव / पैकेज-संस्करण के तहत स्थापित करें। फिर आप आसानी से संस्करण के बीच स्विच कर सकते हैं।

मेरे घर में, या यदि मेरे पास / usr / स्थानीय लिखने की अनुमति नहीं है, तो मैं व्यक्तिगत रूप से ~ / .local के तहत कार्यक्रम स्थापित करता हूं, जो कि XDG मानक द्वारा संकेत दिया गया है ।

आप स्टोव का उपयोग स्थानीय रूप से भी कर सकते हैं, हालांकि मैंने कभी नहीं किया :)


3

मेरे पास ज्यादातर लोगों की तुलना में थोड़ा अलग सेटअप है क्योंकि मैं बहुत विकास करता हूं। मेरे पास एक / होम / जैकसन / बिन / निर्देशिका है जिसमें मैं सामान स्थापित करता हूं और मैंने अपना .bashrc यह जोड़ दिया है:

export PATH=/home/jackson/bin/bin::$PATH
export LD_LIBRARY_PATH=/home/jackson/bin/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/home/jackson/bin/lib/pkgconfig:$PKG_CONFIG_PATH

मैं हर चीज के लिए ऐसा नहीं करूंगा, लेकिन विकास के दौरान यह अच्छा है।


3

यह वास्तव में डिबेट या आरपीएम को एक स्रोत टारबॉल से बनाने के लिए उतना कठिन नहीं है। इस तरह, आप अपने सिस्टम को साफ रखने के लिए अपने डिस्ट्रो के पैकेज मैनेजर की सुविधाओं का उपयोग कर सकते हैं। यह वही है जो मैं करता हूं, ज्यादातर समय: बस थोड़ा आरपीएम बनाएं।


2

यदि आप एक आवेदन संकलित कर रहे हैं तो आप अपने निष्पादन पथ को पैठ एन वी चर में जोड़ सकते हैं। यह अन्य उपयोगकर्ताओं को प्रभावित नहीं करेगा।


मुझे आश्चर्य है कि नीचे वोट क्यों? +1 से "बैलेंस ऑफ" की तरह
phunehehe

मैं भी सोच रहा हूँ क्यों :-)। मैंने cscope का उपयोग करने के लिए एक ही समाधान का उपयोग किया है जहां मेरे पास अनुमतियाँ स्थापित नहीं हैं।
हेमंत

@phunehehe शायद क्योंकि यह भी सवाल का जवाब देने का प्रयास नहीं करता है। सवाल पूछता है कि सॉफ्टवेयर कहां रखें। यह उत्तर आपके द्वारा कहीं रखे जाने के बाद आप क्या कर सकते हैं, इस पर एक टिप देता है। किस फ़ोल्डर का उपयोग करना है, इस पर कुछ सुझाव देकर इसे बेहतर बनाया जा सकता है।
जेन्बले

2

हमेशा "इसे जहां रखा जाता है" रखने का विकल्प होता है, लेकिन पहले एक साधारण आरपीएम लिखें।


1

यदि आप चाहते हैं कि आपका एप्लिकेशन सिस्टम के सभी उपयोगकर्ताओं के लिए उपलब्ध हो और आपके पास आवश्यक अनुमतियां, उपयोग / विकल्प हों। यदि आप चाहते हैं कि एप्लिकेशन केवल आपके लिए उपलब्ध हो (और रूट), उपयोग / घर / उपयोगकर्ता नाम


0

ऐसा करने का सबसे आसान तरीका स्रोत पैकेज ( .src.rpmRPMites के लिए) को हड़पना है, इसे अनपैक करना, नए स्रोत / कॉन्फ़िगरेशन को हैक करना / इसमें जो कुछ भी हो, संस्करण को अच्छी तरह से बदलें और बनाएं। इसे स्थापित करने से आपके पैकेज प्रबंधक को नए पैकेज के बारे में पता चलता है, यह निर्भरता के लिए विचार करने और अनइंस्टॉल / अपडेट करने की अनुमति देता है।

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


0

आरपीएम लिखें, यह मुश्किल नहीं है, जहां चीजें डालने के लिए दिशानिर्देश हैं और एक स्नैप को अनइंस्टॉल करना है।

यदि आप ऐसा करते हैं, तो पैकेजिंग सिस्टम के माध्यम से आने वाली अन्य सभी फ़ाइलों की तरह, के तहत फ़ाइलों को स्थापित /usrन करें /usr/local

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