httpd2.4.27rpm包制作
http2.4.27 rpm包制作
1.安装rpm-build
yum -y install rpm-build
2.使用普通用户创建spec规则文件
su - lxh
vim httpd.spec
Name: httpd
Version: 2.4.27
Release: 1%{?dist}
Summary: compiled from 2.4.27 by lxh
Group: System Environment/Daemons
License: GPL
URL: http://www.lxh.com
Source0: httpd-2.4.27.tar.gz
Source1: httpd
Source2: httpd.init
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
BuildRequires: gcc, gcc-c++, openssl-devel, make
%description
Apache web server. Compiled from 2.4.27 by lxh
%prep
%setup -q
%build
./configure --prefix=/usr/local/apache \
--bindir=/usr/sbin \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util \
--with-expat=builtin \
--with-pcre=builtin \
--enable-ssl \
--enable-modules=all
make %{?_smp_mflags}
%install
%make_install
%clean
rm -rf %{buildroot}
%files
/usr/sbin/ab
/usr/sbin/apxs
/usr/sbin/dbmmanage
/usr/sbin/htdbm
/usr/sbin/htdigest
/usr/sbin/htpasswd
/usr/sbin/httxt2dbm
/usr/sbin/logresolve
%defattr(-,root,root,-)
/usr/local/apache/bin/*
/usr/local/apache/build/*
/usr/local/apache/cgi-bin/*
%config /usr/local/apache/conf/*
/usr/local/apache/error/*
/usr/local/apache/htdocs/*
/usr/local/apache/icons/*
/usr/local/apache/include/*
%dir /usr/local/apache/logs
%doc /usr/local/apache/man/*
%doc /usr/local/apache/manual/*
/usr/local/apache/modules/*
%post
cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
sed -i '1a # chkconfig: 2345 85 15' /etc/init.d/httpd
sed -i '2a # description: apache web server' /etc/init.d/httpd
chkconfig --add httpd
%preun
/etc/init.d/httpd stop
chkconfig --del httpd
%changelog
*Tue Mar 31 2017 lxh<lxh@lxh.com> 2.4.27
--
生成工作目录
rpmbuild httpd.spec
drwxr-xr-x 3 lxh lxh 4096 8月 1 15:24 BUILD
drwxr-xr-x 2 lxh lxh 4096 8月 1 15:26 BUILDROOT
drwxr-xr-x 3 lxh lxh 4096 8月 1 14:18 RPMS
drwxr-xr-x 2 lxh lxh 4096 8月 1 14:01 SOURCES
drwxr-xr-x 2 lxh lxh 4096 8月 1 15:22 SPECS
drwxr-xr-x 2 lxh lxh 4096 8月 1 14:18 SRPMS
##############################################
2.1定义rpm包的信息
rpm包信息,主要定义用户查询rpm包信息时所显示的内容。它包含rpm包的功能描述、软件版本、版权信息和软件授权类型等等。
详细信息如下:
Name定义该rpm包的名字,必须要填写。
Version定义该rpm包的版本号,建议和源码包的名称保持一致。
Release定义rpm本身的版本号,使用默认值即可。
Summary定义关于该rpm包的一些介绍。
%description定义关于该rpm包的一些描述信息。
Group标识软件包所属类型。
License软件授权类型,比如GPL、Commercial、Shareware。
URL定义软件作者的主页。
rpm包信息中最重要的是NVR,也就是name、version、release。因为最后生成的rpm包的名称就是根据这三项来的。
rpm名称形式,如下:name-version-release.rpm。
2.2定义源码包
Source0用来定义制作rpm包时所需要的源码包。如果制作rpm包时,有多个源码包,那么使用source和数字混合,比如:
Source0: httpd-2.4.27.tar.gz
Source1: httpd
Source2: httpd.init
注意:
Source0必须要填写,而且填写的名字必须是和下载源码包名称要一模一样,还要注意只有tar.gz的源码包,才能制作rpm包。
2.3定义rpm包的依赖关系
rpm包在制作过程中会依赖基本库,而rpm包在安装时有时也需要其他软件包。这些我们都可以通过以下选项进行控制。
BuildRequires定义制作rpm包时,所依赖的基本库。该选项可有可无。
Requires定义安装该rpm包时,所依赖的软件包。该选项可有可无。
注意:
在这里要重点说明一点,Requires定义所依赖的软件包,在进行yum安装时的情况。
我们在使用yum安装软件A时,yum会在下载完A的rpm包后,对该rpm包进行检查(rpm包中会给出安装该rpm包安装时,所依赖的基础库和软件)。
如果检查出,A的安装还要依赖软件B,那么此时yum就会自动下载并安装B。B安装完毕后,就会继续安装A。如果是内网yum源的话,我们只需要把B放在内网yum源即可。
如果检查出,A的安装不需要其他软件的支持,那么yum会自动安装A。
2.4编译并安装rpm包
这一步是非常重要,类似与源码安装的的./configure、make、make install。主要包括%build、%install等选项。如下:
%build定义编译软件包时的操作
%install定义安装软件包,使用默认值即可。
BuildRoot定义安装或编译时使用的虚拟目录,建议使用默认值即可。如下:
%(mktemp-ud%{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
该参数非常重要,因为在生成rpm包的过程中,执行make install时就会把软件安装到上述的路径中。在打包的时候,同样依赖虚拟目录为根目录进行操作。
2.5安装之后生成的文件
rpm包在进行安装时,会创建相关的目录及文件,我们就可以在此定义。
%files定义rpm包安装时创建的相关目录及文件。
在该选项中%defattr (-,root,root)一定要注意。它是指定安装文件的属性,分别是(mode,owner,group),-表示默认值,对文本文件是0644,可执行文件是0755。
2.6安装前后需要执行的脚本
%prep指定rpm包安装前执行的脚本。在对软件进行打包前,我们还进行其他操作。比如解压tar.gz文件。%prep主要与%setup –q命令配合使用,建议使用默认值即可。
%post指定rpm包安装后执行的脚本。我们在安装完毕rpm包后,执行软件初始化的动作,就可以通过%post来达到目的。比如:apache在安装后,将apachectl拷贝成httpd等操作。默认spec模版文件不存在此选项。
%preun指定rpm包卸载前执行的脚本,该选项主要用于软件升级的时候会执行。默认spec模版文件不存在此选项。
%postun指定rpm包卸载后执行的脚本。默认spec模版文件不存在此选项。
2.7软件变更日志
%changelog主要用于软件的变更日志。该选项可有可无。
如果使用%changelog选项的话,一定要以*开头,以- -结尾。时间格式为,如下:
* 星期 月 日 年 XXX
--
##############################################
3.源码包制作
这里之所以解压并重新归档压缩,是因为httpd依赖于apr,在.spec中指定这个过程比较麻烦,所以就直接做到tar包里
cd /usr/local/src
下载apr-1.5.2.tar.gz apr-util-1.5.4.tar.gz httpd-2.4.27.tar.gz
tar -zxvf apr-1.5.2.tar.gz
tar -zxvf apr-util-1.5.4.tar.gz
tar -zxvf httpd-2.4.27.tar.gz
mv apr-1.5.2 httpd-2.4.27/srclib/apr
mv apr-util-1.5.4 httpd-2.4.27/srclib/apr-util
tar cxvf httpd-2.4.27.tar.gz httpd-2.4.27/
mv httpd-2.4.27.tar.gz /home/lxh/rpmbuild/SOURCES/
mv httpd-2.4.27/build/rpm/httpd.init /home/lxh/rpmbuild/SOURCES/
chown -R lxh:lxh /home/lxh/rpmbuild/SOURCES/
su - lxh
vim /home/lxh/rpmbuild/SOURCES/httpd
HTTPD=/usr/local/apache/bin/httpd
PIDFILE=/usr/local/apache/logs/httpd.pid
这个是为了提供给启动脚本httpd的配置,请根据自己实际情况来,这里我因为要把httpd安装在/usr/loacl/apache/中所以这么做
cd /home/lxh/
cp httpd.spec rpmbuild/SPECS/
rpmbuild -ba rpmbuild/SPECS/httpd.spec
4.测试
su - root
cd /home/lxh/rpmbuild/RPMS/x86_64
rpm -ivh httpd-2.2.27-1.el6.x86_64.rpm
[root@localhost x86_64]# rpm -ivh httpd-2.4.27-1.el6.x86_64.rpm
Preparing... ########################################### [100%]
1:httpd ########################################### [100%]
service httpd start 正常
完成!
5.异常处理若出现
[root@localhost x86_64]# rpm -ivh httpd-2.4.27-1.el6.x86_64.rpm
error: Failed dependencies:
libexpat.so.0()(64bit) is needed by httpd-2.4.27-1.el6.x86_64
libpcre.so.1()(64bit) is needed by httpd-2.4.27-1.el6.x86_64
需要安装相应依赖包:
glibc-2.17-105.el7.x86_64.rpm
glibc-common-2.17-105.el7.x86_64.rpm
glibc-devel-2.17-105.el7.x86_64.rpm
glibc-headers-2.17-105.el7.x86_64.rpm
glibc-static-2.17-105.el7.x86_64.rpm
glibc-utils-2.17-105.el7.x86_64.rpm
pcre-8.32-15.el7.x86_64.rpm
pcre-devel-8.32-15.el7.x86_64.rpm
rpm -ivh glibc-* --force --nodeps
rpm -ivh pcre-* --force --nodeps
httpd2.4.27rpm包制作的更多相关文章
- 烂泥:Linux源码包制作RPM包之Apache
本文由秀依林枫提供友情赞助,首发于烂泥行天下 公司服务器比较多,需要把apache源码包制作成rpm包,然后放到公司内网yum源上进行下载安装.apache的rpm包安装方式比源码安装方式比较快,这能 ...
- php-7.1.0 rpm包制作
nginx-1.8.0 rpm包制作见上篇文章:http://www.cnblogs.com/xiaoming279/p/6251149.html spec文件 Name: php Version: ...
- RPM包制作教程
一.RPM介绍 RPM 前是Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理:现在应为RPM Package M ...
- rpm包制作(待实验)
作者:firefoxbug 时间:July 18, 2014 rpm包命名规范 对于rpm包的命名符合如下规范. %{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm N ...
- Eclipse - JAR包制作细节
Eclipse - JAR包制作细节 1.Jar包分为两种,一种是不可运行的,一种是可运行的Jar包,他们的主要区别如下: > 不可直接运行的Jar包主要是用于给别的程序提供调用 ...
- RPM包制作方法
一.RPM介绍 RPM 前是Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理:现在应为RPM Package M ...
- Eclipse - JAR包制作
Eclipse - JAR包制作细节 1.Jar包分为两种,一种是不可运行的,一种是可运行的Jar包,他们的主要区别如下: > 不可直接运行的Jar包主要是用于给别的程序提供调用 ...
- rpm包制作介绍
RPM(Rpm Package Management)在ReadHat等发行版下被用作软件包管理程序,其将某个软件相关的文件置入一个.rpm包中,用rpm命令,我们可以方便地完成Linux下软件安装. ...
- Python 包制作
Python 包制作 官方文档 Python 包目录 /package_parent_folder /package /__init__.py 在__init__.py文件内添加name = pack ...
随机推荐
- Win7开启SNMP服务
通过SNMP监控Windows主机需要在被监控的服务器上安装简单网络管理协议(SNMP)的Windows组件,以Windows 7系统为例: 首先,在控制面板中找到“卸载程序”: 在弹出的窗口中单击“ ...
- 转载:c++打印日志文件的一个模板
转载地址:http://blog.csdn.net/huangyifei_1111/article/details/52134914 NetDataLog.h #ifndef NETDATALOG_H ...
- cf615D Multipliers
Ayrat has number n, represented as it's prime factorization pi of size m, i.e. n = p1·p2·...·pm. Ayr ...
- uva 10710 快速幂取模
//题目大意:输入一个n值问洗牌n-1次后是不是会变成初始状态(Jimmy-number),从案例可看出牌1的位置变化为2^i%n,所以最终判断2^(n-1)=1(mod n)是否成立#include ...
- chromedriver错误信息提示
The open chrome driver window displays: Starting ChromeDriver (v2.8.241075) on port 10820 [8804:7492 ...
- Python入门--14--字典
基础知识: 0.python对值没有要求,但对key有些要求,必须是非变量(变量,列表,字典) 1.在列表中使用成员资格操作符,和在字典中使用成员资格操作符,后者会更快 2.fromkeys这个函数会 ...
- IntelliJ IDEA 使用的问题总结
第一个问题:idea 无法创建springboot的项目 1. 点击IDEA setting之后,找到Http Proxy 选择Atuo-detect proxy settings 之后点击 ...
- java并发编程阻塞队列
在前面我们接触的队列都是非阻塞队列,比如PriorityQueue.LinkedList(LinkedList是双向链表,它实现了Dequeue接口). 使用非阻塞队列的时候有一个很大问题就是:它不会 ...
- DELPHI方法注释的标准写法
/// <summary> /// 查询数据 /// </summary> /// <param name="accountno">帐套号< ...
- IE浏览器打不开解决的方法
windows 7和windows 8上的IE浏览器打不开.非常可能是权限问题,解决的方法: 点击"開始"-"执行",输入"regedit" ...