rpmbuild打包文件或目录
2018-08-30 22:02
961 查看
一 事因:
线上要配置一个软件,不需要编译,直接把目录cp上去就行,但是需要简单的执行几条命令。
现有配管系统可以直接搞个目录然后写两条执行命令即可。总感觉要标准化点。。。 搞个rpm包吧。
延伸到rpmbuild打包文件和目录 以及执行一些命令。
先白话点没用的:
农业耕作 起源于 刀耕火种 进化到 牲畜耕作 进化到 机械化自动化
运维也是如此呀,开始是 各种源码编译,然后是rpm安装,现在是docker镜像。。
原始点比较有代表性的 curl 以及 wget 安装。。。
curl -SsL xxx/xx.sh | bash 或者 wget -SO/tmp/ http://ssss/xxxx.tar.gz 然后执行安装命令
进化到rpm包,以及配管系统
puppet、cfengine、chef、func、fabric、salt
到现在的docker
各种镜像
二 这事怎么搞:
简单说就行怎么打包文件 和 目录:
spec文件
源文件夹:
打包下:
忽略我丑陋的白条条
安装个试试:
三 简单说几句:
补充说明两点:
1 注意目录层级关系,如果不清楚,可以写个创建看报错,然后慢慢调整。
2 注意打包的文件中是否有库文件,rpmbuild过程默认是自动处理依赖关系,哪怕只是上面这种cp 也会报错
这时候需要用参数关闭解析依赖:
The autoreqprov, autoreq, and autoprov Tags — Disable Automatic Dependency Processing
There may be times when RPM‘s automatic dependency processing is not desired. In these cases, the autoreqprov, autoreq, and autoprov tags may be used to disable it. This tag takes a yes/no or 0/1 value. For example, to disable automatic dependency processing, the following line may be used:
AutoReqProv: no The autoreq and autoprov tags can be used to disable automatic processing of requirementsor "provides" only, respectively.当autoreqprov 打开时,在RPM 包编译的时候,会执行以下操作:
1)所有打包进RPM的二进制程序需要的共享库都会被分析出来,然后打包进RPM的 requirements 中。
2)所有该RPM提供的 so 文件的名字都会被自动添加到该RPM的 provides 中
事情很简单,但是踩坑了,因为刚才说的两点。。。 特别是第二点,明明就是cp个目录而已,依赖的一堆的库,,, 看着就闹心。
现在记录掉的头发,告知于新手。。。
线上要配置一个软件,不需要编译,直接把目录cp上去就行,但是需要简单的执行几条命令。
现有配管系统可以直接搞个目录然后写两条执行命令即可。总感觉要标准化点。。。 搞个rpm包吧。
延伸到rpmbuild打包文件和目录 以及执行一些命令。
先白话点没用的:
农业耕作 起源于 刀耕火种 进化到 牲畜耕作 进化到 机械化自动化
运维也是如此呀,开始是 各种源码编译,然后是rpm安装,现在是docker镜像。。
原始点比较有代表性的 curl 以及 wget 安装。。。
curl -SsL xxx/xx.sh | bash 或者 wget -SO/tmp/ http://ssss/xxxx.tar.gz 然后执行安装命令
进化到rpm包,以及配管系统
puppet、cfengine、chef、func、fabric、salt
到现在的docker
各种镜像
二 这事怎么搞:
简单说就行怎么打包文件 和 目录:
spec文件
#cd ~/rpmbuild/SPECS #cat test-1.0.0.spec Name:test Version: 1.0.0 Release: 1%{?dist} License: GPL SOURCE: %{name}-%{version}.tar.gz Group: Customize / Daemons Packager: dadada@dadada.com URL:http://sssss.com.cn Summary: GUN X86_64 flume AutoReqProv: no %description Flume is a distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of log data. It has a simple and flexible architecture based on streaming data flows. It is robust and fault tolerant with tunable reliability mechanisms and many failover and recovery mechanisms. It uses a simple extensible data model that allows for online analytic application. %prep #echo "在安装之前执行的命令,可以替换为创建目录 创建用户等" rm -rf $RPM_BUILD_ROOT/* %setup -q #id kafka || sudo useradd kafka -s /sbin/nologin %install install -d $RPM_BUILD_ROOT/ cp -a * $RPM_BUILD_ROOT/ %files %defattr(-,kafka,kafka,-) /data0/test/ #%attr(0755,root,root) %doc %changelog
源文件夹:
#cd ~/rpmbuild/SOURCE #mkdir -p test-1.0.0/data0/test/ #touch test-1.0.0/data0/test/sss.txt # tar zcvf test-1.0.0.tar.gz test-1.0.0 test-1.0.0/ test-1.0.0/data0/ test-1.0.0/data0/test/ test-1.0.0/data0/test/sss.txt
打包下:
rpmbuild -ba flume-1.8.0.spec
忽略我丑陋的白条条
安装个试试:
#sudo rpm -ivh /usr/home/tenghe/rpmbuild/RPMS/x86_64/test-1.0.0-1.el6.x86_64.rpm Preparing... ########################################### [100%] 1:test ########################################### [100%] # sudo rpm -ql test /data0/test /data0/test/sss.txt就这样,就把文件 或者说目录搞到机器上了,然后就可以把rpm拿去部署了。
三 简单说几句:
补充说明两点:
1 注意目录层级关系,如果不清楚,可以写个创建看报错,然后慢慢调整。
2 注意打包的文件中是否有库文件,rpmbuild过程默认是自动处理依赖关系,哪怕只是上面这种cp 也会报错
这时候需要用参数关闭解析依赖:
AutoReqProv: no注意 这个在正常制作rpm包的时尽量不要关闭。
The autoreqprov, autoreq, and autoprov Tags — Disable Automatic Dependency Processing
There may be times when RPM‘s automatic dependency processing is not desired. In these cases, the autoreqprov, autoreq, and autoprov tags may be used to disable it. This tag takes a yes/no or 0/1 value. For example, to disable automatic dependency processing, the following line may be used:
AutoReqProv: no The autoreq and autoprov tags can be used to disable automatic processing of requirementsor "provides" only, respectively.当autoreqprov 打开时,在RPM 包编译的时候,会执行以下操作:
1)所有打包进RPM的二进制程序需要的共享库都会被分析出来,然后打包进RPM的 requirements 中。
2)所有该RPM提供的 so 文件的名字都会被自动添加到该RPM的 provides 中
事情很简单,但是踩坑了,因为刚才说的两点。。。 特别是第二点,明明就是cp个目录而已,依赖的一堆的库,,, 看着就闹心。
现在记录掉的头发,告知于新手。。。
相关文章推荐
- vue2.0 配置build项目打包目录、资源文件(assets\static)打包目录
- maven build src/main/java目录下的xml等资源文件不被打包
- 深入解析用rpmbuild 打rpm包时引起的打包前后文件大小变化的问题
- RPM 打包技术与典型 SPEC 文件分析
- Android读取打包到assets目录下的文件
- rpm方式安装的mysql服务如何修改数据文件目录
- 如何将一个目录下的子目录和文件打包成war包
- 底层:vue-cli脚手架build目录中的webpack.prod.conf.js配置文件
- tar 打包并压缩文件,排除文件前缀目录
- RPM打包技术与典型SPEC文件分析
- 使用ant让Android自动打包的build.xml,自动生成签名的apk文件(支持android4.0以上的版本)
- vue-cli脚手架build目录中的webpack.dev.conf.js配置文件
- vue-cli脚手架build目录下utils.js工具配置文件详解
- Build fast jar 打包,增加配置文件
- vue-cli脚手架build目录中的karma.conf.js配置文件
- make: *** /lib/modules/4.4.0-53-generic/build: 没有那个文件或目录。 停止。
- Buildroot 打包文件系统流程跟踪
- Android gradle build 修改文件名称及目录
- 可执行文件简单打包成rpm文件
- Android项目在eclipse中无法打包apk文件[bin目录下没生成apk文件]问题解决