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_0028_ImplementStrStr
package javaLeetCode.primary; import java.util.Scanner; public class ImplementStrStr_28 { public sta ...
- java实现棋盘上的麦子
** 棋盘上的麦子** 你一定听说过这个故事.国王对发明国际象棋的大臣很佩服,问他要什么报酬,大臣说:请在第1个棋盘格放1粒麦子,在第2个棋盘格放2粒麦子,在第3个棋盘格放4粒麦子,在第4个棋盘格放8 ...
- 【Python源码剖析】对象模型概述
Python 是一门 面向对象 语言,实现了一个完整的面向对象体系,简洁而优雅. 与其他面向对象编程语言相比, Python 有自己独特的一面. 这让很多开发人员在学习 Python 时,多少有些无所 ...
- mysql基础-新版5.7.10源码安装-记录(一)
0x01 MySQL 从 5.5 版本开始,通过 ./configure 进行编译配置方式已经被取消,取而代之的是 cmake 工具 引用一句话 cmake的重要特性之一是其独立于源码(out-of- ...
- 【Spring注解驱动开发】自定义TypeFilter指定@ComponentScan注解的过滤规则
写在前面 Spring的强大之处不仅仅是提供了IOC容器,能够通过过滤规则指定排除和只包含哪些组件,它还能够通过自定义TypeFilter来指定过滤规则.如果Spring内置的过滤规则不能够满足我们的 ...
- zabbix服务无法正常启动
环境介绍 操作系统 centos 7.4 zabbix 3.4.7 故障现象说明 zabbix agent无法启动 web 监控不到客户端服务器 查看日志报错 提示不能打开日志,不能创建信 ...
- Android开源框架选择
Android开源项目推荐之「网络请求哪家强」 Android开源项目推荐之「图片加载到底哪家强」 Android网络框架的封装 Android Volley+OkHttp3+Gson(Jackson ...
- Apollo移植
Apollo移植 环境 平台 ubuntu16.04 Apollo_kernel 1.0 安装步骤步骤 步骤一:安装ubuntu(官方建议使用Ubuntu 14.04.3) 步骤一和步骤二参考文档路径 ...
- 0.大话Spring Cloud
天天说Spring cloud ,那到底它是什么? 定义 它不是云计算解决方案 它是一种微服务开发框架 它是(快速构建分布式系统的通用模式的)工具集 它基于Spring boot 构建开发 它是云原生 ...
- yaml读取封装
#!/usr/bin/env python # -*- coding: utf-8 -*- """ 对yaml格式的配置文件的操作 """ ...