体育资讯网

您现在的位置是:首页 > 分类12 > 正文

分类12

源码包有多个spec文件(多个源代码文件)

hacker2022-07-07 06:42:22分类1246
本文目录一览:1、如何使用rpmbuild编译源码RPM包2、

本文目录一览:

如何使用rpmbuild编译源码RPM包

1、查看操作系统版本和内核版本

2、创建相关目录

/usr/src/redhat/SOURCES //存放源代码,补丁,图标等文件。/usr/src/redhat/SPECS //存放用于管理rpm制作进程的spec文件。/usr/src/redhat/BUILD //解压后的文件存放在这里。/usr/src/redhat/RPMS //存放由rpmbuild制作好的二进制包。/usr/src/redhat/SRPMS //存放由rpmbuild制作好的源码包。

3、下载Nginx源码包

下载源码包到SOURCES目录,不需要解压。

4、手工创建SPEC文件,由于spec文件是由spec语言编写的,请注意spec语言的语法。

SPEC文件内容如下:

#Example Spec File For Nginx # Edited By LaoXu 7.Mar.2013 #Summary: High Performance Web Server Name: nginx Version: 1.3.9 Release: el5 License: GPL Group: Applications/Server Source: URL: Distribution: Linux Packager: XuYuanzhen absolutey. %description nginx [engine x] is a HTTP and reverse proxy server, as well as a mail proxy server %prep rm -rf $RPM_BUILD_DIR/nginx-1.3.9 zcat $RPM_SOURCE_DIR/nginx-1.3.9.tar.gz | tar -xvf - %build cd nginx-1.3.9 ./configure --prefix=/usr/local/nginx make %install cd nginx-1.3.9 make install %preun if [ -z "`ps aux | grep nginx | grep -v grep`" ];then killall nginx /dev/null exit 0 fi %files /usr/local/nginx 5、开始RPM制作

请教linux系统中安装源代码包?

安装源码包和2进制包一样源码包有多个spec文件,用以下命令即可:

rpm -ivh XX.src.rpm

安装完后源码包有多个spec文件,会在~/目录下生成rpmbuild目录,下面有SOURCE和SPEC2个文件夹

执行命令:rpmbuild -bp SPEC/XX.spec

然后rpmbuild下面生成BUILD,BUILDROOT,RPM3个文件夹

所有源码包有多个spec文件的源代码就在BUILD文件夹下面,源码包有多个spec文件你可以修改源代码,然后打patch,再重新编译生成新的源码包和2进制包

spec是什么类型的文件?

投机; 说明书; 

(尤指地产开发中) 投机性建房的。

spec文件解读:

一、编写spec脚本

由前面的日志了解到,生成rpm除了源码外,最重要的就是懂得编写.spec脚本。rpm建包的原理其实并不复杂,可以理解为按照标准的格式整理一些信息,包括:软件基础信息,以及安装、卸载前后执行的脚本,对源码包解压、打补丁、编译,安装路径和文件等。

实际过程中,最关键的地方,是要清楚虚拟路径的位置,以及宏的定义。

二、关键字

spec脚本包括很多关键字,主要有:

引用

Name: 软件包的名称,后面可使用%{name}的方式引用

Summary: 软件包的内容概要

Version: 软件的实际版本号,例如:1.0.1等,后面可使用%{version}引用

Release: 发布序列号,例如:1linuxing等,标明第几次打包,后面可使用%{release}引用

Group: 软件分组,建议使用标准分组

License: 软件授权方式,通常就是GPL

Source: 源代码包,可以带多个用Source1、Source2等源,后面也可以用%{source1}、%{source2}引用

BuildRoot: 这个是安装或编译时使用的“虚拟目录”,考虑到多用户的环境,一般定义为:

%{_tmppath}/%{name}-%{version}-%{release}-root

%{_tmppath}/%{name}-%{version}-%{release}-buildroot-%(%{__id_u} -n}

该参数非常重要,因为在生成rpm的过程中,执行make install时就会把软件安装到上述的路径中,在打包的时候,同样依赖“虚拟目录”为“根目录”进行操作。

如何用Nginx源码制作RPM包的详解

1、查看操作系统版本和内核版本

2、创建相关目录

/usr/src/redhat/SOURCES //存放源代码源码包有多个spec文件,补丁源码包有多个spec文件,图标等文件。

/usr/src/redhat/SPECS //存放用于管理rpm制作进程的spec文件。

/usr/src/redhat/BUILD //解压后的文件存放在这里。

/usr/src/redhat/RPMS //存放由rpmbuild制作好的二进制包。

/usr/src/redhat/SRPMS //存放由rpmbuild制作好的源码包。

3、下载Nginx源码包

下载源码包到SOURCES目录源码包有多个spec文件,不需要解压。

4、手工创建SPEC文件,由于spec文件是由spec语言编写的,请注意spec语言的语法。

SPEC文件内容如下:

############################# 

# Example Spec File For Nginx 

# Edited By LaoXu 7.Mar.2013 

############################# 

Summary: High Performance Web Server 

Name: nginx 

Version: 1.3.9 

Release: el5 

License: GPL 

Group: Applications/Server 

Source: 

URL: 

Distribution: Linux 

Packager: XuYuanzhen absolutey. 

%description 

nginx [engine x] is a HTTP and reverse proxy server, as well as a mail proxy server 

%prep 

rm -rf $RPM_BUILD_DIR/nginx-1.3.9 

zcat $RPM_SOURCE_DIR/nginx-1.3.9.tar.gz | tar -xvf - 

%build 

cd nginx-1.3.9 

./configure --prefix=/usr/local/nginx 

make 

%install 

cd nginx-1.3.9 

make install 

%preun 

if [ -z "`ps aux | grep nginx | grep -v grep`" ];then 

killall nginx /dev/null 

exit 0 

fi 

%files 

/usr/local/nginx 5、开始RPM制作

在制作RPM包之前,需要安装必要的编译工具,如rpmbuild,gcc等。

开始编译生成rpm包

cd /usr/src/RedHat/SPECS/

rpmbuild -bb nginx.spec //-ba 参数表示同时生成二进制包和源码包 -bb 参数表示只生成二进制包

经过一段时间的编译后最终生成了rpm包文件

如图所示,在/usr/src/redhat/RPMS/x86_64/该目录下生成了我们需要的rpm包,由于我编译的操作系统平台是64bit的,所以生成的rpm包也是64位的文件。在指定的目录下生成RPM,通常用%_topdir变量,需要在宏配置文件中指定,配置文件称为macrofiles,它们通常为 /usr/lib/rpm/macros:/usr/lib/rpm/macros.*:~/.rpmmacros,这个在rhel 5.8中可以通过rpmbuild --showrc | grep macrofiles 查看,我们这里在.rpmmacros文件中定义了生产rpm包的路径为/usr/src/redhat

最后安装生成的rpm包

至此Nginx源码制作并安装成功!

linux rpm包中有没有spec文件

源码包一般是一个压缩包,后缀名为tar.gz,或tar.bz2.双击之后,可以查看里面的内容,还可以解压。rpm包以rpm为后缀,双击后将直接安装。

发表评论

评论列表

  • 竹祭缪败(2022-07-07 09:46:57)回复取消回复

    制作进程的spec文件。/usr/src/redhat/BUILD //解压后的文件存放在这里。/usr/src/redhat/RPMS //存放由rpmbuild制作好的二进制包。/usr/src/redhat/SRPMS //存放由rpmbuild制作好的源码包。

  • 只酷两仪(2022-07-07 15:55:08)回复取消回复

    t/RPMS //存放由rpmbuild制作好的二进制包。/usr/src/redhat/SRPMS //存放由rpmbuild制作好的源码包。3、下载Nginx源码包下载源码包到SOURCES目录源码包有多个spec文件,不需要解压

  • 可难谜兔(2022-07-07 17:55:18)回复取消回复

    1.3.9 Release: el5 License: GPL Group: Applications/Server Source: URL: Distribution: Linux Packager: XuYuanzhen abso