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制作安装包的方法. ...
随机推荐
- Java实现 LeetCode 108 将有序数组转换为二叉搜索树
108. 将有序数组转换为二叉搜索树 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: ...
- Java实现 LeetCode 17 电话号码的字母组合
17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23& ...
- Java实现 洛谷 P1208 [USACO1.3]混合牛奶 Mixing Milk
输入输出样例 输入 #1 100 5 5 20 9 40 3 10 8 80 6 30 输出 #1 630 import java.util.Arrays; import java.util.Scan ...
- Java实现第九届蓝桥杯缩位求和
缩位求和 题目描述 在电子计算机普及以前,人们经常用一个粗略的方法来验算四则运算是否正确. 比如:248 * 15 = 3720 把乘数和被乘数分别逐位求和,如果是多位数再逐位求和,直到是1位数,得 ...
- java实现第七届蓝桥杯压缩变换
压缩变换 压缩变换 小明最近在研究压缩算法. 他知道,压缩的时候如果能够使得数值很小,就能通过熵编码得到较高的压缩比. 然而,要使数值很小是一个挑战. 最近,小明需要压缩一些正整数的序列,这些序列的特 ...
- Spring AOP概念及作用
一:SpringAOP概念 面向切面编程(Aspect Oriented Programming)提高了另一种角度来思考程序的结构,通过预编译方式和运行期间的动态代理实现程序功能的统一维护的一种技术. ...
- js数据劫持 Object.defineProperty() 作用
原生js Object.defineProperty() 作用 假设我们有一个obj对象,我们要给他设置一个name属性会这么做 Object.defineProperty()也可以设置对象属性 这个 ...
- Java多线程之深入解析ThreadLocal和ThreadLocalMap
ThreadLocal概述 ThreadLocal是线程变量,ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的.ThreadLocal为变量在每个线程中都创建了一个副本,那 ...
- 如何通过AzureAD平台提供的授权方式访问sharepoint online
官方文档: 1.https://docs.microsoft.com/zh-cn/previous-versions/azure/dn645543(v=azure.100)?redirectedfro ...
- session共享同步redis策略
关于session共享的文章,网上很多,可是最关键的点我没有看到一篇.也就是session对象到底是怎么同步到redis的. spring-session底层原理到底是怎么样的一个同步更新策略,我没有 ...