制作 JAVA WEB + TOMCAT7.0 RPM 安装包 for centos
来源:互联网 发布:网络用语开车的意思 编辑:程序博客网 时间:2024/05/16 14:49
1 安装rpmbuild,并配置环境
1.1 首先,你应该检查 rpmbuild 是否已经被安装在你的系统上。你将会利用这个工具从 spec 文件或SRPM组件创建 RPM。要检查它是否被安装了,请执行 rpmbuild --showrc 这个指令。它将会显示一大组数据,把 rpmbuild 所采用的创建环境的细节列明。假若系统输出:$ rpmbuild: command not found,便意味着 rpmbuild 未被安装。你可以用 root 身份执行下列指令,通过 yum 来安装它:
[root@host ~]# yum install rpm-build
1.2要创建一个创建 RPM 的环境,这执行下列两个指令:
[user@hostname ~]$ mkdir -p /usr/src/redhat/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
一般这些目录结构会在/root目录下自动创建
2 RPM相关知识点说明
rpmbuild安装抬会在/root的目录下生成一个rpmbuild的目录,共内部结构如下:
- /root/rpmbuild/BUILD: The directory where the sources are built.
- /root/rpmbuild/RPMS: Contains the directories, one for each architecture, that will receive the binary packages after.
- /root/rpmbuild/RPMS/i586: The directory where rpm packages for i586 processors will be stored.
- /root/rpmbuild/RPMS/x86_64: The directory where rpm packages for AMD64 processors will be stored.
- /root/rpmbuild/RPMS/noarch: Idem for noarch (processor-independant) packages.
- /root/rpmbuild/SOURCES: The source files (mypackage.tar.bz2;.tar.gz for example).
- /root/rpmbuild/SPECS: The spec files we will have to construct.
- /root/rpmbuild/SRPMS: The source rpm after building.
Insidethe spec file,请参考:http://wiki.mandriva.com/en/Development/Howto/RPM#Inside_the_spec_file http://blog.csdn.net/redguardtoo/article/details/1373885
3准备必要的文件
[root@host ~]# mkdir tomcat-myweb-1.0[root@host ~]# mv /root/tomcat /root/tomcat-myweb-1.0
制作.spec文件,例如:tomcat-myweb-1.0.spec
[root@host ~]# vi tomcat-myweb-1.0.specSummary:mywebName:tomcat-mywebVersion:1.0Release:0BuildRoot:%{_tmppath}/%{name}-%{version}-rootSource0:tomcat-myweb-1.0.tar.gzLicense:GPLGroup:Applications/Productivity/vbox%descriptionlosoel myweb RPM package%preprm -rf $RPM_BUILD_DIR/%{name}-%{version}%setup -q%build%installrm -fr $BuildRootmkdir -p $RPM_BUILD_ROOT/usr/local/mywebcp -rf * $RPM_BUILD_ROOT/usr/local/mywebif [ ! -d /usr/local/myweb ]then{ mkdir -p /usr/local/myweb}fichmod 755 /usr/local/myweb -Rcp -rf * /usr/local/myweb%files%defattr(-,root,root)/usr/local/myweb%pre%postif [ -d /usr/local/myweb/ ]then{ bash /usr/local/myweb/preinst}fi%preun if [ -d /usr/local/myweb/ ]then{ bash /usr/local/myweb/prerm}fi%cleanrm -fr $BuildRoot
其它辅助脚本: preinst
[root@host ~]# vi preinst#!/bin/bashfunction write_log(){ dateoftod=`date +%Y%m%d` logfilename="log-myweb-$dateoftod" if [ ! -d /usr/local/myweb/myweb-logs ] then { mkdir -p /usr/local/myweb/myweb-logs } fi if [ ! -f /usr/local/myweb/myweb-logs/$logfilename ] then { touch /usr/local/myweb/myweb-logs/$logfilename } fi if [ $# -eq 2 ] then echo "$(date "+%Y-%m-%d %H:%M:%S") [$0:$1] $2" >>/usr/local/myweb/myweb-logs/$logfilename elif [ $# -eq 3 ] then echo "$(date "+%Y-%m-%d %H:%H:%S") [$0:$1] $2 : $3">>/usr/local/myweb/myweb-logs/$logfilename else echo "record log error." fi }echo "-------------------------------------------------------------------------"echo " Welcome install myweb software for cloud platform security system."echo "-------------------------------------------------------------------------"write_log $LINENO "INFO: install process start."if [ $UID -ne 0 ]then{ write_log $LINENO "FATAL: user privilege error." echo "Error:Superuser privilege are required to run this script." exit -1}fiwrite_log $LINENO "INFO: user privilege correct."#1:check mysql installed#3:check JDK 1.6 1.7checkjre=$(java -version 2>&1|grep "java version")if [ "$checkjre" = "" ]then{ write_log $LINENO "FATAL: Please install jre first." echo "Please install jre first." exit -1}else{ jre_version=$(java -version 2>&1 | grep "java version" | awk '{print $3}' | tr -d \" | awk '{split($0, array, ".")} END{print array[1]"."array[2]}') cmp_version="1.6" result_cmp=$(expr $jre_version \>= $cmp_version) if [ $result_cmp -eq 0 ] then { write_log $LINENO "FATAL: Jre version too low! Please install version 1.6 or higher." echo "Jre version too low! Please install version 1.6 or higher." exit -1} fi}fi
其它辅助脚本:prerm
[root@host ~]# mkdir prerm#!/bin/bashfunction write_log(){ dateoftod=`date +%Y%m%d` logfilename="log-myweb-$dateoftod" if [ ! -d /usr/local/myweb/myweb-logs ] then { mkdir -p /usr/local/myweb/myweb-logs } fi if [ ! -f /usr/local/myweb/myweb-logs/$logfilename ] then { touch /usr/local/myweb/myweb-logs/$logfilename } fi if [ $# -eq 2 ] then echo "$(date "+%Y-%m-%d %H:%M:%S") [$0:$1] $2" >>/usr/local/myweb/myweb-logs/$logfilename else echo "record log error." fi}write_log $LINENO "INFO: start uninstall myweb process."if [ $UID -ne 0 ]then{ write_log $LINENO "FATAL: user privilege error." echo "Error:Superuser privilege are required to run this script." echo "error">rmlog exit -1}fi#3 del /usr/local/mywebif [ -d /usr/local/myweb ]then{ write_log $LINENO "delete tomcat-myweb." rm -rf /usr/local/myweb}fi
将preinst和prerm两个文件移到tomcat-myweb-1.0目录下:
[root@host ~]# mv ./preinst ./tomcat-myweb-1.0[root@host ~]# mv ./prerm ./tomcat-myweb-1.0
打包tomcat-myweb-1.0.tar.gz
[root@host ~]#tar –zcvf tomcat-myweb-1.0.tar.gz ./tomcat-myweb-1.0
将tomcat-myweb-1.0.tar.gz移到rpmbuild的SOURCES目录下:
[root@host ~]#mv tomcat-myweb-1.0.tar.gz ./rpmbuild/SOURCES
将tomcat-myweb-1.0.spec文件移到rpmbuild的SPECS目录下
[root@host ~]# mv ./tomcat-myweb-1.0.spec ./rpmbuild/SPECS
4 运行rpmbuild命令,完成RPM包的制作
[root@host~]#rpmbuild –ba ./rpmbuild/SPECS/tomcat-myweb-1.0.spec
5 如果成功,则rpm包会存储在/root/rpmbuild/RPMS 子目录内
注意:
1 如果想在运行安装rpm时,即(rpm-ivh xxxxxxxxxxx.rpm)与用户进行提示交互,必须要在.spec文件的 ’ %post ‘ 阶段调用shell脚本:
2 如果想在运行删除rpm时,即(rpm -e xxxxxxxxxxx)与用户进行提示交互,必须要在.spec文件的 ’ %preun‘阶段调用shell脚本。- 制作 JAVA WEB + TOMCAT7.0 RPM 安装包 for centos
- LINUX OS ANT一键安装制作 JAVA WEB + TOMCAT7.0 RPM 安装包
- 实例一 LINUX OS 简单制作 JAVA WEB + TOMCAT7.0 RPM 安装包
- NSIS 实例二 制作 JAVA WEB + TOMCAT7.0 安装包
- CentOS 6.5下制作RPM安装包
- NSIS 实例二 制作 JAVA WEB + TOMCAT7.0 安装包 问题汇总
- 基于WINDOWS OS ANT + NSIS + BAT + SVN 环境,ANT 一键安装制作 JAVA WEB + TOMCAT7.0 EXE 安装包
- NSIS 实例一( HM VNISEDIT 2.03 Build 060712 ) 制作 JAVA WEB + TOMCAT7.0 + JDK1.7.0 安装包
- RPM安装包制作
- rpm安装包制作
- centOS下制作RPM包
- centOS下制作RPM包
- 制作rpm包--rpm-build安装
- rpmbuild制作rpm安装包
- rpmbuild制作rpm安装包
- centos下rpm包的制作
- CentOS下安装tar包/rpm包
- CentOS下安装tar包/rpm包
- 什么是Java?Java必经的十个学习阶段
- Big Endian 和 Little Endian
- 动态规划问题_dp
- 重构读书笔记
- Android适配难题全面总结
- 制作 JAVA WEB + TOMCAT7.0 RPM 安装包 for centos
- 自定义cell中有一个button按钮,按下按钮的同时如何获得该按钮所在的行的row值
- 解决slideDown()、slideUp()执行结束后才执行下一次,导致鼠标离开后很久动画依然在执行的问题
- 24 Python assert,Exception的异常信息为unicode的中文时
- ImportError: No module named PIL 错误
- mysql sql优化与索引
- java生成验证码
- 只知道API,今天初识SPI
- Bootstrap3 表单-静态控件-纯文本和 label 置于同一行