Linux系统的命令源码的获取⽅法
我们知道,Linux是开源的,它⾃带的功能强⼤的命令也是开源的,也就是说。我们能够获得这些命令的源码并研究它。那到底怎样获得系统的命令的源码呢?
命令的源码是⼀个软件包为单元的,放在⼀个软件包的源码中。若要下载⼀个命令的源码,就要把这个命令所属的软件包的源码都下载下来。命令的源码就在下载的源码的相关⽂件夹内。⼀般是src⽂件夹,对应的主⽂件名称为cmd.c,当中cmd为详细的命令,如ls命令的主程序⽂件为ls.c。
因为在不同的Linux发⾏版上。源码的获取⽅法并不同样。所以以下以Ubuntu和CentOS这两种经常使⽤的Linux发⾏版为样例进⾏说明。
1、Ubuntu中系统命令源码的获取⽅法
以32位Ubuntu14.04下,获取ls命令的源码为例,能够使⽤例如以下的⽅法下载源码:
1)使⽤which命令查看ls命令的位置,例如以下:
which ls # 输出:/bin/ls
2)使⽤dpkg命令查询ls命令所属的包。例如以下:
dpkg -S /bin/ls # 输出:coreutils: /bin/ls
3)使⽤apt-get命令来下载ls命令所在的包的源码。例如以下:
apt-get source coreutils
注:
1)在使⽤dpkg时。若出现错误。能够使⽤sudo命令使其以root权限运⾏。
2)使⽤apt-get source下载的源码保存到当前⽂件夹下。
。此外,当我们知道了命令所属的包后,也能够到对应的官⽅站点下载。
2、CentOS中系统命令源码的获取⽅法
以32位CentOS6.6下,获取ls命令的源码为例,能够使⽤例如以下的⽅法下载源码:
1)配置源码的源
在CentOS中,源的配置⽂件为:/pos.po,改动该⽂件须要root权限。
打开该⽂件,查看该⽂件的内容,在本⼈的机⼦上,该⽂件的内容例如以下:
# po
#
# 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=/?release=$releasever&arch=$basearch&repo=os
#baseurl=/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=/?release=$releasever&arch=$basearch&repo=updates
#baseurl=/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=/?
release=$releasever&arch=$basearch&repo=extras
#baseurl=/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=/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#contrib - packages by Centos Users
linux系统删除文件夹下所有文件[contrib]
name=CentOS-$releasever - Contrib
mirrorlist=/?release=$releasever&arch=$basearch&repo=contrib
#baseurl=/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=/6.6/os/Source/elaine英文名过时了吗
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
[updates-src]
name=CentOS-$releasever - Updates src-centos
linux操作系统入门什么系统baseurl=/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=/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=/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=/6.6/contrib/Soruce/
centos和ubuntugpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
因为不同的版本号设置会有所不同,所以其设置会有所不同,⽅法可总结为例如以下:
(1)gpgkey与该⽂件⾥已有的节的gpgkey同样
(2)为了确认⽂件的存在和情况,能够打开站点查看详细的情况,再依据详细的情况来填写
(3)设置baseurl时须要依据⾃⼰的系统的版本号来设置,如本⼈的机⼦为CentOS-6.6,则在设置时,相关的參数就设置为6.6。即后接的⼦路径为6.6。
该⽂件的作⽤是为yum其及相关⼯作的下载提供⼀个源。如在使⽤yumdownloader(以下会讲到)下载源码时。会发⽣例如以下动作:
(1)下载$baseurl/l⽂件。若该l⽂件⽐系统中的新。更新系统中的对应的l
(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.
6)使⽤rpm2cpio命令将rpm包⽂件转换成cpio归档⽂件,再使⽤cpio命令,从cpio归档⽂件复制提取出⼀个归档⽂件。出例如以下:rpm2cpio coreutils-8.4-37.el6.src.rpm | cpio -idv coreutils-8.
# 输出:
# coreutils-8.
# 9561 blocks
cpio的man解释为:cpio copies files into an archive
-i:与--extract等同。提取之意
-d:与--make-directories等同,当有须要时创建⼀个载⼊⽂件夹
-v:列出⽂件的处理过程
7)使⽤tar命令对coreutils-8.压缩包进⾏解压缩,例如以下:
tar -xvf ./coreutils-8.
⾄此,命令的源码获取完毕。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论