源码包有多个spec文件(多个源代码文件)
本文目录一览:
- 1、如何使用rpmbuild编译源码RPM包
- 2、请教linux系统中安装源代码包?
- 3、spec是什么类型的文件?
- 4、如何用Nginx源码制作RPM包的详解
- 5、linux rpm包中有没有spec文件
如何使用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为后缀,双击后将直接安装。