下载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_0028_ImplementStrStr

    package javaLeetCode.primary; import java.util.Scanner; public class ImplementStrStr_28 { public sta ...

  2. java实现棋盘上的麦子

    ** 棋盘上的麦子** 你一定听说过这个故事.国王对发明国际象棋的大臣很佩服,问他要什么报酬,大臣说:请在第1个棋盘格放1粒麦子,在第2个棋盘格放2粒麦子,在第3个棋盘格放4粒麦子,在第4个棋盘格放8 ...

  3. 【Python源码剖析】对象模型概述

    Python 是一门 面向对象 语言,实现了一个完整的面向对象体系,简洁而优雅. 与其他面向对象编程语言相比, Python 有自己独特的一面. 这让很多开发人员在学习 Python 时,多少有些无所 ...

  4. mysql基础-新版5.7.10源码安装-记录(一)

    0x01 MySQL 从 5.5 版本开始,通过 ./configure 进行编译配置方式已经被取消,取而代之的是 cmake 工具 引用一句话 cmake的重要特性之一是其独立于源码(out-of- ...

  5. 【Spring注解驱动开发】自定义TypeFilter指定@ComponentScan注解的过滤规则

    写在前面 Spring的强大之处不仅仅是提供了IOC容器,能够通过过滤规则指定排除和只包含哪些组件,它还能够通过自定义TypeFilter来指定过滤规则.如果Spring内置的过滤规则不能够满足我们的 ...

  6. zabbix服务无法正常启动

    环境介绍 操作系统 centos 7.4 zabbix 3.4.7   故障现象说明 zabbix agent无法启动   web 监控不到客户端服务器   查看日志报错 提示不能打开日志,不能创建信 ...

  7. Android开源框架选择

    Android开源项目推荐之「网络请求哪家强」 Android开源项目推荐之「图片加载到底哪家强」 Android网络框架的封装 Android Volley+OkHttp3+Gson(Jackson ...

  8. Apollo移植

    Apollo移植 环境 平台 ubuntu16.04 Apollo_kernel 1.0 安装步骤步骤 步骤一:安装ubuntu(官方建议使用Ubuntu 14.04.3) 步骤一和步骤二参考文档路径 ...

  9. 0.大话Spring Cloud

    天天说Spring cloud ,那到底它是什么? 定义 它不是云计算解决方案 它是一种微服务开发框架 它是(快速构建分布式系统的通用模式的)工具集 它基于Spring boot 构建开发 它是云原生 ...

  10. yaml读取封装

    #!/usr/bin/env python # -*- coding: utf-8 -*- """ 对yaml格式的配置文件的操作 """ ...