Hi, when installing multiple packages and one of them is a remote package, if the remote package is unavailable or timeouts, the exit code is still 0.
To reproduce:
optional: start a local listening port: nc -l 9000, the same behavior happens if nothing is listening
install a valid package and a fake remote package (to simulate when it's possible to connect to a repository but no content is received):
[root@root ~]$ zypper --no-refresh install --no-confirm --no-recommends --allow-unsigned-rpm bash http://localhost:9000/none.rpm
Problem retrieving the specified RPM file:
Timeout exceeded when accessing 'http://localhost:9000/none.rpm'.
Please check whether the file is accessible.
Problem with the RPM file specified as 'http://localhost:9000/none.rpm', skipping.
Loading repository data...
Reading installed packages...
'bash' is already installed.
No update candidate for 'bash-4.4-150400'. The highest available version is already installed.
Resolving package dependencies...
Nothing to do.
[root@root ~]$ echo $?
0
My assumption is the exit status should not be 0 as not all packages were installed.
If only a remote package is specified, it works as expected:
[root@root ~]$ zypper --no-refresh install --no-confirm --no-recommends --allow-unsigned-rpm http://localhost:9000/none.rpm
Problem retrieving the specified RPM file:
Timeout exceeded when accessing 'http://localhost:9000/none.rpm'.
Please check whether the file is accessible.
Problem with the RPM file specified as 'http://localhost:9000/none.rpm', skipping.
No valid arguments specified.
[root@root ~]$ echo $?
3
It fails immediately or timeouts after some minutes, and finish with exit code 3.
Hi, when installing multiple packages and one of them is a remote package, if the remote package is unavailable or timeouts, the exit code is still 0.
To reproduce:
nc -l 9000
, the same behavior happens if nothing is listeningMy assumption is the exit status should not be 0 as not all packages were installed.
If only a remote package is specified, it works as expected:
It fails immediately or timeouts after some minutes, and finish with exit code 3.