CentOS、RedHat、Fedora这样系列的操做系统有一个yumdownloader的工具,能够下载安装包及其源码,例如:centos
yumdownloader --source kernel
上面的语句就会下载到包含内核源码的安装包可是我在执行上述语句的时间却出现“No source RPM for XXX”的提示,后来到网上一查,是由于没配置好路径。工具
要想下载源码包,咱们就必须先配置好yum的源码包下载路径,操做以下(须要root权限):post
1. 打开/etc/yum.repos.d目录。url
2. 若是没有CentOS-Source.repo文件就新建一个,有就备份。spa
3.往CentOS-Source.repo插入如下内容:操作系统
[base-source] name=CentOS-$releasever - Base Source baseurl=http://vault.centos.org/6.4/os/Source/ enabled=1 [updates-source] name=CentOS-$releasever - Updates Source baseurl=http://vault.centos.org/6.4/updates/Source/ enabled=1 [extras-source] name=CentOS-$releasever - Extras Source baseurl=http://vault.centos.org/6.4/extras/Source/ enabled=1 [centosplus-source] name=CentOS-$releasever - Plus Source baseurl=http://vault.centos.org/6.4/centosplus/Source/ enabled=1
PS:个人CentOS是6.4的,请根据本身CentOS的版本修改baseurl,是6.3就把6.4改成6.3便可。code
修改完成后,还须要如下语句使之生效:blog
yum clean all yum makecache
执行完成后(出现TimeOut就多执行几回),咱们就能够用yumdownloader下载源码包了。如今另一个问题来了,ls、ping之类的工具在哪一个安装包里面呢?源码
rpm管理工具能够帮上忙,能够查出这些工具所在的安装包,例以下面这条命令就能够查出ls所在的安装包:
rpm -qf `which ls`
PS:引号是Esc下面的那个,并且若是是别名会有问题,因此最好分开成下面这个样子:
[wkq@localhost /]$ which ls alias ls='ls --color=auto' /bin/ls [wkq@localhost /]$ rpm -qf /bin/ls coreutils-8.4-19.el6_4.2.i686
知道是哪一个软件包后就能够用上面的语句下载ls所在的软件包了:
yumdownloader --source coreutils
下载到的文件是一个rpm安装包,还须要如下语句提取源码:
rpm2cpio coreutils-8.4-19.el6_4.2.src.rpm|cpio -id
生成的文件之中会有一个压缩文件,用tar解压后便可获得源码。