여러 패키지를 yum 설치하려면 모든 성공이 필요합니다.

여러 패키지를 yum 설치하려면 모든 성공이 필요합니다.

yum installcentos 7(docker)에서는 일부 패키지를 찾을 수 없어도 여러 패키지가 포함된 명령이 성공하는 것을 볼 수 있습니다 . 이것은 스크립팅에 있어서 끔찍한 일입니다 :-(

golang( EPEL 저장소를 추가하지 않았기 때문에 이 예에서는 찾을 수 없습니다 .)

[root@1ec73c6c476b /]# yum install golang nano
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: centos.interhost.net.il
 * extras: centos.interhost.net.il
 * updates: centos.interhost.net.il
No package golang available.
Resolving Dependencies
--> Running transaction check
---> Package nano.x86_64 0:2.3.1-10.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==============================================================================================================================================================================================
 Package                                    Arch                                         Version                                             Repository                                  Size
==============================================================================================================================================================================================
Installing:
 nano                                       x86_64                                       2.3.1-10.el7                                        base                                       440 k

Transaction Summary
==============================================================================================================================================================================================
Install  1 Package

Total download size: 440 k
Installed size: 1.6 M
Is this ok [y/d/N]: y
Downloading packages:
nano-2.3.1-10.el7.x86_64.rpm                                                                                                                                           | 440 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : nano-2.3.1-10.el7.x86_64                                                                                                                                                   1/1 
  Verifying  : nano-2.3.1-10.el7.x86_64                                                                                                                                                   1/1 

Installed:
  nano.x86_64 0:2.3.1-10.el7                                                                                                                                                                  

Complete!

[root@1ec73c6c476b /]# echo $?
0

지정된 패키지가 모두 손실된 경우에만 0으로 종료됩니다.

[root@1ec73c6c476b /]# yum install foo
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: centos.interhost.net.il
 * extras: centos.interhost.net.il
 * updates: centos.interhost.net.il
No package foo available.
Error: Nothing to do

[root@1ec73c6c476b /]# yum install golang foo
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: centos.interhost.net.il
 * extras: centos.interhost.net.il
 * updates: centos.interhost.net.il
No package golang available.
No package foo available.
Error: Nothing to do

~에 따르면https://access.redhat.com/solutions/321603, 이 변경 로그에 따르면 후자의 동작은 RHEL 6의 새로운 기능입니다.https://github.com/rpm-software-management/yum/blob/master/ChangeLog#L3749-L3762

... 만약에모두패키지가 "찾을 수 없음", yum은 "Nothing to do" 메시지를 오류로 변환합니다(1, atm 반환). ...그러므로:

  1. yum install -y a b && echo worked
    다음과 같은 경우 "작업 중"이라고 표시됩니다.누구나a 또는 b는 yum이 완료된 후 설치되지만 두 가지를 동시에 설치해 보세요.
  2. yum install a && yum install b && echo worked
    둘 다 설치된 경우(a를 사용할 수 없는 경우 b는 설치를 시도하지도 않음) "작동했습니다"라는 메시지가 표시됩니다.

하지만 아마도 싱글은 (?) yum install a b보다 더 빠르고 복잡한 경우일 것입니다 .yum install a && yum install b

Q: 한 번의 yum 호출로 여러 패키지를 설치하는 데 필요한 플래그/구성이 있습니까?모두성공을 찾으시나요?

답변1

yum 구성 옵션을 skip_missing_names_on_installfalse로 설정하면 이 문제가 해결되고 yum단일 명령을 사용하여 여러 패키지를 설치할 수 있지만 패키지 중 누락된 것이 있으면 여전히 실패합니다.

관련 정보