CentOS系统中如何获取命令源代码的详细操作步骤
以32位CentOS 6.6环境为例,获取ls命令的源代码其实并不复杂。下面一步一步走通整个流程,关键步骤会给出细节和注意事项。
1)配置源代码源
CentOS中,yum的源配置文件在 /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,分别代表发行版本和体系结构。例如在32位CentOS 6.6上,它们的值分别是6和i386。注意releasever不会细分到次级版本(不会出现6.6),它只到主版本号。
从文件内容来看,共有5个软件源小节:base、updates、extras、centosplus和contrib。我们需要为每一个源都添加一个对应的源代码源。在文件末尾追加以下内容:
[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
不同版本的配置略有差异,但遵循几个通用原则:
- gpgkey与已有节中的gpgkey保持一致。
- 配置前可以先打开
http://vault.centos.org/看看具体目录结构,确认存在对应的Source子目录。 - baseurl中的版本号要对应实际系统版本,例如CentOS 6.6就用
6.6。
这段配置的作用是让yum及其相关工具能够找到源代码包。当之后用yumdownloader下载源代码时,实际上会执行以下动作:
- 下载
$baseurl/repodata/repomd.xml文件,如果比本地的新则更新。 - 从
$baseurl/SPackages/中下载对应的源代码rpm包。
2)找到ls命令的位置
使用which命令:
which ls
输出:/bin/ls
3)查询ls所属的rpm包
用rpm -qf命令:
rpm -qf /bin/ls
输出:coreutils-8.4-37.el6.i686
4)使用yumdownloader下载源代码rpm
yumdownloader是专门从yum源下载rpm包的工具(需要先安装yum-utils包)。执行:
yumdownloader --source coreutils-8.4-37.el6.i686
几点说明:
- 如果系统未安装
yumdownloader,先执行yum install yum-utils。 - 默认下载到当前目录,可以用参数
--destdir指定目标路径。
5)查看源代码rpm中包含的tar包
下载到的文件是coreutils-8.4-37.el6.src.rpm。用rpm -qpl列出内容并过滤出tar文件:
rpm -qpl coreutils-8.4-37.el6.src.rpm | grep tar
输出:coreutils-8.4.tar.xz
6)从src.rpm中提取tar.xz
使用rpm2cpio配合cpio命令:
rpm2cpio coreutils-8.4-37.el6.src.rpm | cpio -idv coreutils-8.4.tar.xz
输出:
coreutils-8.4.tar.xz 9561 blocks
参数说明:
-i或--extract:提取文件-d或--make-directories:必要时创建目录-v:显示处理过程
7)解压tar.xz得到源代码
最后一步,解压缩:
tar -xvf ./coreutils-8.4.tar.xz
至此,coreutils(其中包含ls命令)的完整源代码就全部准备好了。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
Win11频繁断网提示默认网关不可用怎么办
先聊聊一个很常见的问题:Windows 11 电脑刚连接 Wi-Fi 或插上网线时还能正常访问网络,可几分钟后突然“掉线”,任务栏右下角出现“无 Internet”提示,右键诊断显示“默认网关不可用”。这时候重启电脑或点击“修复”能暂时恢复,但用不了多久又会断开。这说明系统其实已经获得了 IP 地址
Mac如何取消正在进行的系统备份任务
Mac 正在执行时间机器备份时,进度条卡在“正在准备”或“备份中”迟迟不动,磁盘读写与网络带宽被持续占用——这种情形下,大多数用户都希望能立即中断任务。设想这样一个场景:你正赶着安装大型软件,或者急需拔出外接硬盘,但系统却执意继续备份。别担心,这里有一套行之有效的解决方案:先在“活动监视器”中强制退
电脑显示器刷新率锁死60Hz无法调整的解决方法
显示器刷新率锁死60Hz时,需检查DP或HDMI线缆版本并更换VESA认证线缆;可通过显示适配器属性勾选隐藏刷新率选项、显卡控制面板自定义时序、清洁安装驱动或使用CRU工具修改EDID强制启用高刷模式。
Linux系统下Systemd服务管理从零开始方法步骤详解完整教程
systemctl管理systemd服务,修改配置于 etc systemd system,启用需daemon-reload再enable。查看状态关注Loaded行,masked服务需unmask并重载恢复。reload发SIGHUP,restart中断连接,reload-or-restart自动降级。日常禁用优先用disable。
Mac如何取消同步iPhone书签和历史记录
彻底关闭iCloudSafari同步并选择“保留在Mac上”,然后手动删除书签文件夹或清理~ Library Safari Bookmarks plist文件,最后通过iCloud官网确认同步已失效,即可彻底清除Mac上的iPhone同步书签。
- 日榜
- 周榜
- 月榜
1
2
3
4
5
6
7
8
9
10
相关攻略
2026-07-03 07:44
2026-07-03 07:44
2026-07-03 07:43
2026-07-03 07:43
2026-07-03 07:43
2026-07-03 07:43
2026-07-03 07:43
2026-07-03 07:42
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程
热门话题

