CentOS系統(tǒng)如何獲取命令的源代碼
以32位CentOS6.6下,獲取ls命令的源代碼為例,可以使用如下的方法下載源代碼:
1)配置源代碼的源
在CentOS中,源的配置文件為:/etc/yum.repos.d/CentOS-Base.repo,修改該文件需要root權(quán)限。
打開該文件,查看該文件的內(nèi)容,在本人的機(jī)子上,該文件的內(nèi)容如下:
# CentOS-Base.repo # # The mirror system uses the connecting IP address of the client and the # update status of each mirror to pick mirrors that are updated to and # geographically close to the client. You should use this for CentOS updates # unless you are manually picking other mirrors. # # If the mirrorlist= does not work for you, as a fall back you can try the # remarked out baseurl= line instead. # # [base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 #released updates [updates] name=CentOS-$releasever - Updates mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 #additional packages that may be useful [extras] name=CentOS-$releasever - Extras mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras #baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 #additional packages that extend functionality of existing packages [centosplus] name=CentOS-$releasever - Plus mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus #baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 #contrib - packages by Centos Users [contrib] name=CentOS-$releasever - Contrib mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib #baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
該文件中有兩個變量:releasever和basearch,分別表示release版本和分支,如本人的機(jī)子上,這兩個值分別為6和i386。注意,releasever并不會細(xì)分為次級版本,即不會是6.6之類的。
從該文件的內(nèi)容可以知道,該文件共有5個節(jié),也就是說本人的機(jī)子的軟件來源有5處,分別為base、updates、extras、centosplus和contrib。所以只需要為如下的5處軟件源指定其源代碼的源即可。在文件的末尾加上如下的內(nèi)容:
[base-src] name=CentOS-$releasever - Base src baseurl=http://vault.centos.org/6.6/os/Source/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 [updates-src] name=CentOS-$releasever - Updates src-centos baseurl=http://vault.centos.org/6.6/updates/Source/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 [extras-src] name=CentOS-$releasever - Extras src-centos baseurl=http://vault.centos.org/6.6/extras/Source/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 [centosplus-src] name=CentOS-$releasever - Plus src-centos baseurl=http://vault.centos.org/6.6/centosplus/Source/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 [contrib-src] name=CentOS-$releasever - Contrib src-centos baseurl=http://vault.centos.org/6.6/contrib/Soruce/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
由于不同的版本設(shè)置會有所不同,所以其設(shè)置會有所不同,方法可總結(jié)為如下:
(1)gpgkey與該文件中已有的節(jié)的gpgkey相同
(2)為了確認(rèn)文件的存在和情況,可以打開網(wǎng)站http://vault.centos.org/查看具體的情況,再根據(jù)具體的情況來填寫
(3)設(shè)置baseurl時需要根據(jù)自己的系統(tǒng)的版本來設(shè)置,如本人的機(jī)子為CentOS-6.6,則在設(shè)置時,相關(guān)的參數(shù)就設(shè)置為6.6,即http://vault.centos.org/后接的子路徑為6.6。
該文件的作用是為yum其及相關(guān)工作的下載提供一個源,如在使用yumdownloader(下面會講到)下載源代碼時,會發(fā)生如下動作:
(1)下載$baseurl/repodata/repomd.xml文件,若該repomd.xml文件比系統(tǒng)中的新,更新系統(tǒng)中的相應(yīng)的repomd.xml
(2)下載$baseurl/SPackages/中的相應(yīng)的源代碼rpm包。
2)使用which命令查看ls命令的位置,如下:
which ls
# 輸出:/bin/ls
3)使用rpm命令查詢ls命令所屬的包,如下:
rpm -qf /bin/ls
# 輸出:coreutils-8.4-37.el6.i686
4)yumdownloader是一個從RPM源下載RPM的程序,可以使用yumdownloader命令安裝源代碼,如下:
yumdownloader --source coreutils-8.4-37.el6.i686
注:
(1)若yumdownloader命令沒有安裝,則可以使用此命令安裝:yum install yum-utils。
(2)下載的文件在當(dāng)前目錄下,可以使用參數(shù)--destdir指定下載到哪一個目錄。
5)使用yumdownloader下載到的是一個安裝包文件rpm,可以使用如下的命令查詢r(jià)pm中的tar文件:
rpm -qpl coreutils-8.4-37.el6.src.rpm | grep tar
# 輸出:coreutils-8.4.tar.xz
6)使用rpm2cpio命令將rpm包文件轉(zhuǎn)換成cpio歸檔文件,再使用cpio命令,從cpio歸檔文件復(fù)制提取出一個歸檔文件,出如下:
rpm2cpio coreutils-8.4-37.el6.src.rpm | cpio -idv coreutils-8.4.tar.xz
# 輸出:
# coreutils-8.4.tar.xz
# 9561 blocks
cpio的man解釋為:cpio copies files into an archive
-i:與--extract等同,提取之意
-d:與--make-directories等同,當(dāng)有需要時創(chuàng)建一個加載目錄
-v:列出文件的處理過程
7)使用tar命令對coreutils-8.4.tar.xz壓縮包進(jìn)行解壓縮,如下:
tar -xvf ./coreutils-8.4.tar.xz
至此,命令的源代碼獲取完成。
相關(guān)文章
- 這篇文章主要介紹了CentOS中httpd源代碼安裝與測試方法,主要介紹了軟件包安裝與源代碼安裝2014-03-18

VMware下設(shè)置centos系統(tǒng)NAT網(wǎng)絡(luò)連接的方法
今天小編為大家?guī)淼氖荲Mware下設(shè)置centos系統(tǒng)NAT網(wǎng)絡(luò)連接的方法;希望會對大家有幫助!有需要的朋友一起去看看吧2017-02-08centos7云主機(jī)系統(tǒng)下如何掛載磁盤?
很多朋友在問centos7云主機(jī)系統(tǒng)下如何掛載磁盤?今天小編將為大家?guī)韈entos7云主機(jī)系統(tǒng)下掛載磁盤的方法;希望能夠幫助到大家,有需要的朋友一起去看看吧2017-02-07如何解決centos7雙系統(tǒng)后丟失windows啟動項(xiàng)?
windows 7、8/10 安裝centos7雙系統(tǒng)后,默認(rèn)會將mbr改寫成為grub2,而默認(rèn)的centos7不識別windows 的ntfs分區(qū),所以啟動項(xiàng)沒有windows。 如何解決centos7雙系統(tǒng)后丟失windo2017-02-06
今天小編將為大家?guī)淼氖荂entOS下的系統(tǒng)負(fù)荷詳解;希望對大家會有幫助,有需要的朋友一起去看看吧2017-01-24- linux rm刪除文件之后,恢復(fù)就比較麻煩了,即使恢復(fù)了,文件名格式都變成一串?dāng)?shù)字了。 今天小編將為大家?guī)淼氖荂entOS增加系統(tǒng)回收站功能介紹 ;希望對大家會有幫助,有2017-01-23
CentOS7系統(tǒng)升級備份恢復(fù)實(shí)驗(yàn)詳解
今天小編將為大家?guī)淼氖荂entOS7系統(tǒng)升級備份恢復(fù)實(shí)驗(yàn)詳解;希望能夠幫助到大家,有需要的朋友一起去看看吧2017-01-23
修改虛擬機(jī)中的centos系統(tǒng)分辨率的方法
使用vmware虛擬機(jī)安裝centos系統(tǒng),默認(rèn)分辨都很低,如何修改虛擬機(jī)中centos系統(tǒng)的分辨率呢,下面小編將為大家?guī)硇薷奶摂M機(jī)中的centos系統(tǒng)分辨率的方法,希望能夠幫助到大2017-01-22
如何修改CentOS7系統(tǒng)默認(rèn)運(yùn)行級別?
CentOS系統(tǒng)有7個運(yùn)行級別(runlevel);今天小編將為大家?guī)淼氖切薷腃entOS7系統(tǒng)默認(rèn)運(yùn)行級別的方法,希望對大家會有幫助,有需要的朋友一起去看看吧2017-01-17CentOS系統(tǒng)中與時間的相關(guān)命令詳解
今天小編為大家?guī)淼氖荂entOS系統(tǒng)中與時間的相關(guān)命令詳解,希望對大家會有幫助,有需要的朋友一起去看看吧2017-01-13





