提取.rpm文件时如何获取返回值
我允许用户从我的网站上传一个 .rpm 文件。
我在一个脚本文件里使用了 sudo rpm -ivh $1 --nodeps
这个命令来提取用户上传的 .rpm 文件,文件名是通过参数传递进来的。我想检查一下用户刚上传的文件是否已经在系统里存在,并在运行上面的命令之前给用户显示一个合适的提示信息(或者有没有什么方法可以检查,让我的脚本返回一个值,这样我就可以根据这个值做决定)。
这个命令的输出是:
Preparing... ########################################### [100%]
package testing_rpm is already installed
它并没有返回一个数字值……
有没有更好的方法来做到这一点呢?
2 个回答
2
请查看这个回答。
rpm
命令在执行的某个操作失败时,会返回一个非零的状态码,这意味着出错了。比如,如果你要安装的包已经在你的系统上存在,它也会返回1
,这让人很难分辨是安装失败了,还是包本来就已经存在。因此,你需要仔细查看rpm
命令的输出信息。如果包安装成功,它会返回一个零的状态码0
。
1
如果你想查看一个RPM包里面包含哪些文件,可以用命令 rpm -qpl
来运行。这个命令会列出这个RPM包里的所有文件,而不会尝试去安装它。
下面是对tomcat的RPM包运行这个命令的例子,你可以看到这个包会安装的所有文件:
你也可以直接用 rpm -q
命令,然后查找“未安装”的信息: