POSIX Awk Solaris 11 पर?


13

यह कमोबेश निम्नलिखित दो प्रश्नों का अनुगमन है:

मैं देखता हूं कि सोलारिस 10 (सनोस 5.10) पर मुझे निम्नलिखित परिणाम मिलते हैं:

$ type -a awk
awk is /usr/bin/awk
$ PATH="$(getconf PATH)" type -a awk
awk is /usr/xpg4/bin/awk
awk is /usr/bin/awk
$

Solaris 10 पर, /usr/bin/awkPOSIX मानक Awk सिंटैक्स को स्वीकार नहीं करता है जैसे कि '!x[$0]++', लेकिन /usr/xpg4/bin/awkकरता है। अब तक काफी अच्छा है।

हालांकि, सोलारिस 11 पर, केवल /usr/bin/awkइसके साथ भी है getconf PATH। हालांकि वहाँ भी है nawkऔर oawkहै /usr/bin, इन स्पष्ट रूप से कहीं से भी सहानुभूति द्वारा इंगित नहीं किया जाता है।

यह जानकर कि सोलारिस POSIX प्रमाणित है, इससे मुझे आश्चर्य हुआ।

मैं पोर्टेबल कोड का उपयोग करके सोलारिस 11 पर मानक रूप से POSIX अनुरूप Awk कैसे प्राप्त कर सकता हूं जो अन्य POSIX- अनुरूप प्रणालियों पर भी काम करेगा? (या के होने की जाँच करने के लिए एकमात्र विकल्प है nawkया oawkऔर इनमें से किसी एक का उपयोग करता है, तो वर्तमान?)

उस बात के लिए, क्या और क्या हैं ?nawkoawk


/usr/xpg4/bin/awkसोलारिस 11 में नहीं है? nawk"नया awk" है, एक बेहतर एटी एंड टी है awk
Kusalananda


@ StéphaneChazelas AFAIK, केवल पूर्ण OS संस्थापन का परीक्षण किया जाता है और अनुपालन करते समय अनुरूप घोषित किया जाता है।
जुल्गेरे 12

@jlliagre, यह पूर्ण OSes (स्थापित सभी वैकल्पिक पैकेज के साथ OSes) नहीं हो सकता है क्योंकि यह व्यावहारिक नहीं होगा (ऐसे पैकेज भी हैं जो पारस्परिक रूप से अनन्य हैं) और "वैकल्पिक पैकेज" के दायरे को परिभाषित करना होगा।
स्टीफन चेज़लस

@ स्टीफेनचैलेजस हां। जबकि सोलारिस 10 में संपूर्ण वितरण की अवधारणा थी और प्रभावी रूप से सभी पैकेजों को स्थापित किया गया था (अचयनित लोकेल के बाहर), यह सोलारिस 11 के मामले में अधिक नहीं है। मेरा सबसे अच्छा अनुमान "सोलारिस-लार्ज-सर्वर" समूह का इस्तेमाल पोसप के अनुपालन के लिए किया जाता है। परीक्षण।
jlliagre

जवाबों:


19

एक पूर्ण या डेस्कटॉप सोलारिस 11 इंस्टॉलेशन पर, तीन awk कार्यान्वयन उपलब्ध हैं, साथ ही कुछ संस्करण:

    / usr / bin / awk pkg: /system/core-os@0.5.11-0.175.3.1.0.2.0
    / usr / bin / nawk           pkg: /system/core-os@0.5.11-0.175.3.1.0.2.0
    / usr / bin / oawk           pkg: /system/core-os@0.5.11-0.175.3.1.0.2.0

    / usr / gnu / bin / awk pkg: /text/gawk@3.1.8-0.175.3.0.0.30.0
    / usr / bin / gawk           pkg: /text/gawk@3.1.8-0.175.3.0.0.0.0
    / usr / bin / igawk pkg: /text/gawk@3.1.8-0.175.3.0.28..0
    / usr / bin / pgawk pkg: /text/gawk@3.1.8-0.175.3.0.16..0

    / usr / xpg4 / bin / awk       pkg: /system/xopen/xcu4@0.5.11-0.175.3.0.0.30.0

वे सभी "मानक अनुपालन" हैं, यद्यपि विभिन्न मानकों का अनुपालन करते हैं।

  • /usr/bin/awkawk1977 में जारी विरासत UNIX कार्यान्वयन के साथ पालन कर रहा है। इसे पहले डिफ़ॉल्ट सिस्टम PATH में रखा गया है ताकि मौजूदा स्क्रिप्ट को विराम के रूप में awkजारी न किया जा सके । oawkका एक पर्याय हैawk

  • /usr/bin/nawkawk1986 में SVR3.1 में पहली बार "नया" संस्करण भेजा गया है। AwkPOSIX मानक इस कार्यान्वयन पर आधारित था। /usr/xpg4/bin/awkपूर्व की तरह ही लगभग समान है, लेकिन जो कि औपचारिक रूप से POSIX अनुरूपता सत्यापन परीक्षणों के खिलाफ जाँच की जाती है।

  • /usr/gnu/bin/awk, यह भी /usr/bin/gawkGNU संस्करण है awk। इसका उद्देश्य पर्यावरण चर POSIXLY_CORRECTको पर्यावरण में सेट किए जाने पर या -W posixविकल्प के साथ कॉल करने पर POSIX मानक के अधिकांश या सभी का अनुपालन करना है , लेकिन अन्यथा कई विशिष्ट स्वयं एक्सटेंशन जोड़ता है। igawkऔर pgawkखुद के लिए एक्सटेंशन हैं gawk, पहले एक का समर्थन फ़ाइलों में शामिल हैं और दूसरा एक प्रोफाइलिंग का समर्थन करता है।

बहुत सारी उपयोगी जानकारी के लिए GNU awkइतिहास अध्याय भी देखें ।

केवल core-osसंकुल को सोलारिस 11 नियमित स्थापना पर उपस्थित होने की गारंटी है, इस प्रकार केवल oawk/awkऔर nawkवहाँ हैं। विशेष रूप से, जब आप एक नया गैर वैश्विक क्षेत्र बनाते हैं , तो इसमें डिफ़ॉल्ट रूप से solaris-small-serverसमूह पैकेज होता है और xpg4न तो gnu awkबायनेरिज़ उपलब्ध होते हैं। यह डिजाइन द्वारा है। solaris-small-serverसमूह एक न्यूनतम प्रारंभ बिंदु आप ठीक ढंग से काम करने के लिए अपने आवेदन पत्र के लिए आवश्यक संकुल जोड़ने के जो करना है। यह पिछले (सोलारिस 10) तरीके की तुलना में अधिक सुरक्षित और कुशल है जहां वैश्विक ज़ोन पर स्थापित सब कुछ गैर वैश्विक एक पर भी स्थापित किया गया था, इसलिए जब आप ज़ोन को कम करना चाहते थे तो आपको अप्रयुक्त पैकेजों को निकालना होगा।

इस awkतरह के "छोटे सर्वर" इंस्टॉलेशन में POSIX को पोर्टेबल तरीके से सपोर्ट करने के लिए , आपको xcu4पैकेज को स्थापित करना होगा और आपको POSH को एक पोजिट के अनुरूप सेट करना होगा:

pkg install xcu4
PATH=$(getconf PATH):$PATH

चाहिए किसी कारण आपको लगता है कि पैकेज स्थापित नहीं करना चाहते हैं के लिए, एक समाधान के लिए एक "कस्टम" का उपयोग है PATHयुक्त nawkके रूप में awk, उदाहरण के लिए:

mkdir -p /opt/posix/bin
cp /usr/bin/nawk /opt/posix/bin/awk
PATH=/opt/posix/bin:$PATH

वैकल्पिक रूप से, आप इसे पहले प्राप्त करने के लिए स्थापित GNU awkऔर सेट कर सकते हैं PATH:

pkg install gawk
PATH=/usr/gnu/bin:$PATH

ध्यान दें कि यह सोलारिस 11 के लिए विशिष्ट नहीं है। एक समान पैकेज ग्रुपिंग पहले से ही सोलारिस 10 के तहत और पहले से मौजूद था और पोसिक्स कंप्लायंस उपयोगिताओं को केवल "एंड यूज़र", "डेवलपर" और "फुल इंस्टॉल" मेटाक्लेस्टर्स में स्थापित किया गया था। एक सिस्टम या "कोर" या "नेटवर्किंग सपोर्ट" मेटाक्लेस्टर के साथ स्थापित एक ज़ोन होने के बाद बहुत ही xpg4लापता मुद्दे को जन्म देगा ।

यह भी ध्यान दें कि /usr/xpg4/bin/awkसोलारिस 11 सिस्टम की कमी पॉसिक्स अनुपालन विफलता नहीं है। ओरेकल और आईएसवी द्वारा किए गए परीक्षणों के विशाल बहुमत में केवल पूर्ण सोलारिस प्रतिष्ठानों का उपयोग किया जाता है, जिसमें ओपन ग्रुप प्रमाणन कार्यक्रम भी शामिल है। कम किए गए इंस्टॉलेशन समर्थित हैं लेकिन योग्य नहीं हैं ।

क्या आपको सोलारिस 11 के लिए शेल स्क्रिप्ट (या शेल स्क्रिप्ट / कॉलिंग कमांड को एम्बेड करने वाले एप्लिकेशन) वितरित करना चाहिए, आपको बस /system/xopen/xcu4उनके IPS पैकेज में एक निर्भरता के रूप में परिभाषित करने की आवश्यकता है और इंस्टॉलर स्वचालित रूप से वह करेगा जो स्क्रिप्ट को ठीक से काम करने के लिए आवश्यक है:

depend fmri=pkg:/system/xopen/xcu4 type=require

Https://docs.oracle.com/cd/E53394_01/html/E54820/d dependtypes.html देखें


3
एक POSIX आज्ञाकारी awk की कमी एक POSIX अनुरूपता विफलता है। एक सिस्टम जिसमें POSIX कंप्लेंट नहीं है, वह POSIX कंप्लेंट स्क्रिप्ट नहीं चला सकता है। उन छोटे-सोलारिस-सर्वरों को पॉसिक्स नहीं है अकेले यूनिक्स सिस्टम। और मुझे लगता है कि वे ओपन ग्रुप से प्राप्त प्रमाण पत्र सोलारिस द्वारा कवर नहीं किए गए हैं।
स्टीफन चेज़लस

1
@ स्टीफनचेज़ेलस हां, ये सिस्टम योग्य नहीं हैं इसलिए स्पष्ट रूप से कवर नहीं किए गए हैं। यदि सोलारिस एक गैर-योग्य हार्डवेयर पर स्थापित है तो वही होगा। POSIX / Unix का पालन करना Solaris के लिए ठीक से काम करने के लिए कोई शर्त नहीं है। सोलारिस स्वयं अपने से भिन्न होने पर पोसिक्स उपयोगिताओं का कोई उपयोग नहीं करता है।
जूलियाग्रे

@ स्टीफनचेलजैस किसी भी मामले में, एक POSIX awkहमेशा सोलारिस सिस्टम या गैर वैश्विक क्षेत्र पर मौजूद होता है , इसलिए यह मुद्दा उपलब्धता के बारे में नहीं है, लेकिन कमांड के नाम ( nawkबनाम awk) तक सीमित है । docs.oracle.com/cd/E53394_01/html/E54763/nawk-1.html
jlliagre

1
nawkयह लगभग POSIX है (यह CONVFMTउदाहरण के लिए समर्थन नहीं करता है ), लेकिन हाँ, कम से कम यह उतना बुरा नहीं है जितना grep(कि POSIX -e/ -Eउदाहरण के लिए नहीं है) या tr(जो नहीं है tr a-f A-F)।
स्टीफन चेजेलस 7

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