yum install
centos 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を返します)。 ...したがって:
yum install -y a b && echo worked
次の場合、「作業中」と表示されます。誰でもaまたはbはyumが完了した後にインストールされますが、両方を同時にインストールしてみてください。yum install a && yum install b && echo worked
両方がインストールされている場合(aが利用できない場合、bはインストールを試みません)、「動作しました」というメッセージが表示されます。
しかし、おそらくシングルは(?)yum install a b
よりも高速で複雑な場合でしょう。yum install a && yum install b
Q:1回のyum呼び出しで複数のパッケージをインストールするために必要なフラグ/設定はありますか?みんな成功をお探しですか?
答え1
yum構成オプションをskip_missing_names_on_install
falseに設定すると、この問題は解決され、yum
単一のコマンドを使用して複数のパッケージをインストールできますが、パッケージのうちの欠落がある場合はまだ失敗します。