ऑटोोटूल का उपयोग करने वाले अधिकांश पैकेज उपयोगकर्ता-स्तरीय उपयोगिताओं या कम से कम उच्च-पर्याप्त स्तर होने के लिए बाइनरी इंस्टॉल करें पूरी तरह से नीचे/usr, या पूरी तरह से नीचे/usr के लिए पर्याप्त कम है।जीएनयू ऑटोटूल: बाइनरी/बिन,/एसबीएन,/यूएसआर/बिन और/यूएसआर/एसबीएन, इंटरफेक्शन - रेफिक्स और डेस्टडीर
मैं एक पैकेज है कि/बिन में कुछ फ़ाइलों को स्थापित करने के लिए की आवश्यकता होगी लिख रहा हूँ,/sbin,/usr/bin और/usr/sbin में कुछ। यह कई मौजूदा बाइनरी को प्रतिस्थापित कर रहा है जिन्हें परंपरागत रूप से उन स्थानों के तहत रखा जाता है।
इसे/lib/सुरक्षा में एक पीएएम मॉड्यूल स्थापित करने की आवश्यकता है (और जाहिर है/usr/lib/सुरक्षा काम नहीं करेगा)।
अब समस्या है: डिफ़ॉल्ट कॉन्फ़िगर का उपसर्ग/usr/स्थानीय (मैं अपने configure.ac में कि डिफ़ॉल्ट नियंत्रित कर सकते हैं) हो रहा है, और कम से कम Gentoo Linux के डिफ़ॉल्ट है उपसर्ग =/usr (कि एक समस्या है क्योंकि यह मेरे config.ac में रखे गए किसी भी डिफ़ॉल्ट को ओवरराइड करता है)।
मैं इस बारे में एक संक्षिप्त रूप से विचार कर रहा था कि इस तरह के अन्य पैकेज इस मुद्दे से कैसे निपट रहे हैं। यहाँ मेरी निष्कर्ष हैं:
- बैश-4.1/usr/bin में स्थापित करने के लिए लगता है, और distro निर्माण स्क्रिप्ट बैश बाइनरी/bin ले जाने
- लिनक्स-पीएएम configure.ac में हैक्स है ताकि यदि उपसर्ग "/ usr" है, यह इसकी कुछ फ़ाइलों के लिए "/ sbin" और "/ lib" का उपयोग करने जा रहा है। यह "/ usr" को डिफ़ॉल्ट उपसर्ग भी सेट करता है। मुझे यकीन नहीं है कि क्या होता है यदि उपयोगकर्ता एक अलग --prefix पास करता है।
- शैडो-यूटिल्स अगर उपसर्ग "/ usr" है तो exec_prefix को सेट करें। तब bin_PROGRAMS करने के लिए "/ bin" संदर्भित करता है, और ubindir "$ {उपसर्ग}/बिन" को इंगित करने की घोषणा की है, ताकि ubin_PROGRAMS करने के लिए "/ usr/bin"
मेरे सवाल कर रहे हैं संदर्भित करता है:
- --prefix के लिए अन्य distros 'डिफ़ॉल्ट क्या हैं? क्या मैं उचित रूप से यह हमेशा/usr मान सकता हूँ? मैं केवल इस बिंदु पर लिनक्स के बारे में चिंतित हूं, बीएसडी नहीं।
- उपरोक्त में से कौन सा समाधान सबसे साफ लगता है? क्या आप कुछ बेहतर समाधान देखते हैं?
- उपर्युक्त समाधानों के साथ संभावित समस्याएं क्या हैं? क्या उन समस्याओं के कुछ समाधान हैं?
- मैं सब कुछ "/ bin" में स्थापित करने और संगतता सिम्लिंक बनाने के साथ ठीक हूं। क्या यह समस्या को आसान बनाता है?
- क्या कोई अन्य सामान्य बिल्ड सिस्टम है जो निम्न स्तर की सिस्टम उपयोगिताओं के लिए स्वीकार्य है जो मेरी आवश्यकताओं को बेहतर तरीके से संभालेगा?
जो मैं करने की कोशिश कर रहा हूं उसके स्पष्टीकरण के लिए पूछने के लिए स्वतंत्र महसूस करें। ध्यान दें कि यदि मैं जो बदल रहा हूं उसके साथ संगतता बरकरार रखना चाहता हूं, यदि यह बाइनरी ए और बी, एक/sbin और एक/usr/bin में एक जहाज को शिप करने के लिए उपयोग किया जाता है, तो मुझे लगता है कि मुझे बस उन स्थानों में प्रतिस्थापन रखना है या कम से कम सिम्लिंक है। पीएएम मॉड्यूल में एक निश्चित स्थापित स्थान भी है।
मैं स्पष्ट रूप से किसी भी उपयोगी उत्तर को ऊपर उठाने जा रहा हूं। मैं एक "स्वीकृत उत्तर" हूं, मैं ज्यादातर सलाह देता हूं कि "मुझे क्या करना चाहिए", समस्या का सबसे साफ समाधान क्या है और यदि विकल्प और दोष, पेशेवरों और विपक्ष की चर्चा लागू होती है।(: नहीं आपकी जिम्मेदारी है पढ़)
आपको अपने config.ac में डिफ़ॉल्ट नहीं बदलना चाहिए। यदि कोई उपयोगकर्ता उपसर्ग निर्दिष्ट किए बिना आपकी कॉन्फ़िगरेशन स्क्रिप्ट चलाता है तो उपयोगकर्ता को डिफ़ॉल्ट रूप से/usr/local की अपेक्षा करने का हर अधिकार होता है। यदि आप इसे बदलते हैं, तो आपके पास एक पैकेजिंग बग है। उपसर्ग सेट करना उपयोगकर्ता का अधिकार (और ज़िम्मेदारी) है और पैकेज रखरखाव के बारे में चिंता करने का कोई अधिकार नहीं है। –
आप अपने .spec फ़ाइल में या Debian/नियमों में उपसर्ग सेट कर सकते हैं, लेकिन आप निश्चित रूप से * * इसे संशोधित नहीं होना चाहिए configure.ac –