如果你对RPM没有什么好印像的话,我相信原因就是它的过复杂的包依赖关系。
但如果自己动手来编绎RPM包的话,这个问题你可以很愉快的进行控制
如果你有一个很好的软件版本控制系统的话,你完全可以把你所有要用的软件包都编绎成RPM, 这样可以提高一些常规软件部署效率,比如apache mysql这样的软件。
本次目标:在新装的一台centos6.4 x86_64位系统上生成根据apache的源码包生成个apache的rpm文件
yum-y install wget -y
yuminstall rpm-build -y
wget http://archive.apache.org/dist/httpd/httpd-2.4.4.tar.bz2
这些文件的下载可以放在一个文档,比如/usr/local/src,本博写的文件是直接下载在/root目录下的
RPM 的建立可以直接从Apache httpd源码压缩包中使用以下命令:
rpmbuild-tb httpd-2.4.4.tar.bz2
但是如果下载好httpd的源码包就直接使用这个命令的话是会有如下错误提示的
相应的“开发”被安装在您的构建系统之前建立的RPM包将被要求,rpmbuild的命令会自动计算需要什么的RPM,并列出在您的系统中缺少的任何依赖。这些“开发”包不会被构建完成后,可以安全地删除。
根据上面的提示要安装的包,我们要下载apr 1.4以上的相关的包和distcache的包,在系统自带的包里面的apr的版本太低的。
wget http://mirror.bit.edu.cn/apache/apr/apr-1.5.0.tar.bz2
wget http://mirror.bit.edu.cn/apache/apr/apr-util-1.5.3.tar.bz2
wget http://dl.fedoraproject.org/pub/fedora/linux/releases/18/Fedora/source/SRPMS/d/distcache-1.4.5-23.src.rpm
如下所示下载好apr的包要是直接用rpmbuild打包也还是不行,还是要安装相关的组件
结和上面关于apr和httpd相关的组件整合在一起安装如下所示:除了freetds的组件,这个组件要从别的源下载的如epel
yum -y install autoconf libtool doxygen expat expat-devel libuuid-develdb4-devel mysql-devel unixODBC-devel postgresql-devel sqlite-devel pcrepcre-devel lua-devel libxml2-devel openldap-devel nss-devel zlib-devel libselinux-develmake
安装“freetds freetds-devel”这个相关的组件的,只是这个包在系统自带的那个包里是没有的,须要用外网的源,比如epel、remi等。这里我就用epel的源
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
yum -y install freetds freetds-devel
安装好上面相关的组件后就可以使用这个命令“rpmbuild-tb apr-1.5.0.tar.bz2”编译apr的rpm包了。
打包好之后会/root/rpmbuild/RPMS/x86_64/下生成rpm的包的,这里的这个rpmbuild这个目录是我在做第一步的时候使用这个命令时“rpmbuild -tb httpd-2.4.6.tar.bz2”它自动生成的,当然也可以自己建这个目录的及这个目录下面的这几个目录的(BUILD BUILDROOT RPMS SOURCES SPECS SRPMS)
下面就是安装apr的包
rpm–ivh /root/rpmbuild/RPMS/x86_64/apr-1.5.0-1.x86_64.rpm
rpm-ivh /root/rpmbuild/RPMS/x86_64/apr-devel-1.5.0-1.x86_64.rpm
rpmbuild -tb apr-util-1.5.3.tar.bz2
rpm -ivh /root/rpmbuild/RPMS/x86_64/apr-util-* // 安装转为rpm包的apr-util的所有的包
最后要安装distcache这个组件:
rpmbuild --rebuild distcache-1.4.5-23.src.rpm // 从源码包建立二进制包
rpm -ivh /root/rpmbuild/RPMS/x86_64/distcache-* // 安装所有制作好的distcache的rpm的包
所有和httpd制作相关的组件都安装好了,接下来就可以编译httpd的rpm包了
rpmbuild -tb httpd-2.4.4.tar.bz2
httpd 的rpm包打包好之后就可以安装了如下所示,不过在安装httpd的rpm包之前要先安装mailcap组件的,不然会提示“
[root@localhost~]# rpm -ivh rpmbuild/RPMS/x86_64/httpd-2.4.4-1.x86_64.rpm
error: Failed dependencies:
/etc/mime.types is needed by httpd-2.4.4-1.x86_64”
yum install mailcap -y
安装完mailcap组件后再安装下面的httpd的相关的rpm包:
rpm–ivh /root/rpmbuild/RPMS/x86_64/httpd-2.4.4-1.x86_64.rpm
rpm–ivh /root/rpmbuild/RPMS/x86_64/httpd-devel-2.4.4-1.x86_64.rpm
rpm–ivh /root/rpmbuild/RPMS/x86_64/httpd-tools-2.4.4-1.x86_64.rpm
rpm -ivh /root/rpmbuild/RPMS/x86_64/httpd-manual-2.4.4-1.x86_64.rpm
rpm -ivh /root/rpmbuild/RPMS/x86_64/mod_authnz_ldap-2.4.4-1.x86_64.rpm
rpm -ivh /root/rpmbuild/RPMS/x86_64/mod_lua-2.4.4-1.x86_64.rpm
rpm -ivh /root/rpmbuild/RPMS/x86_64/mod_proxy_html-2.4.4-1.x86_64.rpm
rpm -ivh /root/rpmbuild/RPMS/x86_64/mod_socache_dc-2.4.4-1.x86_64.rpm
rpm -ivh /root/rpmbuild/RPMS/x86_64/mod_ssl-2.4.4-1.x86_64.rpm
service httpd start
rpmbuild --help 命令的解释说明如下:
————————————————————————————————————————————
* 使用命令:rpmbuild ·[OPTION]
Build options with [ | | ]:
*建立包的选项有:[ 从文件建立 |从 包建立 |从 包建立]
*从文件建立
-bp build through %prep (unpack sources and apply patches) from
* -bp 从文件的%prep段开始建立(解开源码包并打补丁)
-bc build through %build (%prep, then compile) from
*-bc 从文件的%build
-bi build through %install (%prep,%build, then install) from
-bl verify %files section from
*检查文件的%files段
-ba build source and binary packages from
*建立源码和二进制包
-bb build binary package only from
*只建立二进制包
-bs build source package only from
*只建立源码包
*从 包建立
-tp build through %prep (unpack sources and apply patches) from
-tc build through %build (%prep, then compile) from
-ti build through %install (%prep, %build,then install) from
-ta build source and binary packages from
*建立源码和二进制包
-tb build binary package only from
*只建立二进制包
-ts build source package only from
*只建立源码包
*从 包建立
--rebuild
build binary package from
*建立二进制包
--recompile
build through %install (%prep,%build, then install) from
————————————————————————————————————————————
番外的,整合了一下上面所述的命令的,如下所示:
————————————————————————————————————————————
以上的 apache 的源码包就打包成了 rpm 的包,还是有很多 rpm 包的。将这些在/root/rpmbuild/RPMS/x86_64/下生成rpm的包或 拷贝整个rpmbuild这个目录到别的服务器上,那些相关的组件也还是要安装的,才能安装这些打包好的 rpm 包的。这样就方便多了,不用编译要等那么长的时间了,步骤如下所示:
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
yum -y install autoconf libtool doxygen expat expat-devel libuuid-devel db4-develmysql-devel unixODBC-devel postgresql-devel sqlite-devel pcre pcre-devellua-devel libxml2-devel openldap-devel nss-devel zlib-devel libselinux-develmake freetds freetds-devel mailcap
rpm –ivh /root/rpmbuild/RPMS/x86_64/apr-1.5.0-1.x86_64.rpm
rpm -ivh /root/rpmbuild/RPMS/x86_64/apr-devel-1.5.0-1.x86_64.rpm
rpm -ivh /root/rpmbuild/RPMS/x86_64/apr-util-*
rpm -ivh /root/rpmbuild/RPMS/x86_64/distcache-*
rpm –ivh /root/rpmbuild/RPMS/x86_64/httpd-2.4.4-1.x86_64.rpm
rpm –ivh /root/rpmbuild/RPMS/x86_64/httpd-devel-2.4.4-1.x86_64.rpm
rpm –ivh /root/rpmbuild/RPMS/x86_64/httpd-tools-2.4.4-1.x86_64.rpm
rpm -ivh /root/rpmbuild/RPMS/x86_64/httpd-manual-2.4.4-1.x86_64.rpm
rpm -ivh /root/rpmbuild/RPMS/x86_64/mod_authnz_ldap-2.4.4-1.x86_64.rpm
rpm -ivh /root/rpmbuild/RPMS/x86_64/mod_lua-2.4.4-1.x86_64.rpm
rpm -ivh /root/rpmbuild/RPMS/x86_64/mod_proxy_html-2.4.4-1.x86_64.rpm
rpm -ivh /root/rpmbuild/RPMS/x86_64/mod_socache_dc-2.4.4-1.x86_64.rpm
rpm -ivh /root/rpmbuild/RPMS/x86_64/mod_ssl-2.4.4-1.x86_64.rpm
————————————————————————————————————————————
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com