linux编译*src.rpm源码的文件

一、编译内核

如果对于内核安装用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)。


你可能感兴趣的:(Linux)