yum nên lỗi khi một gói không có sẵn


14

Gần đây tôi đã gặp một lỗi trong một kịch bản mà tôi đã cố gắng làm như sau:

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

Kịch bản chạy tốt trên một CentOS mới hơn, nhưng khi tôi cố thực thi nó trên Cent OS 5, some_package.x86_64không có sẵn. Nhưng thay vì lỗi và dừng yumchỉ in thông báo:

No package some_package.x86_64 available.

Làm cách nào tôi có thể buộc yumlỗi trong các tình huống như vậy (IMO nên là mặc định) để làm cho các tập lệnh của tôi mạnh mẽ hơn?


Xây dựng kịch bản của bạn nổi loạn hơn và kiểm tra giá trị trả về của yum trước khi tiếp tục.
frlan

1
@frlan Đó là vấn đề. yumvui vẻ trở lại 0trong trường hợp này. Kịch bản của tôi đã kiểm tra giá trị trả về trước khi tiếp tục. Thông báo &&?
chiều

Câu trả lời:


11

Như bạn đã tìm thấy, hành vi này đã thay đổi giữa RHEL 5 và 6 (xem https://ormszilla.redhat.com/show_orms.cgi?id=736694 để biết một số thảo luận). Từ liên kết đó, việc kiểm tra mã trả về yum info <pkg>sẽ cho phép bạn hủy bỏ tập lệnh của mình theo yêu cầu. Cái gì đó như:

# 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
OK, điều đó giúp và xác nhận rằng tôi không điên khi nghĩ rằng đây nên là mặc định.
chiều

2
giúp tốt, hành vi yum hiện tại khá không thân thiện cho việc sử dụng tập lệnh.
Karata

13

Mỗi lỗi 1274211 , điều này đã được sửa trong yum-3.4.3-133.el7. Tuy nhiên, bạn cần kích hoạt chế độ nghiêm ngặt.

Cách dễ nhất để làm điều này cho các mục đích kịch bản là thông qua chuyển đổi dòng lệnh:

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

Tuy nhiên, bạn cũng có thể đặt tùy chọn này làm tùy chọn cấu hình trong yum.conf:

[main]
skip_missing_names_on_install=0
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.