如何apt获得包的源码

起因

通常,我们都是apt install来安装某个包,直接命令行使用,比如tree,那么如果我们想学习这些命令的源码,该如何操作?

如何获得命令属于的包

有时候,一个包里面包含非常多的命令,比如coreutils,包含很多有用的命令工具,如果我们看到一个命令,比如ls,应该如果知道他属于哪个包呢?

/bin$ which ls -l
/bin/ls
/bin$ dpkg-query -S /bin/ls 
coreutils: /bin/ls

通过上面的命令,可以知道ls属于coreutils这个包,那如何获得这个包的源代码呢?

如何获得包源码

最直接的做法,搜索引擎找这个包,可以找到
www.gnu.org/software/coreutils
再进到网站去下载对应的源码,但是其实apt命令已经帮我们实现了这个路径。

$ apt source coreutils
Reading package lists... Done
E: You must put some 'source' URIs in your sources.list

可以通过source命令来下载,但是第一次执行会报这个错误,表示
/etc/apt/sources.list当中没有对应的sourcelist

百度找到163对应的sources.list,例如

deb http://mirrors.163.com/ubuntu/ precise main universe restricted multiverse 
deb-src http://mirrors.163.com/ubuntu/ precise main universe restricted multiverse 
deb http://mirrors.163.com/ubuntu/ precise-security universe main multiverse restricted 
deb-src http://mirrors.163.com/ubuntu/ precise-security universe main multiverse restricted 
deb http://mirrors.163.com/ubuntu/ precise-updates universe main multiverse restricted 
deb http://mirrors.163.com/ubuntu/ precise-proposed universe main multiverse restricted 
deb-src http://mirrors.163.com/ubuntu/ precise-proposed universe main multiverse restricted 
deb http://mirrors.163.com/ubuntu/ precise-backports universe main multiverse restricted 
deb-src http://mirrors.163.com/ubuntu/ precise-backports universe main multiverse restricted 
deb-src http://mirrors.163.com/ubuntu/ precise-updates universe main multiverse restricted

填入到sources.list当中

sudo vi /etc/apt/sources.list

更新数据源

sudo apt update

重新下载coreutils的源码

sudo apt source coreutils

就可以在当前目录获取到coreutils的源代码了

$ ls -l coreutils
coreutils-8.13/                    coreutils_8.13-3ubuntu3.3.diff.gz  coreutils_8.13-3ubuntu3.3.dsc      coreutils_8.13.orig.tar.gz
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值