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 ใดควรเป็นค่าเริ่มต้น) เพื่อทำให้สคริปต์ของฉันแข็งแกร่งขึ้น


สร้างสคริปต์ของคุณให้ rebust มากขึ้นและตรวจสอบค่าตอบแทนของ yum ก่อนดำเนินการต่อ
frlan

1
@frlan นั่นคือปัญหา yumผลตอบแทนอย่างมีความสุข0ในกรณีนี้ สคริปต์ของฉันตรวจสอบค่าที่ส่งคืนแล้วก่อนดำเนินการต่อ แจ้งให้ทราบล่วงหน้า&&?
pmr

คำตอบ:


11

ตามที่คุณพบพฤติกรรมนี้เปลี่ยนไประหว่าง RHEL 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
ช่วยได้ดีพฤติกรรม yum ปัจจุบันค่อนข้างไม่เป็นมิตรต่อการใช้งานสคริปต์
Karata

14

สำหรับBug 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.