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

2023-11-11

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前的目录结构:




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实例一 LINUX OS 简单制作 JAVA WEB + TOMCAT7.0 RPM 安装包 的相关文章

随机推荐

  • 中兴e8820刷openwrt_中兴E8820V2(电信天翼宽带类似新路由3歌华链)-拆机及OpenWrt固件...

    本帖最后由 yumeimm 于 2020 12 20 10 53 编辑 2020 12更新 增加Openwrt v19 07 5固件 2020 10更新 添加openwrt v19 07 4固件 2020 05更新 添加openwrt v1
  • 什么是NAT?

    NAT是一种地址转换技术 它可以将IP数据报文头中的IP地址转换为另一个IP地址 并通过转换端口号达到地址重用的目的 NAT作为一种缓解IPv4公网地址枯竭的过渡技术 由于实现简单 得到了广泛应用 NAT解决了什么问题 随着网络应用的增多
  • 设计模式--装饰器模式

    装饰器模式 属于结构型模式基本原理 创建一个装饰器用来对一个现有对象添加新功能 不改变对象结构主要流程 1 根据对象创建一个修饰类 该修饰类要保持方法签名完整 2 在修饰类中根据需求添加新的功能 3 使用时将对象或对象的引用传入修饰类中 注
  • rabbitmq简介

    开发十年 就只剩下这套Java开发体系了 gt gt gt 1 AMQP AMQP协议是一个高级抽象层消息通信协议 RabbitMQ是AMQP协议的实现 它主要包括以下组件 1 1 Server broker 接受客户端连接 实现AMQP消
  • DELETE与DROP 在数据库中的使用方法和区别

    DML data manipulation language 数据操纵语言 就是我们最经常用到的 SELECT UPDATE INSERT DELETE 主要用来对数据库的数据进行一些操作 DML 语句都是显式提交 执行完之后 处理的数据
  • tsconfig之moduleResolution详解

    作用 moduleResolution 模块解析策略 是指编译器在查找导入模块内容时所遵循的流程 模块解析分析 如下代码 编辑器会采用模块解析策略 Node 和 Classic 去查找 moduleB 在哪里 如果最后找不到 编译器不能解析
  • RESTful API接口

    RESTful规范 Restful API是目前比较成熟的一套互联网应用程序的API设计理念 Rest是一组架构约束条件和原则 如何Rest约束条件和原则的架构 我们就称为Restful架构 Restful架构具有结构清晰 符合标准 易于理
  • JAVA报错:Variable 'vv' is accessed from within inner class, needs to be declared final

    内部类中使用但未声明的任何局部变量必须在内部类的正文之前明确分配
  • struts2中validator配置文件验证不起作用的问题解决办法、根源

    在采用struts的xml配置方式校验数据时 发现怎么也不起作用 无法按照正常流程 走到input指向的页面 一 问题的解决 很多博客说明了自己查找的方式 最后都指明了是因为配置文件格式不正确的原因 出现这种问题的时候 应该从下面4个部分考
  • SpringCloud Alibaba 教程

    SpringCloud Alibaba GitHub官方地址 https github com alibaba spring cloud alibaba blob master README zh md SpringCloud Alibab
  • 大学生团体天梯赛(第九届)

    题目地址 天梯赛 include
  • 憨批的语义分割重制版4——TF2 搭建自己的PSPNet语义分割平台

    憨批的语义分割重制版4 TF2 搭建自己的PSPNet语义分割平台 学习前言 什么是PSPNet模型 代码下载 PSPNet实现思路 一 预测部分 1 主干网络介绍 2 加强特征提取结构 3 利用特征获得预测结果 二 训练部分 1 训练文件
  • Vue3 之 readonly

    Vue3 之 readonly readonly 取得一个对象 反应性或普通 或ref并返回一个只读代理 访问的任何嵌套属性也将是只读的 传入普通对象等返回只读代理 传入普通数值或字符串不能变成只读 例如 readonly abc cons
  • 约束下的最优求解:拉格朗日乘数法和KKT条件

    机器学习面对各种各样的求解极值或者最值问题 现在对常见的求解极值或者最值问题思路做一下理论上的梳理 最值问题 简单了解最值问题 求最值是非常常见的问题 比如如何选择交通路线 最快地到达某地 如何用手头的钱买到分量最重的水果等等 我们可以把需
  • 解决An attempt was made to call a method that does not exit问题

    解决An attempt was made to call a method that does not exist The attempt was made from the following location 最近在学习springc
  • KPCA代码

    KPCA算法在TE过程故障诊断的应用 KPCA算法介绍 KPCA代码 数据预处理 计算核矩阵 中心化核矩阵 协方差矩阵的特征值分解 确定主元个数 将特征向量按特征值的大小顺序排序 单位化特征向量 重建测试数据 控制限的设定 故障数据的检测
  • HTML学习-表单语法、表单元素格式、单选框、多选框、按钮 2021-1-19

    表单语法 表单form action 表单提交的位置 可以是网站 也可以是一个请求处理地址 method post get 提交方式 get方式提交 我们可以再url中看到我们提交的信息 不安全 高效 post方式提交 比较安全 传输大文件
  • 利用setTimeout实现倒计时

    倒计时60秒 function countDown that count if count 0 that setData timeCountDownTop 获取验证码 counting false return that setData c
  • stata学习笔记

    受限被解释变量类型 普通断尾随机变量 断尾回归 对于分析的样本解释变量有上限或者下限的要求 零断尾计数数据 零断尾泊松回归和负二项回归 正整数 偶然断尾 自选择问题 样本选择模型 因为某些原因 导致被解释变量的取值有所不同 归并数据 归并T
  • 实例一 LINUX OS 简单制作 JAVA WEB + TOMCAT7.0 RPM 安装包

    1 安装rpmbuild 并配置环境 1 1 首先 你应该检查 rpmbuild 是否已经被安装在你的系统上 你将会利用这个工具从 spec 文件或 SRPM 组件创建 RPM 要检查它是否被安装了 请执行 rpmbuild showrc