RPM包制作 ——如何退出rpm安装

hzy694358 2010-11-08 10:15:17

想在rpm包中用shell脚本实现如下功能:
在%pre段中,判断linux系统是否已经安装apache ,如果
已经安装就提示用户并退出安装
...全文
232 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
某鸟 2010-11-16
  • 打赏
  • 举报
回复
如果你自己make的apache特殊,你可以自己打包个apache,名字可以跟系统自带的一样,版本号加上自己专有的发布版本号。
至于到底安装哪个,他会找“最新”的……

如果是rpm安装,无需根据路径找依赖,他是根据rpmdb找的~
某鸟 2010-11-16
  • 打赏
  • 举报
回复
只要是rpm安装的,yum就认得。
如果apache是自己make的,那就得9楼那种方法了~
如果你安装时故意不放path里,估计累死它也找不到~
hzy694358 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 21bird 的回复:]

通常你这种需求不是这样做的。
标准的比较linux的做法是:你的软件为p.rpm 另外附加个apache的httpd.rpm
你的p.rpm依赖于httpd.rpm,yum系统会判断,已经装了apahe,就只装你的p.rpm。
否则,httpd和p一起安装。

你现在这种做法太windows了~
[/Quote]
yum系统会判断:这个是linux系统自带的吗?
他要安装apache的话,会怎么寻找路径呢?
hera424 2010-11-11
  • 打赏
  • 举报
回复
LZ我刚刚做了和你这个类似的,我是检查java版本,和操作系统版本脚本如下
检查操作系统版本
OS_BIT=`getconf LONG_BIT`
if [[ $OS_BIT -ne 64 ]];then
echo "GMS need 64-bit Operating System, but current is $OS_BIT-bit"
exit 1;
else
echo "Operating System bit : $OS_BIT-bit"
fi


检查java版本


echo "****** check java version ******"
JAVA_VERSION=`java -version 2>&1 | sed -n '1p' | sed 's/"//g' | sed 's/.* //g'`
if [ "$JAVA_VERSION" \< "$J_VERSION" ];
then echo "Your java version is $JAVA_VERSION, it must be $J_VERSION or higher"
exit 1
else
echo "Java version : $JAVA_VERSION"
fi

某鸟 2010-11-10
  • 打赏
  • 举报
回复
通常你这种需求不是这样做的。
标准的比较linux的做法是:你的软件为p.rpm 另外附加个apache的httpd.rpm
你的p.rpm依赖于httpd.rpm,yum系统会判断,已经装了apahe,就只装你的p.rpm。
否则,httpd和p一起安装。

你现在这种做法太windows了~
hera424 2010-11-10
  • 打赏
  • 举报
回复
等待高人出现,我也有这个问题
steptodream 2010-11-08
  • 打赏
  • 举报
回复
如果用户源码安装的 你就把这个交给用户来判断不好么?
freetstar 2010-11-08
  • 打赏
  • 举报
回复
用源码安装的话,apache的可执行文件还得看放到路径中没有,放到路径中可以用which来判断。

没有放到路径中的话,可以用find命令查询apapche
hzy694358 2010-11-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lgxwqq111 的回复:]

[-x `which apache`] exit 1;
判断apache文件是否存在并可执行,当然前提是用rpm装的
[/Quote]
那如果不是用rpm安装的又要如何处理呢
freetstar 2010-11-08
  • 打赏
  • 举报
回复
[-x `which apache`] exit 1;
判断apache文件是否存在并可执行,当然前提是用rpm装的
hzy694358 2010-11-08
  • 打赏
  • 举报
回复
还有个问题:
declare -i num;
declare -i n=1;
let num=0;
(ps -ef | grep mysqld)| while read line
do
echo $line
let num+=1;
echo $num
done
echo $num;
为何 打印出来是
1
0
也就是说第二个echo $num;打印出来的是0
这是为什么呢?
hzy694358 2010-11-08
  • 打赏
  • 举报
回复
我是想在代码里也判断下,因为我的包里已经把apache也打包进去了

怕到时候出现冲突

-------------------------
exit 1
能退出rpm的安装吗

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧