जब पैकेज उपलब्ध न हो तो yum को त्रुटि करनी चाहिए


14

मैं हाल ही में एक स्क्रिप्ट में बग में भाग गया, जहाँ मैंने निम्नलिखित करने की कोशिश की:

yum -y install another_package.x86_64 some_package.x86_64 && run_my_script

स्क्रिप्ट एक नए CentOS पर अच्छी तरह से चली, लेकिन जब मैंने इसे Cent OS 5 पर निष्पादित करने का प्रयास किया, some_package.x86_64तो उपलब्ध नहीं था। लेकिन yumकेवल संदेश को मुद्रित करने और रोकने के बजाय :

No package some_package.x86_64 available.

मैं yumअपनी स्क्रिप्ट को और अधिक मजबूत बनाने के लिए ऐसी स्थितियों (जो IMO डिफ़ॉल्ट होना चाहिए) में त्रुटि करने के लिए कैसे मजबूर कर सकता हूं ?


अपनी स्क्रिप्ट को अधिक प्रतिक्षेप बनाएं और जाने से पहले यम के वापसी मूल्य की जांच करें।
फ्रलान

1
@frlan यह मुद्दा है। इस मामले में yumखुशी से लौटते हैं 0। मेरी स्क्रिप्ट आगे बढ़ने से पहले ही रिटर्न वैल्यू की जाँच कर रही है। नोटिस &&?
शाम

जवाबों:


11

जैसा कि आपने पाया है, आरएचईएल 5 और 6 के बीच यह व्यवहार बदल गया है ( कुछ चर्चा के लिए https://bugzilla.redhat.com/show_bug.cgi?id=736694 देखें )। उस लिंक से, रिटर्न कोड की जांच करके yum info <pkg>आपको अपनी स्क्रिप्ट को आवश्यकतानुसार समाप्त करने की अनुमति देनी चाहिए। कुछ इस तरह:

# Set a variable containing the packages to install:
pkgs_to_install='another_package.x86_64 some_package.x86_64'

# Loop over the packages in the list:
for pkg in ${pkgs_to_install}; do
  # Stop executing if at least one package isn't available:
  yum info ${pkg} >> /dev/null 2>&1 || exit
done

# Continue running your original script:
yum -y install ${pkgs_to_install} && run_my_script

3
ठीक है, यह मदद करता है और पुष्टि करता है कि मैं यह सोचने के लिए पागल नहीं हूं कि यह डिफ़ॉल्ट होना चाहिए।
PMR

2
अच्छी तरह से मदद करता है, वर्तमान यम व्यवहार स्क्रिप्ट उपयोग के लिए काफी अनुकूल है।
करटा

14

प्रति बग 1274211 , यह yum-3.4.3-133.el7 में तय किया गया है। हालांकि, आपको सख्त मोड को सक्षम करने की आवश्यकता है।

स्क्रिप्टिंग उद्देश्यों के लिए ऐसा करने का सबसे आसान तरीका कमांड-लाइन स्विच है:

yum -y --setopt=skip_missing_names_on_install=False install another_package.x86_64 some_package.x86_64 && run_my_script

हालाँकि, आप इसे अपने कॉन्फ़िगरेशन विकल्प के रूप में भी सेट कर सकते हैं yum.conf:

[main]
skip_missing_names_on_install=0
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.