将源码包制作成RPM包

前言:

RPM包安装快速、方便。使用源码包可以定制想要的功能,然后将其制作成.rpm格式的包。在生产环境中,我们的开发人员通常下载好源码包,选择好自己所需功能,丢给运维人员制作rpm包后。将其丢入本地yum源库,以后直接调用安装。。。

下面我们以apache WEB源码包httpd-2.2.25.tar.gz为例,来制作RPM包。

[[email protected] ~]# ls

anaconda-ks.cfg  httpd-2.2.25.tar.gz

[[email protected] ~]# yum -y install rpm-build gcc gcc-c++

[[email protected] ~]# useradd tom

[[email protected] ~]# cp httpd-2.2.25.tar.gz /home/tom/

[[email protected] ~]# su - tom

[[email protected] Packages]# rpm -qpi httpd-2.2.15-29.el6_4.x86_64.rpm 

warning: httpd-2.2.15-29.el6_4.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY

Name        : httpd                        Relocations: (not relocatable)

Version     : 2.2.25                            Vendor: Red Hat, Inc.

Release     : 29.el6_4                      Build Date: 2013年08月02日 星期五 20时03分06秒

Install Date: (not installed)               Build Host: x86-002.build.bos.redhat.com

Group       : System Environment/Daemons    Source RPM: httpd-2.2.15-29.el6_4.src.rpm

Size        : 3075393                          License: ASL 2.0

Signature   : RSA/8, 2013年08月12日 星期一 21时49分45秒, Key ID 199e2f91fd431d51

Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>

URL         : http://httpd.apache.org/

Summary     : Apache HTTP Server

Description :

The Apache HTTP Server is a powerful, efficient, and extensible

web server.

//上面我们可以看到系统自带的httpd软件包的详细信息。。 

[[email protected] ~]$ vim httpd.spec  此时我们以普通用户编辑一个文件,一定要以.spec结尾

Name:httpd   //名称

Version:2.2.15  //版本号

Release:        1%{?dist}

Summary:HTTP Server by SXS   //描述

Group:System Environment/Daemons  //复制上面的

License:ASL 2.0    //同上

URL:http://www.sxs.com   //网址

Source0:httpd-2.2.25.tar.gz   //源码包名称

BuildRoot:      %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)

BuildRequires:gcc,gcc-c++,openssl-devel   编译成RPM包需要的程序

Requires:vsftp        //安装这个RPM包所需依赖关系,一定要写,我这是随便写的

%description

http server by sxs   //描述

%prep

%setup -q

%build 

%configure     编译安装的流程

./configure --prefix=/usr/local/httpd --enable-cgi --enable-rewrite --enable-charset-lite --enable-so

make %{?_smp_mflags}

%install

rm -rf %{buildroot}

make install DESTDIR=%{buildroot}

%clean

rm -rf %{buildroot}

%files

%defattr(-,root,root,-)    这个包括了安装完成源码包,会在目标目录生成的文件,之前要先安                     装一遍!

/usr/local/httpd/bin/*

/usr/local/httpd/build/*

/usr/local/httpd/cgi-bin/*

%config /usr/local/httpd/conf/*  %config   %dir  %doc 按如下格式写

/usr/local/httpd/error/*

/usr/local/httpd/htdocs/*

/usr/local/httpd/icons/*

/usr/local/httpd/include/*

/usr/local/httpd/lib/*

%dir /usr/local/httpd/logs 

%doc /usr/local/httpd/man/*

%doc /usr/local/httpd/manual/*

usr/local/httpd/modules/*

%post         源码包安装完成所做的软连接及优化

ln -s /usr/local/httpd/bin/* /usr/local/bin/   

cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd

sed -i ‘1a # chkconfig: 35 81 81‘ /etc/init.d/httpd

sed -i ‘2a # description:Http server by sxs‘ /etc/init.d/httpd

chkconfig --add httpd

%preun     删除软件所需步骤

/etc/init.d/httpd stop

chkconfig --del httpd

rm -rf /usr/local/httpd

rm -rf /etc/init.d/httpd

%changelog   

* Tue Feb 21 2017 Shi xiang shi <[email protected]>2.2.15-1- First to 2.2.15

[[email protected] ~]$ rpmbuild httpd.spec 会提示失败,ls一下,会多出一个rpmbuild目录

[[email protected] ~]$ cd rpmbuild

[[email protected] ~]$ cp ../httpd-2.2.25.tar.gz SOURCES/

[[email protected] ~]$ cp ../httpd.spec SPEC/

[[email protected] ~]$ cd SPEC

[[email protected] ~]$ rpmbuild httpd.spec

[[email protected] ~]$接下来会进行编译安装及制作过程,制作完毕后,会在RPMS目录生成RPM包

[[email protected] x86_64]# pwd

/home/tom/rpmbuild/RPMS/x86_64

[[email protected] x86_64]# ls

httpd-2.2.25-1.el6.x86_64.rpm


时间: 2024-11-07 05:43:56

将源码包制作成RPM包的相关文章

利用src.rpm包修改源码后重新制作rpm包

1. 下载 .src.rpm包.例:https://repos.fedorapeople.org/repos/openstack/EOL/openstack-grizzly/epel-6/openstack-quantum-2013.1.4-4.el6.src.rpm 2. 使用" rpm -ivh "解压源码包.例:rpm -ivh openstack-quantum-2013.1.4-4.el6.src.rpm  (--root=xxx 指定路径)解压的结果放在 /root/rpm

CentOS使用yum源中自带的rpm包安装LAMP环境

CentOS使用yum源中自带的rpm包安装LAMP环境.这是Linux下安装LAMP的环境一种最基本最简便的方式.新手可以从容安装使用. 1. 安装基础包(可选安装)yum install -y wget zip unzip gzipyum install -y python ruby perlyum install -y gc gcc gcc-c++ 2. 安装php及其相关组件yum install -y php php-gdyum install -y php-mbstring php-

Linux-安装扩展源epel、yum下载rpm包

yum install -y epel-release #直接安装,epel.repo是最核心的文件 yum list |grep epel # 会看到很多epel的包 yum下载rpm包: 使用这个办法之前,得先确定,这个包有没有安装过 yum install -y 包名 --downloadonly #仅仅下载某包,不进行安装. ls /var/cache/yum/x86_64/7/ # 上述下载的包的路径为此.里面的目录则是仓库的名称./var/cache/yum/x86_64/7/bas

Linux程序包管理之rpm包管理

Linux程序包管理 软件包管理 功能:将编译好的程序的各组成文件打包成一个或几个程序包文件,为了方便的实现程序包的安装.升级.卸载.查询.校验.数据库维护. API:Application ProgramInterface应用程序接口: ABI:Application BinaryInterface应用二进制接口: Unix-like和linux在ABI层次是相同的 linux程序包:ELF格式: 但是与Windows相差甚远 windows程序包:exe,msi格式: API层次兼容不一定A

源码包打包成rpm包

安装rpm-build软件包 1. [[email protected] ~]# yum -y install  rpm-build(建造) 2)生成rpmbuild目录结构 1. [[email protected] ~]# rpmbuild -ba nginx.spec(为了生成下面6个目录 没有其他作用) 2. [[email protected] ~]# ls /root/rpmbuild 3. BUILD  BUILDROOT  RPMS  SOURCES  SPECS  SRPMS

gitlab升级迁移---源码包安装转rpm包(三)

距离上次gitlab升级快过去一年了,期间gitlab已更新了好多新版本,都没有进行升级.理由很简单,因为升级很麻烦,秉着能用就先用着的想法.但是最近gitlab接连发出之前旧版本有安全漏洞,看到的公告是:<GitLab 叕发布安全补丁 12.0.3, 11.11.5 和 11.10.8,请即刻升级>,都出现“叕”字了,说明不得不升级了,毕竟代码是公司的核心资产. 那么说干就干,首先去gitlab官网查看升级文档,看需要升级哪些东西.我这gitlab之前是用源码包安装的,版本是10.8.7,需

使用源码文件简单制作RPM包

实验环境: 实验的系统:Centos7.2_x86.64 源码包文件1:fastdfs-master 源码包文件2:libfastcommon-master 去github作者的站点克隆上面两个源码包文件 git clone https://github.com/happyfish100/fastdfs.git git clone https://github.com/happyfish100/libfastcommon.git 查看源码文件版本并修改文件名 -libfastcommon-mas

Android源码编译apk导入第三方包报错

报错内容如下: make: *** 没有规则可以创建"out/target/common/obj/APPS/ AndroidWFS_intermediates/classes-full-debug.jar" 需要的目标"out/target/common/obj/JAVA_LIBRARIES/ core_intermediates/classes.jar". 停止. 解决方案: 将项目复制到packages/apps目录下 新建Android.mk文件 LOCAL_

Spring IoC 源码分析 (基于注解) 之 包扫描

在上篇文章Spring IoC 源码分析 (基于注解) 一我们分析到,我们通过AnnotationConfigApplicationContext类传入一个包路径启动Spring之后,会首先初始化包扫描的过滤规则.那我们今天就来看下包扫描的具体过程. 还是先看下面的代码: AnnotationConfigApplicationContext类 //该构造函数会自动扫描以给定的包及其子包下的所有类,并自动识别所有的Spring Bean,将其注册到容器中 public AnnotationConf