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解壓後便可獲得源碼。