如果想要通过Linux提高编程水平,那么肯定会有人想了解日常命令所使用的源码吧。获取这些命令的源码并不难,下面以uname
为例来介绍步骤。
大致步骤:
- 使用
whereis
或which
命令查看uname
的绝对位置; - 通过
rpm
或dpkg
搜索uname所属的包信息; - 下载并安装对应的源码source包,即可得到源码。
1. 使用rpm包管理器的Linux发行版,例如CentOS和Fedora
# 查看命令
which uname # /bin/uname
# 查看命令所属的包
rpm -qf /bin/uname
# 下载对应的xxx.src.rpm源码包
yumdownloader --source coreutils -版本号
# 查询rpm中的tar文件,源码一般放在里面
rpm -qpl xxx.src.rpm | grep tar
# 从rpm包中提取指定的文件
rpm2cpio xxx.src.rpm | cpio -idv xxx.tar.xx
# 解压
tar xf xxx.tar.xx
备注:
- 如果没有yumdownloader,需要使用yum安装
yum-utils
-
rpm2cpio
命令的作用是将rpm文件转换成cpio文件 -
rpm
命令的几个选项:-
-qf
:查找指定文件属于哪个rpm软件包 -
-qpl
:列出rpm软件包内的文件信息
-
-
cpio
命令的几个选项:-
-i
:抽取的意思 -
-d
:建立目录 -
-v
:冗余信息输出
-
2. 使用dpkg包管理器的Linux发行版,例如Debian、Ubuntu
Debian系的linux发行版获取源码步骤更简单,这里以查看ls
命令的源码为例:
# 查看ls命令属于哪个软件包
dpkg -S `which ls`
# 下载
apt source "coreutils"
备注:
- 如果提示无法找到软件包,那么需要编辑
/etc/apt/source.list
文件,将文件中deb-src
前面的注释去掉即可。
网友评论