linux编译*src.rpm源码的文件
2013-12-08 16:45
260 查看
一、编译内核
如果对于内核安装用src.rpm不理解的话,可以参考文章 :点击打开链接
在Linux AS 4的发行注记中找到解释:当内核源码已经存在在内核的 .src.rpm 文件中时,为内核源码提供一个独立的软件包就变得没有必要。因此,红帽企业 Linux 4 不再包括 kernel-source 软件包。需要这些内核源码的用户可以在 kernel .src.rpm 文件中找到。通过这个文件建立一个快速扩展的资源树…这就是说当红帽企业认为为内核源码提供一个独立的软件包不再重要时,作为用户的我们如果想定制、升级、重编内核就得折腾一下了。/usr/src/kernels
目录不是源代码目录,rpm源代码包也不在AS 4的七张安装光盘中(至少我没能找到)。
对于此类文件,一般可以在下载到,此类文件包括源代码。
这里用kernel-2.6.18-164.el5.src.rpm为例,下面说明一下编译步骤,
当然,前提是安装一下需要的工具在安装内核之前必须把Development Tools,Development Libraries这两个包组安装上去(必须先配置yum 源)
# yum groupinstall "Development Tools" "Development Libraries"
1. 将kernel-2.6.18-164.el5.src.rpm文件放到自己的目录下,为/myfile/,之后运行
rpm -ivh kernel-2.6.18-164.el5.src.rpm
会在/usr/src/下生成redhat这个文件夹。但是如题提示"cannot creat %/usr/src/redhat/SOURCE"那么,
可以自己用mkdir分别创建/usr/src/redhat和/usr/src/redhat/SOURCE。
2. 进入/usr/src/redhat/SPECS中,会看到kernel.spec这个文件 ,我们进行rpmbuid.
rpmbuild -bb --target=i686 kernel.spec //用 uname -m 可以看到自己系统架构,如果你的系统是i386或者是x86_64的,就把i686
//换成对应的。
如果系统中没有rpmbuild这个命令,则用yum进行安装 yum install rpm-build进行安装
# rpmbuild -bp --target=i686 kernel-2.6.spec 遇到下面的错误
error: Bad exit status from /var/tmp/rpm-tmp.50919 (%prep)
可以清除以前安装在/usr/src/redhat/SOURCES下删除所有文件,重来
重新运行rpmbuild
3. 等rpmbuild成功后,最终目录结构成功安装后,数据分布如下:
·所有的kernel配置文件生成在 /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18/configs 目录下
kernel-2.6.9-x86_64.config
kernel-2.6.9-x86_64-smp.config
· 内核树生成在 /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9 目录下
· 内核RPM安装包生成在 /usr/src/redhat/RPMS/{机器体系} 目录下
kernel-2.6.9-22.EL.x86_64.rpm
kernel-debuginfo-2.6.9-22.EL.x86_64.rpm
kernel-devel-2.6.9-22.EL.x86_64.rpm
kernel-smp-2.6.9-22.EL.x86_64.rpm
kernel-smp-devel-2.6.9-22.EL.x86_64.rpm
kernel-sourcecode-2.6.9-22.EL.x86_64.rpm
内核 kernel.src.rpm 包在 /usr/src/redhat/SRPMS 目录下
kernel-2.6.9-22.EL.src.rpm
4. 安装内核源码包,生成源代码目录
# cd /usr/src/redhat/RPMS/{机器体系}
# rpm -ivh kernel-sourcecode-2.6.9-22.EL.x86_64.rpm
查看/usr/src/kernel目录下是否已生成 linux-2.6.9-22.EL 目录了。若是有,那可以参考
点击打开链接
接下来可以按照传统方法定制编译内核了!具体方法请参考本站其它相关文章:内核编译
附:简单编译过程如下:
# cd /usr/src/linux-2.6.9-22.EL/configs
# cp kernel-2.6.9-x86_64-smp.config ../.config
# make oldconfig
# vi Makefile
# make menuconfig
# make all
# make modules_install
# make install
# vi /boot/grub/menu.lst
# reboot
二、对于src.rpm和tar.gz的说明
1、用 rpm -ivh *.src.rpm 命令来安装它不会象二进制的 rpm软件包那样安装程序及其数据,则是向/usr/src/redhat(不同的发行版可能稍有不同)/下的SOURCE、SPECS等子目录释放同名的*.tar.gz源码包。你还得自己用它释放出来的 *.tar.gz源码包来编译安装才行。
2、如果用 rpmbuild ——rebuild *.src.rpm 来进行编译,编译完成后会在 /usr/src/linux(不同的发行版可能稍有不同) 下的RPMS目录下生成同名的*.rpm软件包,这回你就可以安装这它了:rpm -ivh *.rpm .
*.tar.gz形式的源码(请注意*.tar.gz不全是源码!可用tar ztvf *.tar.gz列清单确定)是直接打包并压缩了的目录及文件,*.src.rpm除了包含这个同名的 tar.gz包外,还有方便将之编译为同名rpm二进制包的描述文件(*.spec)。
如果对于内核安装用src.rpm不理解的话,可以参考文章 :点击打开链接
在Linux AS 4的发行注记中找到解释:当内核源码已经存在在内核的 .src.rpm 文件中时,为内核源码提供一个独立的软件包就变得没有必要。因此,红帽企业 Linux 4 不再包括 kernel-source 软件包。需要这些内核源码的用户可以在 kernel .src.rpm 文件中找到。通过这个文件建立一个快速扩展的资源树…这就是说当红帽企业认为为内核源码提供一个独立的软件包不再重要时,作为用户的我们如果想定制、升级、重编内核就得折腾一下了。/usr/src/kernels
目录不是源代码目录,rpm源代码包也不在AS 4的七张安装光盘中(至少我没能找到)。
对于此类文件,一般可以在下载到,此类文件包括源代码。
这里用kernel-2.6.18-164.el5.src.rpm为例,下面说明一下编译步骤,
当然,前提是安装一下需要的工具在安装内核之前必须把Development Tools,Development Libraries这两个包组安装上去(必须先配置yum 源)
# yum groupinstall "Development Tools" "Development Libraries"
1. 将kernel-2.6.18-164.el5.src.rpm文件放到自己的目录下,为/myfile/,之后运行
rpm -ivh kernel-2.6.18-164.el5.src.rpm
会在/usr/src/下生成redhat这个文件夹。但是如题提示"cannot creat %/usr/src/redhat/SOURCE"那么,
可以自己用mkdir分别创建/usr/src/redhat和/usr/src/redhat/SOURCE。
2. 进入/usr/src/redhat/SPECS中,会看到kernel.spec这个文件 ,我们进行rpmbuid.
rpmbuild -bb --target=i686 kernel.spec //用 uname -m 可以看到自己系统架构,如果你的系统是i386或者是x86_64的,就把i686
//换成对应的。
如果系统中没有rpmbuild这个命令,则用yum进行安装 yum install rpm-build进行安装
# rpmbuild -bp --target=i686 kernel-2.6.spec 遇到下面的错误
error: Bad exit status from /var/tmp/rpm-tmp.50919 (%prep)
可以清除以前安装在/usr/src/redhat/SOURCES下删除所有文件,重来
重新运行rpmbuild
3. 等rpmbuild成功后,最终目录结构成功安装后,数据分布如下:
·所有的kernel配置文件生成在 /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18/configs 目录下
kernel-2.6.9-x86_64.config
kernel-2.6.9-x86_64-smp.config
· 内核树生成在 /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9 目录下
· 内核RPM安装包生成在 /usr/src/redhat/RPMS/{机器体系} 目录下
kernel-2.6.9-22.EL.x86_64.rpm
kernel-debuginfo-2.6.9-22.EL.x86_64.rpm
kernel-devel-2.6.9-22.EL.x86_64.rpm
kernel-smp-2.6.9-22.EL.x86_64.rpm
kernel-smp-devel-2.6.9-22.EL.x86_64.rpm
kernel-sourcecode-2.6.9-22.EL.x86_64.rpm
内核 kernel.src.rpm 包在 /usr/src/redhat/SRPMS 目录下
kernel-2.6.9-22.EL.src.rpm
4. 安装内核源码包,生成源代码目录
# cd /usr/src/redhat/RPMS/{机器体系}
# rpm -ivh kernel-sourcecode-2.6.9-22.EL.x86_64.rpm
查看/usr/src/kernel目录下是否已生成 linux-2.6.9-22.EL 目录了。若是有,那可以参考
点击打开链接
接下来可以按照传统方法定制编译内核了!具体方法请参考本站其它相关文章:内核编译
附:简单编译过程如下:
# cd /usr/src/linux-2.6.9-22.EL/configs
# cp kernel-2.6.9-x86_64-smp.config ../.config
# make oldconfig
# vi Makefile
# make menuconfig
# make all
# make modules_install
# make install
# vi /boot/grub/menu.lst
# reboot
二、对于src.rpm和tar.gz的说明
1、用 rpm -ivh *.src.rpm 命令来安装它不会象二进制的 rpm软件包那样安装程序及其数据,则是向/usr/src/redhat(不同的发行版可能稍有不同)/下的SOURCE、SPECS等子目录释放同名的*.tar.gz源码包。你还得自己用它释放出来的 *.tar.gz源码包来编译安装才行。
2、如果用 rpmbuild ——rebuild *.src.rpm 来进行编译,编译完成后会在 /usr/src/linux(不同的发行版可能稍有不同) 下的RPMS目录下生成同名的*.rpm软件包,这回你就可以安装这它了:rpm -ivh *.rpm .
*.tar.gz形式的源码(请注意*.tar.gz不全是源码!可用tar ztvf *.tar.gz列清单确定)是直接打包并压缩了的目录及文件,*.src.rpm除了包含这个同名的 tar.gz包外,还有方便将之编译为同名rpm二进制包的描述文件(*.spec)。
相关文章推荐
- 27. 文件系统――编译安装源码格式的rpm包(src.rpm)
- linux软件包的安装之----编译源码格式的rpm包(后缀名为.src.rpm的软件包)
- 一点Linux心得: 编译 modutils-2.4.27-1.src.rpm
- Linux 安装.src.rpm源码包的方法
- 由src.rpm编译出内核源码
- Linux源码编译(一):从头文件说起
- Linux源码编译(一):从头文件说起
- IDEA - 如何将maven项目src下的源码目录内的xml文件编译进入classes
- Linux 安装.src.rpm源码包的方法
- Linux 安装.src.rpm源码包的方法
- android源码编译报错:prebuilts/misc/linux-x86/bison/bison: 没有这个文件或目录
- Lua在 linux下源码编译问题之readline/readline.h:没有那个文件或目录解决方法
- Linux中rpm、src.rpm、源码包软件的安装
- 解析tar.gz和src.rpm的安装即源码包的编译和安装
- centos主要的几个配置文件以及rpm,yum的常用命令,源码包的编译方法
- LFS——Linux from Scratch && 源码编译和rpm编译比较
- Linux(centos/fedora/redhat/ubuntu....)下如何安装rpm,deb文件,如何解压,编译,安装*.tar.gz文件
- 解析tar.gz和src.rpm的安装即源码包的编译和安装
- Linux中rpm、src.rpm、源码包软件的安装
- LINUX下无法载入共享的库文件,特别是源码编译安装