首頁 >系統教程 >Linux >CentOS系統如何取得指令的源碼

CentOS系統如何取得指令的源碼

王林
王林轉載
2024-01-11 19:12:17943瀏覽

以32位元CentOS6.6下,取得ls指令的原始碼為例,可以使用以下的方法下載原始碼:

1)配置原始碼的來源

在CentOS中,來源的設定檔為:/etc/yum.repos.d/CentOS-Base.repo,修改該檔案需要root權限。

開啟該文件,查看該文件的內容,在本人的機子上,該文件的內容如下:

# 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版本和分支,如本人的機子上,這兩個值分別為6和i386。注意,releasever並不會細分為次級版本,即不會是6.6之類的。

從該文件的內容可以知道,該文件共有5個節,也就是說本人的機子的軟體來源有5處,分別為base、updates、extras、centosplus和contrib。所以只需要為如下的5處軟體來源指定其原始碼的來源即可。在文件的末尾加上如下的內容:

[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

由於不同的版本設定會有所不同,所以其設定會有所不同,方法可總結為如下:

(1)gpgkey與該檔案中已有的節的gpgkey相同

(2)為了確認文件的存在和情況,可以開啟網站http://vault.centos.org/查看具體的情況,再根據具體的情況來填寫

(3)設定baseurl時需要根據自己的系統的版本來設置,如本人的機子為CentOS-6.6,則在設置時,相關的參數就設置為6.6,即http://vault.centos. org/後接的子路徑為6.6。

該檔案的作用是為yum其及相關工作的下載提供一個來源,如在使用yumdownloader(下面會講到)下載原始程式碼時,會發生以下動作:

(1)下載$baseurl/repodata/repomd.xml文件,若該repomd.xml文件比系統中的新,更新系統中的相應的repomd.xml

(2)下載$baseurl/SPackages/中的對應的原始碼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)下載的檔案在目前目錄下,可以使用參數--destdir指定下載到哪一個目錄。

5)使用yumdownloader下載到的是安裝套件檔案rpm,可以使用如下的指令查詢rpm中的tar檔案:

rpm -qpl coreutils-8.4-37.el6.src.rpm | grep tar

# 輸出:coreutils-8.4.tar.xz

6)使用rpm2cpio指令將rpm包檔轉換成cpio歸檔文件,再使用cpio指令,從cpio歸檔文件複製擷取出一個歸檔文件,如下:

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等同,當有需要時建立一個載入目錄

-v:列出檔案的處理過程

7)使用tar指令對coreutils-8.4.tar.xz壓縮包進行解壓縮,如下:

tar -xvf ./coreutils-8.4.tar.xz

至此,指令的原始碼取得完成。

以上是CentOS系統如何取得指令的源碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:jb51.net。如有侵權,請聯絡admin@php.cn刪除