我有一个依赖于软件 Y 的包 X。Y 通常由用户手动编译和安装,但并非总是如此。
如果我在我的规范文件中提出要求,例如“requires: Y”,YUM 将下载并安装包 Y。如果 Y 是由用户安装的,它会被简单地覆盖,这是不行的。
如果我不提出要求,那些没有 Y 的人最终会错过运行 X 的必要软件。
有一种方法可以通过检查某个位置是否存在二进制文件或检查环境变量来了解是否安装了 Y。
如何处理这种情况?
我有一个依赖于软件 Y 的包 X。Y 通常由用户手动编译和安装,但并非总是如此。
如果我在我的规范文件中提出要求,例如“requires: Y”,YUM 将下载并安装包 Y。如果 Y 是由用户安装的,它会被简单地覆盖,这是不行的。
如果我不提出要求,那些没有 Y 的人最终会错过运行 X 的必要软件。
有一种方法可以通过检查某个位置是否存在二进制文件或检查环境变量来了解是否安装了 Y。
如何处理这种情况?
可以设置%pre
RPM文件的部分以检查二进制文件是否存在。.spec
%pre
# Check if binary file exists . If not, exit with an error.
if [ -f /path/to/binary/file ]; then
echo "Info: Pre-requisite exists: /path/to/binary/file"
else
echo "Error: Pre-requisite <name> not installed. Exiting..."
exit 1
fi