您好,欢迎来到思海网络,我们将竭诚为您提供优质的服务! 诚征网络推广 | 网站备案 | 帮助中心 | 软件下载 | 购买流程 | 付款方式 | 联系我们 [ 会员登录/注册 ]
促销推广
客服中心
业务咨询
有事点击这里…  531199185
有事点击这里…  61352289
点击这里给我发消息  81721488
有事点击这里…  376585780
有事点击这里…  872642803
有事点击这里…  459248018
有事点击这里…  61352288
有事点击这里…  380791050
技术支持
有事点击这里…  714236853
有事点击这里…  719304487
有事点击这里…  1208894568
有事点击这里…  61352289
在线客服
有事点击这里…  531199185
有事点击这里…  61352288
有事点击这里…  983054746
有事点击这里…  893984210
当前位置:首页 >> 技术文章 >> 文章浏览
技术文章

CentOS系统如何获取命令的源代码

添加时间:2017-4-28 16:54:10  添加: 思海网络 

以32位CentOS6.6下,获取ls命令的源代码为例,可以使用如下的方法下载源代码:

1)配置源代码的源

在CentOS中,源的配置文件为:/etc/yum.repos.d/CentOS-Base.repo,修改该文件需要root权限。

打开该文件,查看该文件的内容,在本人的机子上,该文件的内容如下:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# 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处软件源指定其源代码的源即可。在文件的末尾加上如下的内容:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[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、系统、命令、源代码

分享到:

顶部 】 【 关闭
版权所有:佛山思海电脑网络有限公司 ©1998-2024 All Rights Reserved.
联系电话:(0757)22630313、22633833
中华人民共和国增值电信业务经营许可证: 粤B1.B2-20030321 备案号:粤B2-20030321-1
网站公安备案编号:44060602000007 交互式栏目专项备案编号:200303DD003  
察察 工商 网安 举报有奖  警警  手机打开网站