下载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) 简单示例的更多相关文章

  1. 用Inno Setup制作WEB程序安装包

    原文 用Inno Setup制作WEB程序安装包 最近做了一个WEB程序的安装包,我把制作的过程做个介绍,贴出源码给大家做个参考 看看inno 的脚本 [Setup] AppCopyright=tes ...

  2. Inno Setup制作应用程序安装包

    我最近写了一个MFC应用程序,想发给其他的小伙伴玩一玩,直接发了个exe文件过去,结果发现小伙伴那边打不开.原来这个exe文件虽然是MFC静态编译的,但是还依赖了其他几个.dll文件,需要把这几个dl ...

  3. [No00009D]使用visual studio 2015 update3打包程序安装包的简单方法(不需要InstallShield)

    注意: 该方法只适用于小型软件的打包发布: 该打包向导可以预先检查需要的运行库支持: 由于visual studio自2012后取消掉了自带的打包程序,如果有需要打包安装,需要使用一个叫用Instal ...

  4. setup factory 9制作VB程序安装包

    setup factory 使用起来很简单你可以如下:1.你把你刚编译出来的exe和相关的资源文件复制到某一空目录下.把exe文件添加到setup factory里之后,在列表里右键,属性里面可以设置 ...

  5. 制作Linux下程序安装包——使用脚本打包bin、run等安装包

    制作简单的安装包的时候可以简单的用cat命令连接两个文件,然后头部是脚本文件,执行的时候把下面的文件分解出来就行了.一般这个后部分的文件是个压缩 包,那样,就能够打包很多文件了,在脚本中解压出来即可. ...

  6. Mac OS平台下应用程序安装包制作工具Packages的使用介绍

    一.介绍 Windows下面开发好的应用程序要进行分发时有很多打包工具可供选择,如Inno Setup, InstallShield, NSIS, Advanced Installer, Qt Ins ...

  7. 基于DevExpress的Winform程序安装包的制作

    在我们做系统开发的时候,都会面临一个安装包制作的问题,如何把我们做好的系统,通过安装包工具整合成一个安装包给客户进行安装.安装包的优势就是一步步安装就可以了,不用复制一大堆文件给客户,还怕缺少那个文件 ...

  8. 使用WinRar软件制作程序安装包

    之前我写过使用好压软件打包程序,见随笔: 使用好压(HaoZip)软件打包EverEdit制作安装程序 - Fetty - 博客园http://www.cnblogs.com/fetty/p/4907 ...

  9. 【原创】VB6.0应用程序安装包的生成(Setup Factory 9.0制作安装包的方法)

    VB6.0应用程序安装包的生成,利用其自带的打包工具生成的安装程序很简陋,一点不美观:如果想让自己的应用程序安装的时候显得高大上一点,本教程提供使用Setup Factory 9.0制作安装包的方法. ...

随机推荐

  1. Java实现 LeetCode 409 最长回文串

    409. 最长回文串 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意 ...

  2. Java实现 蓝桥杯VIP 算法提高 产生数

    算法提高 产生数 时间限制:1.0s 内存限制:256.0MB 问题描述 给出一个整数 n(n<10^30) 和 k 个变换规则(k<=15). 规则: 一位数可变换成另一个一位数: 规则 ...

  3. java实现平面点最小距离

    已知平面上若干个点的坐标. 需要求出在所有的组合中,4个点间平均距离的最小值(四舍五入,保留2位小数). 比如有4个点:a,b,c,d, 则平均距离是指:ab, ac, ad, bc, bd, cd ...

  4. Java实现第九届蓝桥杯等腰三角形

    等腰三角形 题目描述 本题目要求你在控制台输出一个由数字组成的等腰三角形. 具体的步骤是: 1. 先用1,2,3,...的自然数拼一个足够长的串 2. 用这个串填充三角形的三条边.从上方顶点开始,逆时 ...

  5. 原声js数组去重方法

    数组去重方法 方法一 ---- 利用数组filter + indexOf方法去重 方法二 ---- 利用数组forEach + indexOf方法去重 方法三 ---- 利用数组from方法 + Se ...

  6. 关于linux免密登录及ssh客户端的使用

    操作系统环境: CentOS Linux release 7.7.1908 (Core) 1.首先在linux服务器上,使用ssh-keygen命令生成密钥对文件(一直回车即可,默认使用rsa算法), ...

  7. Jmeter让压测随时做起来(转载)

    为什么要压测 这个问题问的其实挺没有必要的,做开发的同学应该都很清楚,压测的必要性,压力测试主要目的就是让我们在上线前能够了解到我们系统的承载能力,和当前.未来系统压力的提升情况,能够评估出当前系统的 ...

  8. ping外网:unknown host www.baidu.comc排查

    ping 百度出现:(ping www.baidu.com) "ping: unknown host www.baidu.com"    1.ping 网关确定是否连接上路由器,并 ...

  9. <VCC笔记> 溢出与unchecked

    在程序运算或者数据转换的时候,由于各种数据类型有各自的范围,运算的时候,其结果如果超出这个范围,就被称之为溢出.熟悉C#的同志们应该了解用来解决溢出(Overflow)问题的checked,unche ...

  10. Quartz.Net系列(二):介绍、简单使用、对比Windows计划任务

    1.介绍 Quartz是功能强大的开源作业调度库,几乎可以集成到任何Java应用程序中-从最小的独立应用程序到最大的电子商务系统.Quartz可用于创建简单或复杂的计划,以执行数以万计,数以万计的工作 ...