`
szgaea
  • 浏览: 217547 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

[【转】分享]如何将apache源码打成rpm安装包

阅读更多
如何将apache源码打成rpm安装包


一、简述
如果你对RPM没有什么好印像的话,我相信原因就是它的过复杂的包依赖关系。
但如果自己动手来编绎RPM包的话,这个问题你可以很痛愉快的进行控制
如果你有一个很好的软件版本控制系统的话,你完全可以把你所有要用的软件包都编绎成RPM, 这样可以提高一些常规软件部署效率,比如apache mysql这样的软件。
本次目标:在新装的一台centos 5.4 x86_64位系统上生成根据apache的源码包生成个apache的rpm文件,当然你也可以生成多个文件(这个由spece 的%files 关建字控制)
       httpd-2.2.14-mkrss.x86_64.rpm
       httpd-manual-2.2.14-mkrss.x86_64.rpm
       mod_ssl-2.2.14-mkrss.x86_64.rpm
难点:稍微要注意的就是编写spec 文件,如果你愿意可以自己来写,如果不愿意思,网上也有很多直接生成SPEC文件的工具,(关于工具本例不做研究)
如果想自己写却又不知道如何下手,可以从src.rpm包里获得相应的spec文件然后进行改,也是一个不错的切入点。
操作过程
   要从一个普通的机器上,成功编绎一个RPM包,基本上有以下过程
      1.配置这台机器为RPM预编译环境
      2.下载相关的软件包
      3.规划软件包的安装及相关配置
      4.动手进编写spec文件
      5.开始编绎
      6.检验你所编绎的包是不是按你的要求生成
二、配置RPM预编译环境
编绎RPM 实际上就是把源码包进行编绎安装后,再把这些安装好的软件进行打包的一个过程.所以基本上所有编绎源码所需要的和所依赖的软件包这里都需要, 然后另外再安装一套RPM 打包工具。可以直接通过YUM 进行安装
yum groupinstall  “Development Libraries” “Development Tools”
通过:rpm -q   rpm-build  rpm 如果可以看到已安装以下两个软件,基本上rpm预编译环就配置好了。
rpm-build-4.4.2.3-18.el5
rpm-4.4.2.3-18.el5
which rpmbuild
    /usr/bin/rpmbuild

三、下载相关的软件包
  1.下载httpd
      http://archive.apache.org/dist/httpd/httpd-2.2.14.tar.gz(官网最新版httpd-2.2.15.tar.gz)
  2.下载官方补丁
     当然如果你还有其它的补丁可以一并下载回来。
     http://archive.apache.org/dist/httpd/patches/apply_to_2.2.14/CVE-2009-3555-2.2.patch
     http://archive.apache.org/dist/httpd/patches/apply_to_2.2.14/CVE-2010-0425.patch
  3.官方提供的最新版src.rpm
      http://apache.freelamp.com/httpd/binaries/rpm/SRPMS/httpd-2.2.3-1.src.rpm
四.规划软件包的安装及相关配置
1、第一步根据自己的需要或者喜欢来确定编绎参数
如本例中的的APACHE 是将会在后的使用中添加php模块,所以编绎是必需要加–enable-so参数,最终本例中编绎时的参数如下:
./configure -C \
        --prefix=/usr/local/apache2 \
        --enable-static-support \
        --enable-static-htpasswd \
        --enable-static-htdigest \
        --enable-static-rotatelogs \
        --enable-static-logresolve \
        --enable-static-ab \
        --enable-static-checkgid \
        --enable-dir \
        --enable-status \
        --enable-so \
        --enable-env \
        --enable-mime \
        --enable-cgi \
        --enable-deflate \
        --enable-rewrite \
        --enable-setenvif \
        --enable-distcache \
        --enable-proxy \
        --enable-cache --enable-mem-cache \
        --enable-file-cache --enable-disk-cache \
        --enable-mods-shared="authz-host log-config ssl proxy proxy-connect \
                        proxy-http proxy-ftp alias userdir mime asis \
                        negotiation actions authn_file authn_default \
                        authz_groupfile authz_user authz_default auth_basic \
                        autoindex include filter env setenvi dav dav-fs "\
2.把所有的补丁文件及源码包放到/usr/src/redhat/SOURCE ,所有相关的文件,比如以下事先经过配置的文件都需要放入。
httpd.init  httpd.conf  httpd-autoindex.conf   httpd-default.conf
httpd-info.conf    httpd-mpm   httpd-vhosts.conf
4.动手进编写spec文件
spec 文件是以一种混合了宏语言、shell 命令以及描述文本的方式书写的。在 spec 文件中,数字符号 (#) 用来表示注释,与绝大多数其他 Unix 配置文件中是一样的,spec 文件基本上可以分成6小部份来进行编写,通过下面一个简单的例子来说明
第一部份:定义相关变量,比如下语句定义了contentdir这个变量为的值为/usr/local/apache2/htdocs
%define contentdir /usr/local/apache2/htdocs
第二部分:描述RPM包的一些基本信息(可通过关建字rpm spec 进行详细了解)
Summary: Apache HTTP Server
Name: httpd
Version: 2.2.14
Release: mkrss%{?dist}
URL: http://httpd.apache.org/
Source0: http://www.apache.org/dist/httpd/httpd-%{version}.tar.gz
License: Apache Software License
Group: System Environment/Daemons
BuildRoot: %{_tmppath}/%{name}-root
Provides: httpd-mmn = %{mmn}
通过Souce和patch加编号列出你需要添加进RPM里的一些文件及需要打的补丁
span style="color: #ff0000;">Source1: httpd-vhosts.conf
Source2: httpd.conf
Patch20: httpd-2.2.14-release.patch

%description #包描述
The Apache HTTP Server is a powerful, efficient, and extensible
web server.

第三部份:解压软件包打补丁(以%prep开始)
%prep
%setup -q
%patch21 -p1 -b .xfsz

第四部份:开始进行编绎过程以(%build开始)
%build
./configure -C \
--prefix=/usr/local/apache2 \
make

第五部份:安装编绎好的软件到临时目录(以%install开始)这个部份可以写脚本修改安装好的文件,比如可以把自己事件修改好的httpd.conf文件替换这个安装到临时目录中的文件。
%install
rm -rf $RPM_BUILD_ROOT
make DESTDIR=$RPM_BUILD_ROOT install

/usr/sbin/useradd -c "daemon" -u 48 \
-s /sbin/nologin -r -d %{contentdir} daemon 2> /dev/null || :

%clean
rm -rf $RPM_BUILD_ROOT

第六部份:把安装到临时目录下地文件打包进RPM 以(%files 开始)
%files
%dir %{prefix}/*  (把安装到临时目录下的所有文件打包)

%changelog
关于spec 文件的相关参考资料:
  http://www.chinalinuxpub.com/doc/howto/RPM-HOWTO-6.html  http://www.redhat.com/docs/books/max-rpm/max-rpm-html.tar.bz2
最终本人的httpd.spec 文件如下 可在这里下载
五、开始编绎并生成RPM包
  1、rpmbuild简单使用,(可用man rpmbuid 进行详细了解)
   -bl        verify %files section from <specfile>
               *检查<specfile>文件的%files段
   -ba       build source and binary packages from <specfile>
               *建立源码和二进制包
   -bb       build binary package only from <specfile>
               *只建立二进制包
   -bs       build source package only from <specfile>
               *只建立源码包
2、执行rpmbuild -ba httpd.spec 文件,顺例完成的话会在/usr/src/redhat/RPMX/x86_64 下生成
       httpd-2.2.14-mkrss.x86_64.rpm, httpd-manual-2.2.14-mkrss.x86_64.rpm,mod_ssl-2.2.14-mkrss.x86_64.rpm
六、对生成的RPM 包进行验证
分享到:
评论

相关推荐

    docker-1.7.0 rpm安装包

    此外,Docker-1.7.0.tar.gz文件可能包含的是Docker的源码或者一个非RPM方式的安装包。如果你选择手动编译安装,首先需要解压文件,然后按照官方文档的指引进行编译和安装。这种方式虽然更灵活,但通常需要更多步骤和...

    apache httpd2.4.46源码包

    在Linux环境中,从源码编译Apache HTTPD是理解其工作原理、自定义配置和确保与系统组件兼容性的好方法。 首先,Apache HTTPD 2.4系列的一个显著特点是模块化的架构。源码包中包含了许多核心模块,如mod_http(处理...

    Apache-OpenOffice-4.1.1-Linux-x86-64-install-rpm-en-US.tar

    标题中的“Apache-OpenOffice-4.1.1-Linux-x86-64-install-rpm-en-US.tar”指的是Apache OpenOffice的4.1.1版本的安装包,专为64位Linux操作系统设计,采用RPM(Red Hat Package Manager)格式,并且是英文版。...

    lamp源码安装包

    在本教程中,我们将详细介绍如何在CentOS 6.8环境下,通过源码安装的方式设置一个完整的LAMP环境。 首先,我们需要理解每一个组件的作用: 1. **Linux**:作为操作系统,CentOS 6.8是一个稳定且广泛使用的发行版,...

    webmin web图形化管理linux安装包最新版 内附Ubuntu/CentOS安装包及源码安装包

    webmin-2.102-1.noarch.rpm : 适用于 rhel / CentOS/ fedora 发行版的安装文件 webmin-2.102-minimal.tar.gz : 迷你版本安装源码包 webmin-2.102.tar.gz : 完整版安装源码包 demo.jpeg : 安装后的演示截图文件

    apisix-2.13.1离线安装包.zip 适用于centos7

    Apache APISIX是一款高性能、轻量级的API网关,它提供了一种高效的方式来管理和路由API请求。在给定的“apisix-2.13.1离线安装包.zip”中,包含了针对CentOS 7操作系统的离线安装文件,使得用户无需联网也能进行安装...

    crmsh官方源码

    CRMsh和Pacemaker支持多种资源代理,这意味着它们可以与各种服务(如Apache、NFS、MySQL等)集成。通过编写自定义的资源代理,可以将其他服务纳入集群管理。 9. **安全与权限管理**: 在生产环境中,理解CRMsh和...

    greenplum安装包

    1. **解压安装包**:将下载的"greenplum-db-4.2.2.4安装包"解压到适当目录,例如 `/usr/local/src`。 2. **配置环境**:编辑`bashrc`或`bash_profile`文件,设置`GREENPLUM_HOME`变量指向解压后的目录,并添加到PATH...

    基于linux的apache+mysql+php的安装配置.pdf

    Apache的安装同样需要源码下载,解压后配置并编译安装,通常需要配置HTTPD服务器的配置文件httpd.conf,设置监听端口、日志文件路径等参数。此外,还需要安装与MySQL连接的PHP扩展,如php-mysql,以便PHP可以访问...

    常用linux安装包.zip

    本压缩包"常用linux安装包.zip"包含了几个在Linux环境下常见的软件安装包,包括Java开发环境(JDK)、Web服务器(Apache Tomcat)、内存数据库(Redis)、关系型数据库(MySQL)、静态文件服务器(Nginx)。下面将对...

    linux 资源安装包

    3. 下载并解压安装包:例如,使用`wget`下载libxml源码,然后用`tar -zxvf libxml-1.8.17.tar.gz`解压。 4. 配置、编译和安装:进入解压后的目录,运行`./configure`,`make`,然后`sudo make install`。 5. 对于PHP...

    subversion离线安装包

    离线安装包对于没有互联网连接或者网络环境受限的环境尤其有用。在这个场景下,我们将详细介绍如何在CentOS 7系统上离线安装Subversion。 首先,我们来了解安装Subversion所需的依赖包。`apr-1.5.1.tar.gz`和`apr-...

    Linux下安装并配置Apache+PHP+MySQL

    4. **启动Apache服务**:使用命令 `service httpd start` 启动Apache服务,并将其设为开机自启。 #### 五、安装PHP解释器 1. **下载并解压PHP安装包**:`php-5.2.6.tar.gz`。 2. **配置编译选项**:根据需求配置...

    Linux下Apache、php3、MySQL整合方法

    - 解压Apache源码包并重命名 - 使用`./configure`进行配置,设置Apache的安装路径和端口号,如`--prefix=/usr/local/apache --with-port=8000` - 编译并安装Apache 5. **PHP与Apache的集成** - 解压PHP源码包...

    linux下编译安装mysql,apache,php文档

    - 设定最大磁盘空间,这将决定虚拟机硬盘的大小。 - 配置Network Adapter参数,根据网络需求选择合适的模式,如NAT或桥接模式。 2. **安装Linux发行版:** - 设置完成后,虚拟机会自动创建Red Hat Enterprise ...

    Linux虚拟主机—基于域名

    2、安装apache 所需要的rpm安装包(本次实验为源码安装,也可以用yum安装 看自己需求) rpm -ivh apr-1.4.8-3.el7.x86_64.rpm rpm -ivh apr-devel-1.4.8-3.el7.x86_64.rpm rpm -ivh cyrus-sasl-devel-2.1.26-20.el7_...

    Weblogic10+Apache2.2.4整合过程

    1. 将Weblogic10的安装包`server100_linux32.bin`复制到根目录,并赋予执行权限。 2. 运行安装命令`./server100_linux32.bin`,根据提示进行图形或文本安装,确保BEA HOME设置为`/usr/local/bea`。 3. 安装完成后,...

    lamp源码安装教程(附mysql权限)

    在源码安装前,需要卸载系统中可能存在的Apache、MySQL和PHP的RPM安装包,以避免冲突。使用`rpm –qa | grep httpd/mysqld/php`查询并用`yum remove`卸载。 3. **关闭SELinux和防火墙** - 为了确保安装顺利,需要...

    linux 安装httpd 所需要安装各自安装包

    对于基于RPM的系统(如CentOS/RHEL),使用: ```bash sudo yum groupinstall "Development Tools" ``` 2. **下载源码包**: 使用`wget`或浏览器下载httpd、apr和apr-util的源码包到一个目录,例如`/usr/local...

    zabbix linux安装包

    - 配置Apache或Nginx以支持Zabbix前端,将`/usr/share/zabbix/`作为webroot的一部分。 - 访问`http://your_server_ip/zabbix`,使用在SQL脚本中创建的默认用户名`Admin`和密码`zabbix`登录。 - 在Web界面中配置...

Global site tag (gtag.js) - Google Analytics