实例一 LINUX OS 简单制作 JAVA WEB + TOMCAT7.0 RPM 安装包

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}

2 RPM相关知识点说明

  • /usr/src/redhat/BUILD: The directory where the sources are built.
  • /usr/src/redhat/RPMS: Contains the directories, one for each architecture, that will receive the binary packages after.
  • /usr/src/redhat/RPMS/i586: The directory where rpm packages for i586 processors will be stored.
  • /usr/src/redhat/RPMS/x86_64: The directory where rpm packages for AMD64 processors will be stored.
  • /usr/src/redhat/RPMS/noarch: Idem for noarch (processor-independant) packages.
  • /usr/src/redhat/SOURCES: The source files (mypackage.tar.bz2;.tar.gz  for example).
  • /usr/src/redhat/SPECS: The spec files we will have to construct.
  • /usr/src/redhat/SRPMS: The source rpm after building.
  • /usr/src/redhat/tmp: For temporary stuff that rpm will create when building your packages, you can find the script which are generated to actually build and package your package here, they are generated from the spec file and can be handy for debugging.

  • Inside the spec file,请参考:http://wiki.mandriva.com/en/Development/Howto/RPM#Inside_the_spec_file   http://blog.csdn.net/redguardtoo/article/details/1373885

3 制作RPM源程序包tar.gz

  需要:

  免安装版tomcat7包;

  JAVA WEB程序包(由WAR包解压成编译后的代码包,即如同WAR包在tomcat\webapps\运行后的代码包,如webPro);

  将  JAVA WEB程序包webPro拷贝至tomcat\webapps\下;

  执行命令:1>  tar -zcf :tomcat-vbox-1.0.tar.gz    tomcat        ;    2 >cp -rf  :tomcat-vbox-1.0.tar.gz   /usr/src/redhat/SOURCES ;    (即将tar.gz源代码包拷贝到/usr/src/redhat/SOURCES目录内)

4 制作.spec文件

    需要:

   制作.spec文件,例如:tomcat-webPro-1.0.spec ;(.spec,如何编写请参考  Inside the spec file

   执行命令:1 >cp -rf  tomcat-webPro-1.0.spec  /usr/src/redhat/SPECS;    (即将tomcat-webPro-1.0.spec RPM制作控制文件拷贝到/usr/src/redhat/SPECS目录内)

5 运行rpmbuild命令,完成RPM包的制作

   执行命令:1 > rpmbuild -ba   /usr/src/redhat/SPECS/tomcat-webPro-1.0.spec

6 如果成功,则rpm包会存储在/usr/src/redhat/RPMS   子目录内

 

注意:

1 如果想在运行安装rpm时,即(rpm -ivh xxxxxxxxxxx.rpm)与用户进行提示交互,必须要在.spec文件的   ’  %post ‘ 阶段调用shell脚本,如:

2 如果想在运行删除rpm时,即(rpm -e xxxxxxxxxxx )与用户进行提示交互,必须要在.spec文件的   ’ %preun‘ 阶段调用shell脚本,如:


以下为一小实例.spec文件tomcat-webPro-1.0.spec (注preinst、prerm为shell脚本文件):

Summary:vbox
Name:tomcat-vbox
Version:1.0
Release:0
BuildRoot:%{_tmppath}/%{name}-%{version}-root
Source0:tomcat-vbox-1.0.tar.gz
License:GPL
Group:Applications/Productivity/vbox
%description
vrv vbox RPM package
%prep
rm -rf $RPM_BUILD_DIR/%{name}-%{version}
%setup -q

%build

%install
rm -fr $BuildRoot
mkdir -p    $RPM_BUILD_ROOT/usr/local/vrv-vbox
cp    -rf * $RPM_BUILD_ROOT/usr/local/vrv-vbox
if [ ! -d  /usr/local/vrv-vbox ]
then
{
  mkdir -p  /usr/local/vrv-vbox
}
fi
chmod 755 /usr/local/vrv-vbox  -R
cp -rf * /usr/local/vrv-vbox

%files
%defattr(-,root,root)
/usr/local/vrv-vbox

%pre

%post
if [ -d  /usr/local/vrv-vbox/ ]
then
{
  bash /usr/local/vrv-vbox/preinst
}
fi

%preun  
if [ -d  /usr/local/vrv-vbox/ ]
then
{
  bash /usr/local/vrv-vbox/prerm
}
fi

%clean
rm -fr $BuildRoot


preinst:

#!/bin/bash
function write_log()
{
    dateoftod=`date +%Y%m%d`
    logfilename="log-vbox-$dateoftod"
    if [ ! -d /usr/local/vrv-vbox/vbox-logs ]
    then
    {
        mkdir -p /usr/local/vrv-vbox/vbox-logs
    }
    fi
    if [ ! -f /usr/local/vrv-vbox/vbox-logs/$logfilename ]
    then
    {
        touch /usr/local/vrv-vbox/vbox-logs/$logfilename
    }
    fi
    if [ $# -eq 2 ]
    then
        echo "$(date "+%Y-%m-%d %H:%M:%S") [$0:$1] $2" >>/usr/local/vrv-vbox/vbox-logs/$logfilename
    elif [ $# -eq 3 ]
    then
        echo "$(date "+%Y-%m-%d %H:%H:%S") [$0:$1] $2 : $3">>/usr/local/vrv-vbox/vbox-logs/$logfilename
    else
        echo "record log error."  
    fi    
}


echo "-------------------------------------------------------------------------"
echo "    Welcome install vbox 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
}
fi
write_log $LINENO "INFO: user privilege correct."

#1:check mysql installed

#3:check JDK 1.6 1.7
checkjre=$(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:
#!/bin/bash
function write_log()
{
    dateoftod=`date +%Y%m%d`
    logfilename="log-vbox-$dateoftod"
    if [ ! -d /usr/local/vrv-vbox/vbox-logs ]
    then
    {
        mkdir -p /usr/local/vrv-vbox/vbox-logs
    }
    fi
    if [ ! -f /usr/local/vrv-vbox/vbox-logs/$logfilename ]
    then
    {
        touch /usr/local/vrv-vbox/vbox-logs/$logfilename
    }
    fi
    if [ $# -eq 2 ]
    then
        echo "$(date "+%Y-%m-%d %H:%M:%S") [$0:$1] $2" >>/usr/local/vrv-vbox/vbox-logs/$logfilename
    else
        echo "record log error."  
    fi
}
write_log $LINENO "INFO: start uninstall vbox 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/vrv-vbox
if [ -d /usr/local/vrv-vbox ]
then
{
   write_log $LINENO "delete vbox-tomcat."
   rm -rf /usr/local/vrv-vbox
}
fi

源代码目录结构,即要打包成.tar.gz前的目录结构:




  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值