CentOS獲取軟件安裝包源碼


  用Linux的一大好處就是很多軟件都是開源的,可以輕松地獲得它們的源代碼。閱讀優秀的源代碼是程序員進步的一個很好的途徑。下面就介紹一下如何獲取CentOS下常用工具的源碼。

  CentOS、RedHat、Fedora這樣系列的操作系統有一個yumdownloader的工具,可以下載安裝包及其源碼,例如:

  

yumdownloader --source kernel

  上面的語句就會下載到包含內核源碼的安裝包但是我在執行上述語句的時間卻出現“No source RPM for XXX”的提示,后來到網上一查,是因為沒配置好路徑。

  要想下載源碼包,我們就必須先配置好yum的源碼包下載路徑,操作如下(需要root權限):

  

  1. 打開/etc/yum.repos.d目錄。

  2. 如果沒有CentOS-Source.repo文件就新建一個,有就備份。

  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即可。

  修改完成后,還需要以下語句使之生效:

  

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解壓后即可得到源碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM