文档章节

CentOS下打包

rgds
 rgds
发布于 2015/08/04 17:25
字数 487
阅读 116
收藏 1

一、前言

    打包是指将源码包编译成rpm包,在centos下通过rpmbuild命令和spec文件来实现。

    相对于源码编译安装的好处是,不需要每次安装都编译一次,那样很慢,对于打好的rpm包,直接试用rpm命令就可以安装。

    相对于一些官方提供的rpm包的优势在于,可以想源码编译一样定制化包的安装,比如修改安装的路径,添加一些自己的配置和文件等。

以下的打包以postgresql为例


二、安装rpmbuild

$ sudo yum install -y rpm-build


三、初始化打包目录

$ sudo mkdir -p /data
$ cd /data/
$ sudo mkdir -p rpmbuild/{BUILD,BUILDROOT,RPMS,SRPMS,SOURCES,SPECS}
$ sudo chown -R $(whoami): rpmbuild


四、准备spec文件

$ sudo mkdir -p rpmbuild/SPECS/postgresql/{9.4,conf}
$ cd rpmbuild/SPECS/postgresql/9.4/
$ vim pg94.el6.spec
%define debug_package %{nil}

Name: postgresql
Summary: PostgreSQL server
Version: 9.4.4
Release: 1%{?dist}
Source: %{name}-%{version}.tar.bz2
URL: http://www.postgresql.org/ftp/source/
Group: Applications/Database
Vendor: PostgreSQL
License: Public Domain

BuildRequires: libxml2-devel libxslt-devel uuid-devel readline-devel
Requires: perl-ExtUtils-Embed libxml2 libxslt readline uuid

%description
Postgres is a truly awesome database. When we started working on Launchpad I wasn't sure if it would be up to the job. I was so wrong. It's been robust, fast, and professional in every regard.

%prep
%setup -q
env CFLAGS=" -march=core2 -O2 " ./configure --prefix=/opt/pg94 --with-openssl --with-libxml --with-libxslt --with-ossp-uuid

%build
make -j4

%install
make install DESTDIR=$RPM_BUILD_ROOT
make install-world DESTDIR=$RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT/etc/ld.so.conf.d
install -d $RPM_BUILD_ROOT/etc/profile.d

cd $RPM_BUILD_DIR/../SPECS/postgresql

test -L $RPM_BUILD_ROOT/opt/pgsql && rm -f $RPM_BUILD_ROOT/opt/pgsql
ln -sf /opt/pg94 $RPM_BUILD_ROOT/opt/pgsql

test ! -f /etc/ld.so.conf.d/pgsql.conf && cp ./conf/ld.pgsql.conf $RPM_BUILD_ROOT/etc/ld.so.conf.d/pgsql.conf
test ! -f /etc/profile.d/pgsql.sh && cp ./conf/profile.pgsql.sh $RPM_BUILD_ROOT/etc/profile.d/pgsql.sh

%post

%postun

%clean
rm -fr $RPM_BUILD_ROOT

%files
%defattr(-, root, root)
/opt/*
/etc/*

$ cd ../conf/
$ sudo vim ld.pgsql.conf
/opt/pgsql/lib
$ sudo vim profile.pgsql.sh
#!/bin/env bash
export PATH=/opt/pgsql/bin:$PATH


五、打包

先配置变量方便以后的使用:

$ sudo vim /etc/profile.d/rpmbuild.sh
#!/bin/env bash
alias rpmbuild='rpmbuild --define "_topdir /data/rpmbuild" -bb'
$ sudo source /etc/profile.d/rpmbuild.sh

打包就只需要执行:

$ rpmbuild path/xxx.spec


六、~/.rpmmacros

%_topdir      %(echo $HOME)/rpmbuild
%_tmppath  %{_topdir}/tmp
%buildroot  %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
%_rpmfilename  %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm

参考:How to create an RPM packageRpmbuild Tutorial

© 著作权归作者所有

共有 人打赏支持
rgds
粉丝 33
博文 48
码字总数 38203
作品 0
朝阳
数据库管理员
私信 提问
搬瓦工centos7安装配置Shadowsocks,附一个简单iptables脚本

先是基本配置一下安装好的centos7,用的是搬瓦工的vps root登录 安装sudo,如果没有的话 然后添加一个用户foo 看一下wheel那行是不是已经反注释掉 改root密码 更改ssh的配置文件 /etc/ssh/ssh...

wzk
2016/07/25
1K
0
教你打包自己的专属docker镜像

前序 什么是docker? Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用...

yangxuncai110
2018/06/27
0
0
怎么把整个centos打包形成.iso文件,有多少种方法备份centos?

怎么把整个centos打包形成.iso文件,有多少种方法备份centos?

知行合一1
2016/06/03
500
2
soft - 20141122

FTP: FileZilla_Server UML: Powerbuildr powerdesigner rose 打包工具: ha_innosetup Linux 1下载 http://mirrors.neusoft.edu.cn/centos/5.9/isos/i386/ CentOS-5.9-i386-bin-DVD-1of2.i......

jayronwang
2014/11/22
0
0
centos6打包tengine rpm

一、准备基本环境 安装打包软件及tengine编译所需依赖 yum -y install rpm-build wget make m4 gcc-c++ autoconf automake lua-devel pcre-devel libxml2-devel gd-devel perl-ExtUtils-Embe......

Firxiao
2016/03/29
86
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 加油,还有11个小时就下班了

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @_全村的希望 :吴亦凡把大碗面正儿八经做成单曲了,你别说,还挺好听 《大碗宽面》- 吴亦凡 手机党少年们想听歌,请使劲儿戳(这里) @tom_t...

小小编辑
27分钟前
53
7
C++ vector和list的区别

1.vector数据结构 vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。 因此能高效的进行随机存取,时间复杂度为o(1); 但因为内存空间是连续的,所以在进行插入和删除操作时,会造...

shzwork
今天
6
0
Spring之invokeBeanFactoryPostProcessors详解

Spring的refresh的invokeBeanFactoryPostProcessors,就是调用所有注册的、原始的BeanFactoryPostProcessor。 相关源码 public static void invokeBeanFactoryPostProcessors(Configu......

cregu
昨天
5
0
ibmcom/db2express-c_docker官方使用文档

(DEPRECIATED) Please check DB2 Developer-C Edition for the replacement. What is IBM DB2 Express-C ? ``IBM DB2 Express-C``` is the no-charge community edition of DB2 server, a si......

BG2KNT
昨天
4
0
Ubuntu 18.04.2 LTS nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-bionic)

平台:Ubuntu 18.04.2 LTS nvidia-docker2 版本:2.0.3 错误描述:在安装nvidia-docker2的时候报dpkg依赖错误 nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-bionic) 先看一下依......

Pulsar-V
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部