rhel7 rpmbuild 制作二进制程序安装包(.rpm) 简单示例
下载rpm-build:
# yum install rpm-build
如果上述方式无法安装(没配置网络源,虚拟机下是安装媒介源) 可以用下列方式下载后再安装(实践结果可能版本问题引起的缺少太多的*.so,不可行)
wget http://archive.download.redhat.com/pub/redhat/linux/7.0/en/os/i386/RedHat/RPMS/rpm-build-4.0-4.i386.rpm
# rpm -ivh rpm-build-4.0-.i386.rpm
使用此方式,配置个可用的RHEL7(=CentOS7)(163)网络源,具体做法 http://mirrors.163.com/.help/centos.html 有介绍
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
# mv CentOS7-Base-.repo /etc/yum.repos.d/rhel-source.repo
# vim /etc/yum.repos.d/rhel-source.repo
在vim命令模式下 将$releasever 替换为 版本号(7)
:%s/$releasever//g
:wq
使用当前源
# yum makecache
然后重新回到主题(一路y)
# yum install rpm-build
rpmbuild默认的工作目录环境可以通过下面命令查看
rpmbuild --showrc | grep topdir
然后根据上述命令查看的结果创建文件夹(已经cd到_topdir 目录下)
# mkdir BUILD RPMS SOURCES SPECS SRPMS BUILDROOT
说明:
由于该主题是二进制程序的打包,即不存在源码编译的情况,也因为是简单示例,所以没有做打包时的哪些文档之类的工作。
文件准备:
1.将可执行目录里面的所需文件打包.tar.gz放进SOURCES目录
2.编写简单的.spec文件放在SPECS目录下,还好在SPECS目录下vim *.spec 会自动生成一个简单的模板,按需补充该模板即可
3.小工具mysqltransfer.spec的简单样例
#DEFINES
%define appauthor wjshan0808
%define appname mysqltransfer
%define appversion 2.0.17.810
%define applibprefix libmysqlcppconn
%define applibversion
%define appdirconfig transconfig
%define appliblocaldir /usr/local/lib64 Name: %{appname}
Version: %{appversion}
Release: %{?dist}
Summary: %{appauthor}'s MySql Tools ... Group: Development/Tools
License: GPL
URL: http://www.cnblogs.com/%{appauthor}
Source0: %{appname}.tar.gz Autoreq: no
#BuildRequires:
#Requires: Boost >= 1.60 BuildRoot: /opt #%{buildroot}
Packager: %{appauthor} Prefix: /opt
#Prefixes: /opt %changelog
* Thu Aug %{author}
Initial Version ... %description
It's just a rpmbuild demo ... %preun
cd %{_libdir}
libErase=$(find $(pwd) -name "%{applibprefix}*")
if [ -n "$libErase" ]; then
rm -rf $libErase
fi
cd %{appliblocaldir}
liblocalErase=$(find $(pwd) -name "%{applibprefix}*")
if [ -n "$liblocalErase" ]; then
rm -rf $liblocalErase
fi %prep
%setup -c -n %{appname} %build
##%config{"name":"wjshan0808","Email":"420028080@qq.com"}ure
##make %{?_smp_mflags} %install
##install -d $RPM_BUILD_DIR/%{appname}
%{__cp} -r $RPM_BUILD_DIR/%{appname}/ $RPM_BUILD_ROOT/ %files
%defattr(,root,root)
/%{appname}/%{appname}
/%{appname}/%{applibprefix}* %dir
/%{appname}/%{appdirconfig} %check %clean
%{__rm} -rf %{_builddir}/*
%{__rm} -rf %{buildroot} %post
cd %{appname}
%{__ln_s} %{applibprefix}.so.%{applibversion}.* %{applibprefix}.so.%{applibversion}
%{__ln_s} %{applibprefix}.so.%{applibversion} %{applibprefix}.so
%{__cp} -fd %{applibprefix}* %{_libdir}
%{__cp} -fd %{applibprefix}* %{appliblocaldir} %postun
dirErase="%{appname}"
if [ -d "$dirErase" ]; then
rm -rf $dirErase
#rmdir $dirErase
fi
然后通过运行rpmbuild命令进行打包
$ rpmbuild -bb mysqltransfer.spec
最终安装测试(最终rpm文件名称随意啦)
# rpm -ivh wjshan0808.x.x.x.rpm
问题:
上述示例默认安装的目录是 / 。问题就是在编写spec文件时不知道如何修改默认的安装目录。
文档参考:
相关文档: http://rpm5.org/docs/max-rpm.html http://ftp.rpm.org/max-rpm/index.html
rhel7 rpmbuild 制作二进制程序安装包(.rpm) 简单示例的更多相关文章
- 用Inno Setup制作WEB程序安装包
原文 用Inno Setup制作WEB程序安装包 最近做了一个WEB程序的安装包,我把制作的过程做个介绍,贴出源码给大家做个参考 看看inno 的脚本 [Setup] AppCopyright=tes ...
- Inno Setup制作应用程序安装包
我最近写了一个MFC应用程序,想发给其他的小伙伴玩一玩,直接发了个exe文件过去,结果发现小伙伴那边打不开.原来这个exe文件虽然是MFC静态编译的,但是还依赖了其他几个.dll文件,需要把这几个dl ...
- [No00009D]使用visual studio 2015 update3打包程序安装包的简单方法(不需要InstallShield)
注意: 该方法只适用于小型软件的打包发布: 该打包向导可以预先检查需要的运行库支持: 由于visual studio自2012后取消掉了自带的打包程序,如果有需要打包安装,需要使用一个叫用Instal ...
- setup factory 9制作VB程序安装包
setup factory 使用起来很简单你可以如下:1.你把你刚编译出来的exe和相关的资源文件复制到某一空目录下.把exe文件添加到setup factory里之后,在列表里右键,属性里面可以设置 ...
- 制作Linux下程序安装包——使用脚本打包bin、run等安装包
制作简单的安装包的时候可以简单的用cat命令连接两个文件,然后头部是脚本文件,执行的时候把下面的文件分解出来就行了.一般这个后部分的文件是个压缩 包,那样,就能够打包很多文件了,在脚本中解压出来即可. ...
- Mac OS平台下应用程序安装包制作工具Packages的使用介绍
一.介绍 Windows下面开发好的应用程序要进行分发时有很多打包工具可供选择,如Inno Setup, InstallShield, NSIS, Advanced Installer, Qt Ins ...
- 基于DevExpress的Winform程序安装包的制作
在我们做系统开发的时候,都会面临一个安装包制作的问题,如何把我们做好的系统,通过安装包工具整合成一个安装包给客户进行安装.安装包的优势就是一步步安装就可以了,不用复制一大堆文件给客户,还怕缺少那个文件 ...
- 使用WinRar软件制作程序安装包
之前我写过使用好压软件打包程序,见随笔: 使用好压(HaoZip)软件打包EverEdit制作安装程序 - Fetty - 博客园http://www.cnblogs.com/fetty/p/4907 ...
- 【原创】VB6.0应用程序安装包的生成(Setup Factory 9.0制作安装包的方法)
VB6.0应用程序安装包的生成,利用其自带的打包工具生成的安装程序很简陋,一点不美观:如果想让自己的应用程序安装的时候显得高大上一点,本教程提供使用Setup Factory 9.0制作安装包的方法. ...
随机推荐
- Yangcs从简书搬回来了
追求更加畅快淋漓的书写体验: 简书地址: http://www.jianshu.com/users/9913981cb400/latest_articles. Yangcs在简书[2016] 简书已经 ...
- Jquery封装:下拉框插件
代码如下: ;(function ($, window) { $.fn.addSelect = function (options) { //合并传入与默认的参数 var opts = $.exten ...
- 我要穿越,干翻 “烂语言” JavaScript!
更多精彩文章,尽在码农翻身 我是一个线程 TCP/IP之大明邮差 一个故事讲完Https CPU 阿甘 Javascript: 一个屌丝的逆袭 微服务把我坑了 如何降低程序员的工资? 程序员,你得选准 ...
- 【JMeter_22】JMeter逻辑控制器__录制控制器<Recording Controller>
录制控制器<Recording Controller> 个人感觉录制的脚本缺陷太明显,没有研究过,暂不做介绍,等后续空了研究后再写
- 多线程高并发编程(11) -- 非阻塞队列ConcurrentLinkedQueue源码分析
一.背景 要实现对队列的安全访问,有两种方式:阻塞算法和非阻塞算法.阻塞算法的实现是使用一把锁(出队和入队同一把锁ArrayBlockingQueue)和两把锁(出队和入队各一把锁LinkedBloc ...
- 一个老牌程序员说:做Java开发,怎么可以不会这 20 种类库和 API
- Tensorflow 中(批量)读取数据的案列分析及TFRecord文件的打包与读取
内容概要: 单一数据读取方式: 第一种:slice_input_producer() # 返回值可以直接通过 Session.run([images, labels])查看,且第一个参数必须放在列表中 ...
- Beta冲刺<8/10>
这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta冲刺 这个作业的目标 Beta冲刺--第八天(05.26) 作业正文 如下 其他参考文献 ... B ...
- 运行 docker .... 命令报错
一.检查 Linux 上是有存在 docker [root@localhost bin]# docker version 不存在 docker 时,可以使用如下命令下载 docker [root@lo ...
- v-if和v-show的使用和特点
v-if的特点是每次都会重新删除或创建操作 v-show的特点是每次不会进行DOM的删除和创建操作,只是切换了元素的display:none样式 <div id="app"& ...