मुझे अपने फेडोरा मशीन पर कुछ सॉफ़्टवेयर संकलित करने की आवश्यकता है। पैक किए गए सॉफ़्टवेयर में हस्तक्षेप न करने के लिए इसे रखने के लिए सबसे अच्छी जगह कहां है?
मुझे अपने फेडोरा मशीन पर कुछ सॉफ़्टवेयर संकलित करने की आवश्यकता है। पैक किए गए सॉफ़्टवेयर में हस्तक्षेप न करने के लिए इसे रखने के लिए सबसे अच्छी जगह कहां है?
जवाबों:
अंगूठे का नियम, कम से कम डेबियन-स्वाद वाले सिस्टम पर:
/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इंस्टॉल करते हैं तो इंस्टॉल करने का सुझाव देते हैं ।
यदि आप वास्तव में यह बिल्कुल भी हस्तक्षेप नहीं करना चाहते हैं, तो इसे अपने में कहीं भी न रखें $PATH।
यदि आप इसे चाहते हैं $PATH, तो कम से कम यह सुनिश्चित करें कि इसे स्थापित न करें /usr/local। मैंने पाया है कि डिस्ट्रो द्वारा स्थापित किए जाने पर भी बहुत सारे सॉफ्टवेयर वहां दिखते हैं /usr।
कस्टम-संकलित सॉफ़्टवेयर स्थापित करने का मेरा पसंदीदा तरीका मेरी $HOMEनिर्देशिका में है। इस तरह से आपको किसी sudoभी चीज़ के लिए उपयोग नहीं करना है , और यह आपके सिस्टम के बाकी हिस्सों से बहुत अलग है। उदाहरण के लिए:
mkdir ~/stage
./configure --prefix=/home/username/stage && make && make install
और यदि आप चाहते हैं, तो आप /home/username/stage/binअपने में जोड़ सकते हैं $PATH।
/usr/local) (जैसे, )।
FHS इसे / usr / लोकल में डालने के लिए कहता है जहाँ वितरण को इसे छूना नहीं चाहिए। स्रोत के लिए और पुस्तकालयों के लिए /usr/local/binबायनेरिज़ के /usr/local/srcलिए /usr/local/lib। अधिक जानकारी के लिए FHS युक्ति देखें
/etc/mysqlकॉन्फ़िगरेशन के लिए उपयोग करना चाहिए ?
/usr/local/etcकि डिफ़ॉल्ट रूप से एक फ़ोल्डर है, मुझे लगता है कि मुझे इसका उपयोग करना चाहिए ... :-)
ज्यादातर समय, मैं अपने संकलित सामान को अंदर रखना पसंद करता हूं /opt। यह एक छद्म मानक जगह की तरह है। आप भी विचार कर सकते हैं /usr/local, लेकिन मैं अपना सामान 100% अलग रखना पसंद करता हूं।
/opt, हालाँकि मैंने कई बार देखा /usr/localहै कि कबाड़ से अटे पड़े हैं जो डिस्ट्रो से आता है
/usr/localवह निर्देशिका पदानुक्रम था जो मानक पेड़ में उन लोगों को दर्शाता है, और शायद TeX जैसी चीजों के लिए फ़ाइलों को अनुक्रमित करता है।
उन्हें लगाओ /usr/local/src।
मैं इस निर्देशिका में स्रोत को निकालता हूं। यह एक रास्ता बनाएगा
/usr/local/src/postgresql-8.3.7
फिर मैं इसका एक प्रतीकात्मक लिंक बनाता हूँ:
/usr/local/src # ln -s postgresql-8.3.7 postgresql
अपनी सारी बिल्डिंग अंदर करो /usr/local/src/postgresql।
इस तरह से चीजें करना मदद करता है जब आपको संस्करणों और दस्तावेजों के बीच पॉप करने की आवश्यकता होती है कि आप किस संस्करण का उपयोग कर रहे हैं।
यदि संभावना है - मैं आपके सॉफ़्टवेयर को संकलित करने और फिर FC पैकेज बनाने का सुझाव दूंगा (मेरा मानना है कि यह सॉफ़्टवेयर पैकेज स्थापित करने के लिए yum का उपयोग कर रहा है)। फिर आप अपने खुद के संकलित सॉफ़्टवेयर के उस पैकेज को स्थापित कर सकते हैं और इसे हटाए बिना पूरे सिस्टम को गड़बड़ कर सकते हैं।
यदि आप अपने द्वारा निर्मित कई एप्लिकेशन को आसानी से स्थापित और हटाने में सक्षम हैं, तो आप स्टोव को एक साधारण पैकेज मैनेजर के रूप में उपयोग कर सकते हैं ।
प्रति FHS , /usr/local/, स्रोत से संकलित अनुप्रयोगों के लिए प्रयोग किया जाता है, जबकि /opt/आपके ऑपरेटिंग सिस्टम विक्रेता द्वारा समर्थित नहीं 3 पार्टी अनुप्रयोगों के लिए प्रयोग किया जाता है।
दो चीजें जो मैं सुझाऊंगा:
सिस्टम वाइड: स्टोव का उपयोग करें और / usr / स्थानीय / स्टोव / पैकेज-संस्करण के तहत स्थापित करें। फिर आप आसानी से संस्करण के बीच स्विच कर सकते हैं।
मेरे घर में, या यदि मेरे पास / usr / स्थानीय लिखने की अनुमति नहीं है, तो मैं व्यक्तिगत रूप से ~ / .local के तहत कार्यक्रम स्थापित करता हूं, जो कि XDG मानक द्वारा संकेत दिया गया है ।
आप स्टोव का उपयोग स्थानीय रूप से भी कर सकते हैं, हालांकि मैंने कभी नहीं किया :)
मेरे पास ज्यादातर लोगों की तुलना में थोड़ा अलग सेटअप है क्योंकि मैं बहुत विकास करता हूं। मेरे पास एक / होम / जैकसन / बिन / निर्देशिका है जिसमें मैं सामान स्थापित करता हूं और मैंने अपना .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
मैं हर चीज के लिए ऐसा नहीं करूंगा, लेकिन विकास के दौरान यह अच्छा है।
यदि आप एक आवेदन संकलित कर रहे हैं तो आप अपने निष्पादन पथ को पैठ एन वी चर में जोड़ सकते हैं। यह अन्य उपयोगकर्ताओं को प्रभावित नहीं करेगा।
यदि आप चाहते हैं कि आपका एप्लिकेशन सिस्टम के सभी उपयोगकर्ताओं के लिए उपलब्ध हो और आपके पास आवश्यक अनुमतियां, उपयोग / विकल्प हों। यदि आप चाहते हैं कि एप्लिकेशन केवल आपके लिए उपलब्ध हो (और रूट), उपयोग / घर / उपयोगकर्ता नाम
ऐसा करने का सबसे आसान तरीका स्रोत पैकेज ( .src.rpmRPMites के लिए) को हड़पना है, इसे अनपैक करना, नए स्रोत / कॉन्फ़िगरेशन को हैक करना / इसमें जो कुछ भी हो, संस्करण को अच्छी तरह से बदलें और बनाएं। इसे स्थापित करने से आपके पैकेज प्रबंधक को नए पैकेज के बारे में पता चलता है, यह निर्भरता के लिए विचार करने और अनइंस्टॉल / अपडेट करने की अनुमति देता है।
यह पहली बार के आसपास एक काम है, लेकिन अगर एक नया संस्करण (या कुछ महत्वपूर्ण पैच) सामने आता है, तो यह अद्यतन करने के लिए सरल है। एक और लाभ यह है कि आप स्थानीय सॉफ़्टवेयर के साथ अपना भंडार बना सकते हैं, जैसे कि प्रयोगशाला में मशीनों द्वारा साझा किया जाना।