जहाँ वे हमेशा रास्ते में होते हैं और आसानी से पाए जा सकते हैं, वहाँ बायनेरिज़ डालते हैं


10

मैं काफी कुछ बायनेरिज़, स्क्रिप्ट्स आदि बना रहा हूं जिन्हें मैं आसानी से इंस्टॉल करना चाहता हूं (अपने स्वयं के rpms का उपयोग करके)। चूंकि मैं उन्हें सभी के लिए सुलभ चाहता हूं, इसलिए मेरा अंतर्ज्ञान उन्हें / usr / bin में डालना होगा;

  • पथ बदलने की जरूरत नहीं

तथापि; मेरे निष्पादनयोग्य अब अन्य सभी के एक पूल में गायब हो जाते हैं; मैं उन सभी निष्पादनों को कैसे वापस पा सकता हूं जिन्हें मैंने एक आसान तरीके से रखा था। मैं सोच रहा था:

  • एक उपनिर्देशिका / usr / bin (मुझे पता है कि मैं ऐसा नहीं कर सकता; बस अपनी सोच को स्पष्ट करने के लिए)
  • एक और निर्देशिका (/ ऑप्ट / खुद / बिन) और प्रत्येक निष्पादन योग्य को / usr / बिन (बहुत काम) से जोड़ना
  • एक और निर्देशिका (/ ऑप्ट / खुद / बिन) और निर्देशिका को / usr / बिन से जोड़ना (क्या यह संभव है?)

ऐसा करने के लिए "सबसे अच्छा, सबसे अधिक जटिल-संगत तरीका" क्या होगा?

संपादित करें: हमने कंपनी में इस पर चर्चा की थी और इस उप-इष्टतम विकल्प के साथ आया था: बायनेरिज़ को / usr / bin / कंपनी में एक प्रतीकात्मक लिंक के साथ / usr / bin से डालें। मैं इस समाधान से रोमांचित नहीं हूं (अव्यवस्था जारी है)

जवाबों:


7

यदि आप अपने बायनेरिज़ को अपने स्वयं के RPM में बंडल करते हैं, तो यह सूची के लिए तुच्छ है कि वे क्या हैं और वे कहाँ स्थापित किए गए थे।

उदाहरण

$ rpm -ql httpd| head -10
/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
/etc/httpd/conf.d/README
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf.modules.d
/etc/httpd/conf.modules.d/00-base.conf

मैं अपनी निष्पादनयोग्य डाल या तो सुझाव है कि /usr/binया /usr/local/binऔर अपने खुद के आरपीएम रोलिंग। ऐसा करना बहुत ही तुच्छ है और RPM का उपयोग करके अपने सॉफ़्टवेयर परिनियोजन का प्रबंधन करके आप अपने सॉफ़्टवेयर के कॉन्फ़िगरेशन प्रबंधन को आसान बनाते हुए संस्करण संख्या के साथ एक बंडल लेबल कर सकते हैं।

यह निर्धारित करते हुए कि कौन से RPM "मेरे" हैं?

आप कुछ ज्ञात सूचनाओं का उपयोग करके अपने RPM का निर्माण कर सकते हैं, जो तब भवन करने से पहले सहमति दे सकते थे। मैं अक्सर ऐसे सिस्टम पर पैकेज बनाता हूं जो मेरे डोमेन के स्वामित्व में हैं इसलिए यह RPM को खोजने के लिए मामूली है, बस होस्ट RPMs के माध्यम से खोज कर रहे हैं जो कि होस्ट X.mydom.com पर बनाए गए थे।

उदाहरण

$ rpm -qi httpd
Name        : httpd
Version     : 2.4.7
Release     : 1.fc19
Architecture: x86_64
Install Date: Mon 17 Feb 2014 01:53:15 AM EST
Group       : System Environment/Daemons
Size        : 3865725
License     : ASL 2.0
Signature   : RSA/SHA256, Mon 27 Jan 2014 11:00:08 AM EST, Key ID 07477e65fb4b18e6
Source RPM  : httpd-2.4.7-1.fc19.src.rpm
Build Date  : Mon 27 Jan 2014 08:39:13 AM EST
Build Host  : buildvm-20.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : http://httpd.apache.org/
Summary     : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.

यह Build HostRPM के भीतर की रेखा होगी ।

/ Usr / बिन / कंपनी का उपयोग?

मैं शायद इस तरह के एक स्थान के उपयोग को हतोत्साहित करूंगा। मुख्य रूप से इसलिए कि इसे शामिल करने के लिए आपके सभी सिस्टमों का $PATHसंवर्द्धित होना आवश्यक है और यह गैर-मानक है। हर वानाबी यूनिक्स व्यवस्थापक के लिए चीजों को अनुकूलित करना हमेशा "पारित करने का अधिकार" रहा है, लेकिन मैं हमेशा इसे हतोत्साहित करता हूं जब तक कि बिल्कुल आवश्यक न हो।

इस तरह के अनुकूलन के साथ सबसे बड़ा मुद्दा यह है कि वे आपके पर्यावरण को बनाए रखने और नए लोगों को लाने में एक बोझ बन जाते हैं, ताकि वे इस वातावरण का उपयोग कर सकें।

क्या मैं आरपीएम से सिर्फ फाइलों की एक सूची प्राप्त कर सकता हूं?

हाँ आप इसे प्राप्त कर सकते हैं लेकिन इसके लिए RPM को 2 कॉल की आवश्यकता होगी। पहला उन पैकेजों की एक सूची बनाएगा जो होस्ट X.mydom.com पर बनाए गए थे। इस सूची को प्राप्त करने के बाद आपको इनमें से प्रत्येक पैकेज के स्वामित्व वाली फ़ाइलों के लिए RPM क्वेरी को फिर से कॉल करना होगा। आप इस एक लाइनर का उपयोग करके इसे प्राप्त कर सकते हैं:

$ rpm -ql $(rpm -qa --queryformat "%-30{NAME}%{BUILDHOST}\n" | \
    grep X.mydom.com | awk '{print $1}') | head -10
/etc/pam.d/run_init
/etc/sestatus.conf
/usr/bin/secon
/usr/bin/semodule_deps
/usr/bin/semodule_expand
/usr/bin/semodule_link
/usr/bin/semodule_package
/usr/bin/semodule_unpackage
/usr/sbin/fixfiles
/usr/sbin/genhomedircon

और मैं कैसे स्थापित सभी rpms द्वारा स्थापित किए गए सभी बायनेरिज़ की एक सूची प्राप्त करने के लिए? सौभाग्य से हम अपनी कंपनी का नाम आरपीएम नामों में रखने के लिए सहमत हुए; तो कुछ ऐसा है जैसे "rpm -qa | grep company" मेरे rpms को सूचीबद्ध करता है
क्रिस Maes

@ क्रिसमिस - अपडेट देखें। मैं मेजबान का उपयोग यह निर्धारित करने के लिए करता हूं कि कौन से pkgs "मेरा" हैं।
slm

अद्यतन के लिए धन्यवाद; अगर आप बस मेरे rpms (जो उनके नाम पर "कंपनी" है) के स्वामित्व वाले सभी बायनेरिज़ को खोजने के लिए एक कमांड जोड़ सकते हैं, जो शानदार होगा
क्रिस मेस

@ क्रिसमिस - यदि आपको आगे मार्गदर्शन की आवश्यकता है, तो अपडेट, एलएमके देखें।
स्लम

बहुत अच्छा लिखित जवाब; पूर्ण और अच्छी तरह से स्वरूपित। आपका बहुत बहुत धन्यवाद!
क्रिस मेस

4

एक स्पष्ट सुझाव है कि अपने बायनेरिज़ या अपने पैकेजों को एक विशेष तरीके से नाम दें। इसलिए उदाहरण के लिए आप cm-इस पोस्ट में दिए गए अपने आद्याक्षर के अनुसार, उन्हें उपसर्ग कर सकते हैं । यदि आप rpms स्थापित कर रहे हैं, /usr/binतो उन्हें FHS के अनुसार (यदि वे उपयोगकर्ता स्तर के निष्पादन योग्य हैं) जाने की आवश्यकता है । उन्हें /usr/local/binउदाहरण के लिए नहीं जाना चाहिए । यह केवल स्थानीय इंस्टॉल के लिए है।

रिकॉर्ड के लिए, मुझे एक विशेष निर्देशिका में बायनेरी डालने और उन्हें बिल्कुल भी अपील करने से जोड़ने का विचार नहीं है, हालांकि मुझे लगता है कि ऐसी चीजें कभी-कभी होती हैं। इस बात को भी ध्यान में रखें कि यदि आपको यह पता लगाना है कि कौन से बायनेरी किस पैकेज से संबंधित हैं, तो आप पैकेजिंग सिस्टम को क्वेरी कर सकते हैं।


3

बायनेरिज़ सिस्टम या वितरण का हिस्सा नहीं होते हैं

/usr/local/bin

निर्देशिका आमतौर पर मानक में है $PATHताकि आपके बायनेरिज़ मिल जाएंगे।


सामान्य रूप से / usr / स्थानीय / बिन बायनेरिज़ के लिए है जो उस मशीन पर केवल "स्थानीय रूप से" मौजूद हैं; बायनेरिज़ के लिए नहीं, मैं एक आरपीएम का उपयोग करके अन्य मशीनों पर वितरित करूंगा ...?
क्रिस मेस

2
लिनक्स के तहत, /usr/local/binमैन्युअल रूप से स्थापित निष्पादनयोग्य के लिए है। पैकेज मैनेजर द्वारा प्रबंधित एक्ज़िबेबल्स में जाते हैं /usr/bin
गिल्स एसओ- बुराई को रोकें '

@ गिल्स, प्रश्न की मेरी पहली व्याख्या एक मशीन पर प्रत्येक उपयोगकर्ता के लिए बायनेरिज़ उपलब्ध कराने पर स्थापित करना था ($ HOME में स्थापित नहीं करना)। अब मैं देख रहा हूं कि यह वास्तव में वह नहीं था जो मुझे समझ में आया।
मत्ती
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.