你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
输入关键字进行搜索
搜索:
没有找到相关结果
nccloud
1、查看rpm包概要信息
rpm -qi XX.rpm
2、安装RPM包
rpm -ivh XXX.rpm
准备一个RPM打包环境
yum install -y rpm-build*
将一组代码简单打包成RPM
1、准备.spec概要文件
在/root/rpmbuild/SPECS/下创建概要文件,这里创建nccloud.spec
Name: NCCloudVersion: 2021.05Release: 1.0Summary: 用友 NC Cloud 大型企业数字化平台。 Group: yonyouLicense: 用友网络科技股份有限公司(C)2019URL: https://www.yonyou.com/Source: %{name}%{version}.zip%define __os_install_post %{nil}%define debug_package %{nil}%description NC Cloud是应用最新的物联网、大数据、人工智能等技术开发的新一代云 ERP 产品,为成长型集团企业和大型企业集团提供混合云解决方案,基于开放、互联、融合、智能的产品理念,服务大型企业数字化转型。开放互联,全面融合,云端智能服务,打造数字企业新平台,重塑企业新技术、新商业的核心竞争力。%prep%setup%installmkdir -p $RPM_BUILD_ROOT/opt/nccloud/cp -R * $RPM_BUILD_ROOT/opt/nccloud/%files%defattr(-,root,root,0755)/opt/nccloud/%pre%postchmod +x /opt/nccloud/nccloud%preun%postunrm -rf /opt/nccloud%changelog* Tue Aug 25 2020 Niuxiaozheng <niuxzhc@yonyou.com> - 1.0.1- 首次创建包
其中大概字段通过上述文件内容即可理解。创建概要完成后准备软件包。
2、将文件保存至/root/rpmbuild/BUILDROOT/产品名称-版本-补丁版本.el7.x86_64目录下(如不确定,可以直接进行下一步编译,根据报错放置文件)
3、启动打包
cd /root/rpmbuild/SPECS/
rpmbuild -ba nccloud.spec
应该会在/root/rpmbuild/RPMS/x86_64/生成"产品名称-版本-补丁版本.el7.x86_64.rpm"包,即可用来安装
上步骤,拟用来执行的服务:ncserver内容如下
#!/bin/bash#ncserver niuxzhc 2020.8.25start_ncc=/opt/nccloud/startup.shsysconfig_ncc=/opt/nccloud/bin/sysConfig.shstop_ncc=/opt/nccloud/stop.shstart_nmc=/opt/nccloud/nmc/server/startmonitor.shstop_nmc=/opt/nccloud/nmc/server/stopmonitor.shsysconfig_nmc==/opt/nccloud/nmc/server/configure.shstart_intelliv=/opt/nccloud/intelliv/startup.shstop_intelliv=/opt/nccloud/intelliv/shutdown.shsysconfig_SearchServer=/opt/nccloud/microserver/SearchServer/bin/sysConfig.shstart_SearchServer=/opt/nccloud/microserver/SearchServer/startup.shstop_SearchServer=/opt/nccloud/microserver/SearchServer/stop.shsysconfig_SessionServer=/opt/nccloud/microserver/SessionServer/bin/sysConfig.shstart_SessionServer=/opt/nccloud/microserver/SessionServer/startup.shstop_SessionServer=/opt/nccloud/microserver/SessionServer/stop.shsysconfig_PKLockServer=/opt/nccloud/microserver/PKLockServer/bin/sysConfig.shstart_PKLockServer=/opt/nccloud/microserver/PKLockServer/startup.shstop_PKLockServer=/opt/nccloud/microserver/PKLockServer/stop.shsysconfig_MessageServer=/opt/nccloud/microserver/MessageServer/bin/sysConfig.shstart_MessageServer=/opt/nccloud/microserver/MessageServer/startup.shstop_MessageServer=/opt/nccloud/microserver/MessageServer/stop.shstartncc() { echo -n "Starting NC Cloud ..." ${start_ncc} 2>&1 >/dev/null}stopncc() { echo -n "Stop NC Cloud ..." ${start_ncc} 2>&1 >/dev/null}case "$1" instart_ncc) ${start_ncc} ;;stop_ncc) ${stop_ncc} ;;sysconfig_ncc) ${sysconfig_ncc} ;; start_nmc) ${start_nmc} ;;stop_nmc) ${stop_nmc} ;;sysconfig_nmc) ${sysconfig_nmc} ;; start_intelliv) ${start_intelliv} ;; stop_intelliv) ${stop_intelliv} ;; sysconfig_SearchServer) ${sysconfig_SearchServer} ;;start_SearchServer) ${start_SearchServer} ;;stop_SearchServer) ${stop_SearchServer} ;; sysconfig_SessionServer) ${sysconfig_SessionServer} ;;start_SessionServer) ${start_SessionServer} ;; stop_SessionServer) ${stop_SessionServer} ;; sysconfig_PKLockServer) ${sysconfig_PKLockServer} ;; start_PKLockServer) ${start_PKLockServer} ;;stop_PKLockServer) ${stop_PKLockServer} ;; sysconfig_MessageServer) ${sysconfig_MessageServer} ;;start_MessageServer) ${start_MessageServer} ;;stop_MessageServer) ${stop_MessageServer} ;; *) echo "Usage: $0{start_ncc|stop_ncc|sysconfig_ncc|start_nmc|stop_nmc|sysconfig_nmc|start_intelliv|stop_intelliv|sysconfig_SearchServer|start_SearchServer|stop_SearchServer|sysconfig_SessionServer|start_SessionServer|stop_SessionServer|sysconfig_PKLockServer|start_PKLockServer|stop_PKLockServer|sysconfig_MessageServer|start_MessageServer|stop_MessageServer}"esacexit 0
SPEC文件简介
Name: 软件名称 Version: 软件版本 Release: 发布次数 如: 1%{?dist} Summary: 软件说明 Group: 软件分组 License: 授权模式,例如 GPL,即自由软件 URL: 源码包的URL地址,可随意填写 Source0: 源码包,可指定多个,下面可用%{SOURCE0}变量引用 BuildRoot: 编译过程中的中间存档目录,考虑到多用户的环境,一般定义为: %{_tmppath}/%{name}-%{version}-%{release}-root , 后面可使用$RPM_BUILD_ROOT 方式引用 BuildArch: 平台 %{_arch} BuildRequires: 编译过程依赖的工具 Requires: 打包生成的rpm包安装时所依赖的软件包 %description 说明文档 %prep 准备部分,比如创建目录,解压源码包等,可使用%setup内部函数 %build 在BUILD目录编译,可使用%configure内部函数,或者其他编译工具,如cmake, perl等 %install 安装到BUILDROOT虚拟目录 %clean 清理文件 %files 将指定的文件添加到rpm包中,文档类型可用%doc,配置文件可 用%config %changelog 更新记录.格式: 第一行 "* 日期 作者 " 第二行 "- 更新内容" 最终的生成的rpm名称: {Name}-{Version}-{Relesae}-{BuildArch}.rpm
Name:nginx #软件包名称,后面可使用%{name}引用 Version:1.10.3 #软件的版本号,与源码包一致 Release:1 #发布序列号 Summary:for centos6.5x86_64 #软件包的内容概要 Group:Development/Tools #软件分组 License:GPL #软件授权方式 URL:http://www.baidu.com #软件的主页 Source0:%{name}-%{version}.tar.gz #源代码包 BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-BuildRoot #这个安装或编译时使用的“虚拟目录” Prefix: %{_prefix} #为了解决今后安装rpm包时,并不一定把软件安装到rpm中打包的目录。必须在这里定义该标识,并在编写%install脚本的时候引用,才能实现rpm包安装时重新指定位置的功能。 Prefix: %{_sysconfdir} #%{_prefix}指/usr,而对其他的文件,例如/etc下的配置文件,则需要用%{sysconfdir}标识。 %define wwwpath /data/htdocs/www #后面在使用这个地址时就可以直接引用%{wwwpath} %define logspath /data/logs #后面在使用这个地址时就可以直接引用%{logspath} %description #软件包详述 doc nginx [engine x] is a HTTP and reverse proxy server, as well as a mail proxy server %prep #软件编译之前的处理,如解压。 %setup -q #打开软件包,加选项对软件包进行解压处理 去我们的SOURCE目录去找到源码包并解压 %install 安装软件执行语句 [ "RPM_BUILD_ROOT" != "/" ] && rm -rf "RPM_BUILD_ROOT" ##查看BUILDROOT目录是否为空,不为空时删除里面的内容 mkdir -p $RPM_BUILD_ROOT/%{_prefix} #在BUILDROOT目录中创建/usr目录 cp -ar ./* $RPM_BUILD_ROOT%{_prefix} #将当前目录中的所有文件及属性全部复制到这个目录下 %post #rpm安装后执行的脚本 mkdir -p %{wwwpath} #创建/data/htdocs/www目录 mkdir -p %{logspath} #创建/data/logs目录 groupadd www #创建新的用户组 useradd -g www www -s /dev/null #创建新用户到指定的用户组及用户目录 mkdir %{_prefix}/etc/local/services mv %{_prefix}/nginx %{_prefix}/local/services/ #将nginx文件移动到/usr/local/services/目录下 mv %{_prefix}/index.html %{wwwpath} #将index.html文件移动到/data/htdocs/www目录下 mv %{_prefix}/check.php %{wwwpath} #将check.php文件移动到/data/htdocs/www目录下 mv %{_prefix}/infor.php %{wwwpath} #将infor.php文件移动到/data/htdocs/www目录下 mv %{_prefix}/init/nginx %{_sysconfdir}/init.d/ #将/usr/init/nginx移动到/etc/init.d/目录下 ln -s %{_prefix}/local/services/nginx/sbin/* %{_prefix}/local/sbin/ #创建软链接 chmod +w %{wwwpath} #给/data/htdocs/www目录赋予写权限 chown -R www:www %{wwwpath} #修改/data/htdocs/www的所有者和所属组的 chmod +w %{logspath} #给/data/logs目录赋予写权限 chmod +x %{_sysconfdir}/init.d/nginx #给/etc/init.d/nginx文件赋予执行权限 4 r 2 w 1 x chown -R www:www %{logspath} #修改/data/logs的所有者和所属组的 chkconfig nginx on #设置开机启动 sed -i "s/ytios_admin/hostname/g" /usr/local/services/nginx/conf/nginx.conf #将这个文件中的ytios_admin替换为hostname %postun #卸载后执行的操作 %{_sysconfdir}/init.d/nginx stop #让服务暂停 sleep 2 #休眠2秒 rm -f %{_prefix}/local/sbin/nginx #删除/usr/local/sbin/nginx文件 %{_rm} -rf %{_prefix}/local/services/nginx #删除/usr/local/services/nginx文件 %{_rm} -rf %{_sysconfdir}/init.d/nginx #删除/etc/init.d/nginx文件 userdel www -r >/dev/null 2>&1 #删除www这个用户 %files #定义那些文件或目录会放入rpm中 这里会在虚拟根目录下进行,千万不要写绝对路径,而应用宏或变量表示相对目录 %defattr(-,root,root) #指定包装文件的属性 分别是(mode,owner,group) -表示默认值,对文本文件是0644 可执行文件为0755 %{_prefix}/nginx %{_prefix}/index.html %{_prefix}/check.php %{_prefix}/infor.php %{_prefix}/init %clean #删除临时目录 [ "RPM_BUILD_ROOT" != "/" ] && rm -rf "RPM_BUILD_ROOT" rm -rf $RPM_BUILD_DIR/%{name}-%{version} %changelog #变更日志
SPEC 文件详解
%define summary your package description #软件包的内容概要%define name YourPackageName #定义rpm包的包名%define version 8.0 #定义rpm包的版本号,软件的实际版本号%define release 170505 #定义rpm包的版本号(svn提交的版本号)%define arch noarch # 指编译的目标处理器架构%define group SFYSummary: %{summary} #引用上面的定义,下同Name: %{name}Version: %{version}Release: %{release} # 发布序列号License: Commercial #软件授权方式,通常就是GPLGroup: %{group}BuildRoot: %{_builddir}BuildArchitectures: %{arch}AutoReqProv: noVendor: SFY AG Requires: unzip #需要依赖的rpm包,安装此rpm包需要依赖unzip的rpm包Prefix: /opt #这个主要是为了解决今后安装rpm包时,并不一定把软件安装到rpm中打包的目录的情况。这样,必须在这里定义该标识,并在编写%install脚本的时候引用,才能实现rpm安装时重新指定位置的功能Prefix: /var/opt#下面为主体%prep #预处理脚本%build #开始构建包%install #开始把软件安装到虚拟的根目录中# 下面的 $RPM_BUILD_ROOT 参数为必传参数,不然创建会失败install -m 0755 -D /root/rpmbuild/SOURCES/ant_build/dom4j-1.6.1.jar $RPM_BUILD_ROOT/opt/sfy/jar/dom4j-1.6.1.jar #需要打进rpm包的jar包 install -m 0640 -D /root/rpmbuild/SOURCES/config/yourconfig.properties $RPM_BUILD_ROOT/var/sfy/config/yourconfig.properties #需要打进rpm包的配置文件%clean #清理临时文件%files #定义哪些文件或目录会放入rpm中%defattr (-,root,root,-)# 指定包装文件的属性,分别是(mode,owner,group),-表示默认值,对文本文件是0644,可执行文件是0755,这里不能遗漏(指上面%install中所涉及的文件路径)/opt/sfy/config/jar%defattr (-,sfy-adm,sfy,-)#csi-adm, csi 为自定义的用户与用户组,及上面的/var/sfy/config%description #描述 SFY TAS Connector package%pre #安装此rpm包前需要检验环境if [[ ! -f ${RPM_INSTALL_PREFIX}/sfy/install.info ]]then echo "Could not find ${RPM_INSTALL_PREFIX}/sfy/install.info !" echo "Base packages has been installed somewhere else or the file has been removed!" exit 255fi%post# Read installation info variableseval `grep -v \* /var/sfy/install.info`%preun%postun
要回复问题请先登录或注册
7 个回复
nccloud
1、查看rpm包概要信息
2、安装RPM包
rpm -ivh XXX.rpm
nccloud
准备一个RPM打包环境
yum install -y rpm-build*
nccloud
将一组代码简单打包成RPM
1、准备.spec概要文件
在/root/rpmbuild/SPECS/下创建概要文件,这里创建nccloud.spec
Name: NCCloud
Version: 2021.05
Release: 1.0
Summary: 用友 NC Cloud 大型企业数字化平台。
Group: yonyou
License: 用友网络科技股份有限公司(C)2019
URL: https://www.yonyou.com/
Source: %{name}%{version}.zip
%define __os_install_post %{nil}
%define debug_package %{nil}
%description
NC Cloud是应用最新的物联网、大数据、人工智能等技术开发的新一代云 ERP 产品,为成长型集团企业和大型企业集团提供混合云解决方案,基于开放、互联、融合、智能的产品理念,服务大型企业数字化转型。开放互联,全面融合,云端智能服务,打造数字企业新平台,重塑企业新技术、新商业的核心竞争力。
%prep
%setup
%install
mkdir -p $RPM_BUILD_ROOT/opt/nccloud/
cp -R * $RPM_BUILD_ROOT/opt/nccloud/
%files
%defattr(-,root,root,0755)
/opt/nccloud/
%pre
%post
chmod +x /opt/nccloud/nccloud
%preun
%postun
rm -rf /opt/nccloud
%changelog
* Tue Aug 25 2020 Niuxiaozheng <niuxzhc@yonyou.com> - 1.0.1
- 首次创建包
其中大概字段通过上述文件内容即可理解。创建概要完成后准备软件包。
2、将文件保存至/root/rpmbuild/BUILDROOT/产品名称-版本-补丁版本.el7.x86_64目录下(如不确定,可以直接进行下一步编译,根据报错放置文件)
3、启动打包
cd /root/rpmbuild/SPECS/
rpmbuild -ba nccloud.spec
应该会在/root/rpmbuild/RPMS/x86_64/生成"产品名称-版本-补丁版本.el7.x86_64.rpm"包,即可用来安装
nccloud
上步骤,拟用来执行的服务:ncserver内容如下
#!/bin/bash
#ncserver niuxzhc 2020.8.25
start_ncc=/opt/nccloud/startup.sh
sysconfig_ncc=/opt/nccloud/bin/sysConfig.sh
stop_ncc=/opt/nccloud/stop.sh
start_nmc=/opt/nccloud/nmc/server/startmonitor.sh
stop_nmc=/opt/nccloud/nmc/server/stopmonitor.sh
sysconfig_nmc==/opt/nccloud/nmc/server/configure.sh
start_intelliv=/opt/nccloud/intelliv/startup.sh
stop_intelliv=/opt/nccloud/intelliv/shutdown.sh
sysconfig_SearchServer=/opt/nccloud/microserver/SearchServer/bin/sysConfig.sh
start_SearchServer=/opt/nccloud/microserver/SearchServer/startup.sh
stop_SearchServer=/opt/nccloud/microserver/SearchServer/stop.sh
sysconfig_SessionServer=/opt/nccloud/microserver/SessionServer/bin/sysConfig.sh
start_SessionServer=/opt/nccloud/microserver/SessionServer/startup.sh
stop_SessionServer=/opt/nccloud/microserver/SessionServer/stop.sh
sysconfig_PKLockServer=/opt/nccloud/microserver/PKLockServer/bin/sysConfig.sh
start_PKLockServer=/opt/nccloud/microserver/PKLockServer/startup.sh
stop_PKLockServer=/opt/nccloud/microserver/PKLockServer/stop.sh
sysconfig_MessageServer=/opt/nccloud/microserver/MessageServer/bin/sysConfig.sh
start_MessageServer=/opt/nccloud/microserver/MessageServer/startup.sh
stop_MessageServer=/opt/nccloud/microserver/MessageServer/stop.sh
startncc() {
echo -n "Starting NC Cloud ..."
${start_ncc} 2>&1 >/dev/null
}
stopncc() {
echo -n "Stop NC Cloud ..."
${start_ncc} 2>&1 >/dev/null
}
case "$1" in
start_ncc)
${start_ncc}
;;
stop_ncc)
${stop_ncc}
;;
sysconfig_ncc)
${sysconfig_ncc}
;;
start_nmc)
${start_nmc}
;;
stop_nmc)
${stop_nmc}
;;
sysconfig_nmc)
${sysconfig_nmc}
;;
start_intelliv)
${start_intelliv}
;;
stop_intelliv)
${stop_intelliv}
;;
sysconfig_SearchServer)
${sysconfig_SearchServer}
;;
start_SearchServer)
${start_SearchServer}
;;
stop_SearchServer)
${stop_SearchServer}
;;
sysconfig_SessionServer)
${sysconfig_SessionServer}
;;
start_SessionServer)
${start_SessionServer}
;;
stop_SessionServer)
${stop_SessionServer}
;;
sysconfig_PKLockServer)
${sysconfig_PKLockServer}
;;
start_PKLockServer)
${start_PKLockServer}
;;
stop_PKLockServer)
${stop_PKLockServer}
;;
sysconfig_MessageServer)
${sysconfig_MessageServer}
;;
start_MessageServer)
${start_MessageServer}
;;
stop_MessageServer)
${stop_MessageServer}
;;
*)
echo "Usage: $0{start_ncc|stop_ncc|sysconfig_ncc|start_nmc|stop_nmc|sysconfig_nmc|start_intelliv|stop_intelliv|sysconfig_SearchServer|start_SearchServer|stop_SearchServer|sysconfig_SessionServer|start_SessionServer|stop_SessionServer|sysconfig_PKLockServer|start_PKLockServer|stop_PKLockServer|sysconfig_MessageServer|start_MessageServer|stop_MessageServer}"
esac
exit 0
nccloud
SPEC文件简介
Name: 软件名称
Version: 软件版本
Release: 发布次数 如: 1%{?dist}
Summary: 软件说明
Group: 软件分组
License: 授权模式,例如 GPL,即自由软件
URL: 源码包的URL地址,可随意填写
Source0: 源码包,可指定多个,下面可用%{SOURCE0}变量引用
BuildRoot: 编译过程中的中间存档目录,考虑到多用户的环境,一般定义为:
%{_tmppath}/%{name}-%{version}-%{release}-root ,
后面可使用$RPM_BUILD_ROOT 方式引用
BuildArch: 平台 %{_arch}
BuildRequires: 编译过程依赖的工具
Requires: 打包生成的rpm包安装时所依赖的软件包
%description 说明文档
%prep 准备部分,比如创建目录,解压源码包等,可使用%setup内部函数
%build 在BUILD目录编译,可使用%configure内部函数,或者其他编译工具,如cmake, perl等
%install 安装到BUILDROOT虚拟目录
%clean 清理文件
%files 将指定的文件添加到rpm包中,文档类型可用%doc,配置文件可 用%config
%changelog 更新记录.格式: 第一行 "* 日期 作者 " 第二行 "- 更新内容"
最终的生成的rpm名称: {Name}-{Version}-{Relesae}-{BuildArch}.rpm
nccloud
Name:nginx #软件包名称,后面可使用%{name}引用
Version:1.10.3 #软件的版本号,与源码包一致
Release:1 #发布序列号
Summary:for centos6.5x86_64 #软件包的内容概要
Group:Development/Tools #软件分组
License:GPL #软件授权方式
URL:http://www.baidu.com #软件的主页
Source0:%{name}-%{version}.tar.gz #源代码包
BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-BuildRoot #这个安装或编译时使用的“虚拟目录”
Prefix: %{_prefix} #为了解决今后安装rpm包时,并不一定把软件安装到rpm中打包的目录。必须在这里定义该标识,并在编写%install脚本的时候引用,才能实现rpm包安装时重新指定位置的功能。
Prefix: %{_sysconfdir} #%{_prefix}指/usr,而对其他的文件,例如/etc下的配置文件,则需要用%{sysconfdir}标识。
%define wwwpath /data/htdocs/www #后面在使用这个地址时就可以直接引用%{wwwpath}
%define logspath /data/logs #后面在使用这个地址时就可以直接引用%{logspath}
%description #软件包详述 doc
nginx [engine x] is a HTTP and reverse proxy server, as well as a mail proxy server
%prep #软件编译之前的处理,如解压。
%setup -q #打开软件包,加选项对软件包进行解压处理 去我们的SOURCE目录去找到源码包并解压
%install 安装软件执行语句
[ "RPM_BUILD_ROOT" != "/" ] && rm -rf "RPM_BUILD_ROOT" ##查看BUILDROOT目录是否为空,不为空时删除里面的内容
mkdir -p $RPM_BUILD_ROOT/%{_prefix} #在BUILDROOT目录中创建/usr目录
cp -ar ./* $RPM_BUILD_ROOT%{_prefix} #将当前目录中的所有文件及属性全部复制到这个目录下
%post #rpm安装后执行的脚本
mkdir -p %{wwwpath} #创建/data/htdocs/www目录
mkdir -p %{logspath} #创建/data/logs目录
groupadd www #创建新的用户组
useradd -g www www -s /dev/null #创建新用户到指定的用户组及用户目录
mkdir %{_prefix}/etc/local/services
mv %{_prefix}/nginx %{_prefix}/local/services/ #将nginx文件移动到/usr/local/services/目录下
mv %{_prefix}/index.html %{wwwpath} #将index.html文件移动到/data/htdocs/www目录下
mv %{_prefix}/check.php %{wwwpath} #将check.php文件移动到/data/htdocs/www目录下
mv %{_prefix}/infor.php %{wwwpath} #将infor.php文件移动到/data/htdocs/www目录下
mv %{_prefix}/init/nginx %{_sysconfdir}/init.d/ #将/usr/init/nginx移动到/etc/init.d/目录下
ln -s %{_prefix}/local/services/nginx/sbin/* %{_prefix}/local/sbin/ #创建软链接
chmod +w %{wwwpath} #给/data/htdocs/www目录赋予写权限
chown -R www:www %{wwwpath} #修改/data/htdocs/www的所有者和所属组的
chmod +w %{logspath} #给/data/logs目录赋予写权限
chmod +x %{_sysconfdir}/init.d/nginx #给/etc/init.d/nginx文件赋予执行权限 4 r 2 w 1 x
chown -R www:www %{logspath} #修改/data/logs的所有者和所属组的
chkconfig nginx on #设置开机启动
sed -i "s/ytios_admin/hostname/g" /usr/local/services/nginx/conf/nginx.conf #将这个文件中的ytios_admin替换为hostname
%postun #卸载后执行的操作
%{_sysconfdir}/init.d/nginx stop #让服务暂停
sleep 2 #休眠2秒
rm -f %{_prefix}/local/sbin/nginx #删除/usr/local/sbin/nginx文件
%{_rm} -rf %{_prefix}/local/services/nginx #删除/usr/local/services/nginx文件
%{_rm} -rf %{_sysconfdir}/init.d/nginx #删除/etc/init.d/nginx文件
userdel www -r >/dev/null 2>&1 #删除www这个用户
%files #定义那些文件或目录会放入rpm中 这里会在虚拟根目录下进行,千万不要写绝对路径,而应用宏或变量表示相对目录
%defattr(-,root,root) #指定包装文件的属性 分别是(mode,owner,group) -表示默认值,对文本文件是0644 可执行文件为0755
%{_prefix}/nginx
%{_prefix}/index.html
%{_prefix}/check.php
%{_prefix}/infor.php
%{_prefix}/init
%clean #删除临时目录
[ "RPM_BUILD_ROOT" != "/" ] && rm -rf "RPM_BUILD_ROOT"
rm -rf $RPM_BUILD_DIR/%{name}-%{version}
%changelog #变更日志
nccloud
SPEC 文件详解
%define summary your package description #软件包的内容概要
%define name YourPackageName #定义rpm包的包名
%define version 8.0 #定义rpm包的版本号,软件的实际版本号
%define release 170505 #定义rpm包的版本号(svn提交的版本号)
%define arch noarch # 指编译的目标处理器架构
%define group SFY
Summary: %{summary} #引用上面的定义,下同
Name: %{name}
Version: %{version}
Release: %{release} # 发布序列号
License: Commercial #软件授权方式,通常就是GPL
Group: %{group}
BuildRoot: %{_builddir}
BuildArchitectures: %{arch}
AutoReqProv: no
Vendor: SFY AG
Requires: unzip #需要依赖的rpm包,安装此rpm包需要依赖unzip的rpm包
Prefix: /opt #这个主要是为了解决今后安装rpm包时,并不一定把软件安装到rpm中打包的目录的情况。这样,必须在这里定义该标识,并在编写%install脚本的时候引用,才能实现rpm安装时重新指定位置的功能
Prefix: /var/opt
#下面为主体
%prep #预处理脚本
%build #开始构建包
%install #开始把软件安装到虚拟的根目录中
# 下面的 $RPM_BUILD_ROOT 参数为必传参数,不然创建会失败
install -m 0755 -D /root/rpmbuild/SOURCES/ant_build/dom4j-1.6.1.jar $RPM_BUILD_ROOT/opt/sfy/jar/dom4j-1.6.1.jar #需要打进rpm包的jar包
install -m 0640 -D /root/rpmbuild/SOURCES/config/yourconfig.properties $RPM_BUILD_ROOT/var/sfy/config/yourconfig.properties #需要打进rpm包的配置文件
%clean #清理临时文件
%files #定义哪些文件或目录会放入rpm中
%defattr (-,root,root,-)# 指定包装文件的属性,分别是(mode,owner,group),-表示默认值,对文本文件是0644,可执行文件是0755,这里不能遗漏(指上面%install中所涉及的文件路径)
/opt/sfy/config/jar
%defattr (-,sfy-adm,sfy,-)#csi-adm, csi 为自定义的用户与用户组,及上面的
/var/sfy/config
%description #描述
SFY TAS Connector package
%pre #安装此rpm包前需要检验环境
if [[ ! -f ${RPM_INSTALL_PREFIX}/sfy/install.info ]]
then
echo "Could not find ${RPM_INSTALL_PREFIX}/sfy/install.info !"
echo "Base packages has been installed somewhere else or the file has been removed!"
exit 255
fi
%post
# Read installation info variables
eval `grep -v \* /var/sfy/install.info`
%preun
%postun