ऐसी कोई फ़ाइल या निर्देशिका /etc/init.d/functions नहीं


21

मैंने एप्लिकेशन का एक समूह शुरू / पुनरारंभ / बंद करने के लिए एक स्टार्टअप स्क्रिप्ट बनाई। मैंने /etc/init.d/functionsअपनी स्क्रिप्ट में लिब का इस्तेमाल किया । यह मेरे सिस्टम पर अच्छा काम कर रहा है, लेकिन यह मेरे क्लाइंट के लिए काम नहीं कर रहा है; उसे त्रुटि मिल रही है:

ऐसी कोई फ़ाइल या निर्देशिका /etc/init.d/functions नहीं

अभी मुझे पता नहीं है कि मेरे ग्राहक किस लाइन का उपयोग करते हैं। क्या init.d/functionsफ़ाइल अलग-अलग लिनक्स डिस्ट्रोस के लिए अलग है? यदि हां, तो मैं इसे कैसे खोज सकता हूं?


ध्यान दें कि यह त्रुटि विंडोज लाइन एंडिंग के कारण भी हो सकती है।
इमर्सन रोचा

जवाबों:


24

यह आपके द्वारा चलाए जा रहे वितरण के लिए विशिष्ट है। डेबियन और उबंटू है /lib/lsb/init-functions; SuSE है /etc/rc.status; उनमें से कोई भी दूसरों के साथ संगत नहीं है। वास्तव में, कुछ वितरण बिल्कुल उपयोग नहीं करते /etc/init.dहैं, या इसे असंगत तरीके से उपयोग करते हैं (स्लैकवेयर और आर्क मेरे सिर के ऊपर से निकलते हैं; अन्य हैं)।


क्या मुझे पता है कि कौन सी फ़ाइल है और यह Redhat 5.5 के लिए कहाँ स्थित है?
tecman

इसके अलावा, मैं उन फ़ाइल का नाम और पथ कैसे पा सकता हूं? क्या ऐसा करने का कोई तरीका है या यह है कि हम इसे केवल प्रलेखन से पा सकते हैं?
tecman

मैंने इसे देख कर किया, क्योंकि मेरे पास वे दोनों उपलब्ध हैं; मेरे पास Red Hat संस्थापन नहीं है। लेकिन आपने जो कुछ ऊपर कहा है उसके महत्व को आप याद कर सकते हैं: आपके कार्य अन्य वितरणों में /etc/init.d/functions मौजूद नहीं हैं । हर वितरण के अपने नियम होते हैं /etc/init.d, और इसकी फ़ंक्शन लाइब्रेरी (यदि कोई हो) उन नियमों के आसपास उन्मुख होती है; उदाहरण के लिए, SuSE है rc_status -s। कुछ एलएसबी "मानक" फ़ंक्शन हैं, जिन्हें माना जाता है /lib/lsb/init-functions, लेकिन हो सकता है कि आपका क्लाइंट कोई वितरण न चला रहा हो जो इसे प्रदान करने के लिए अपडेट किया गया है।
गीकॉइसर

15

में CentOS 7 डोकर छवि मैं बस पैकेज स्थापित करने के लिए किया था initscriptsइस स्क्रिप्ट स्थापित करने के लिए आदेश में:

yum install -y initscripts

( इस मुद्देdocker-library के लिए धन्यवाद , जिसने मुझे इस कमिट में देखा )


यह एक डॉकटर कंटेनर में फेडोरा 24 पर जेनकिन्स का उपयोग करके मेरे मुद्दे को तय करता है। (सिर्फ पाठ्यक्रम के dnfबजाय प्रयोग किया जाता है yum)। धन्यवाद!
जेरलिंग्लुगी

यह MarkLogic 9 को Centos7 docker कंटेनर में स्थापित करने पर भी काम करता है। स्थापना डॉक्स केवल lib.so.6 और lsb-core-amd64 की आवश्यकता का उल्लेख करते हैं, लेकिन मैं अनुमान लगा रहा हूं क्योंकि वे एक पूर्ण CentOS 7 इंस्टाल पर स्थापित करने के बारे में बात कर रहे हैं, वे अनदेखी करेंगे कि आपको इनस्क्रिप्ट स्क्रिप्ट पैकेज की आवश्यकता होगी।
alc6379

12

यह बिल्कुल वितरण पर निर्भर है। आप वास्तव में एक ठीक से मिलान इनिट स्क्रिप्ट लिखने के लिए डिस्ट्रो का पता लगाने की आवश्यकता के लिए जा रहे हैं।

आप एलएसबी (लिनक्स स्टैंडर्ड बेस) विनिर्देशन का भी पालन कर सकते हैं और आशा करते हैं कि प्रश्न में डिस्ट्रो भी किया था। वर्तमान विनिर्देश यह निर्धारित करता है कि मानक इनिट स्क्रिप्ट फ़ंक्शन उपलब्ध हैं /lib/lsb/init-functions( डॉक्स यहां देखें )। फेडोरा और अन्य रेड हैट डिस्ट्रोस पर, यह redhat-lsbपैकेज द्वारा प्रदान किया गया है, जो वैकल्पिक है

इसलिए, आपको वास्तव में यह पता लगाना होगा कि आप क्या लक्ष्य बना रहे हैं। माफ़ करना।


1

एक हालिया उत्तर जोड़ना

जैसा कि एक अन्य उत्तर में उल्लेख किया गया है, लिनक्स मानक बेस (एलएसबी) चश्मा यहांinit.d सूचीबद्ध के रूप में एलएसबी परिभाषित इनिट फ़ंक्शंस का उपयोग करके प्लेटफ़ॉर्म स्वतंत्र आधारित स्टार्टअप स्क्रिप्ट लिखने का एक तरीका प्रदान करता है

सभी LSB अनुरूप वितरण (सभी बड़े वाले) फ़ाइल प्रदान /lib/lsb/init-functionsमेटा-पैकेज में (जो सूचीबद्ध कार्यों को परिभाषित करता है) lsb-core-noarchजो वितरण के पैकेज मैनेजर का उपयोग कर स्थापित किया जा सकता $PKGMAN $INSTOPT lsb-core-noarch( yum, dnf, apt, ...)।

इस तरह की एक स्क्रिप्ट का एक उदाहरण यह है

हालांकि, यह देखते हुए कि systemdअधिकांश वितरणों के लिए अब डी-फैक्टो सिस्टम और सेवा प्रबंधक कैसे हैं, यह बेहतर है कि लिखने के systemd service unitबजाय लिखने के लिए initscript



0

मेरे डॉकटर कंटेनर को चलाते समय मुझे भी वही त्रुटि मिली। यह मेरे डॉकरफाइल में नीचे की पंक्ति को जोड़कर तय किया गया था

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