分享:Linux下查找/下载/编译代码包的捷径

6 views
Skip to first unread message

Qian Hong

unread,
Jan 21, 2011, 4:46:40 AM1/21/11
to gz...@googlegroups.com
有时候可能想要查找某个命令对应哪个可执行文件,下载和查看这个文件的源代码,以及从源代码进行编译安装,这个过程中可能有许多麻烦.
在Ubuntu下,可以有比较方便的方法,以下分别是ubuntu-bug,ps和cd三个命令的三种稍微不同的例子:

ubuntu-bug的例子
1.首先用which命令找出ubuntu-bug对应的可执行文件:
$ which ubuntu-bug
/usr/bin/ubuntu-bug
2.接下来看一下这个文件的类型:
$ file /usr/bin/ubuntu-bug
/usr/bin/ubuntu-bug: symbolic link to `apport-bug'
说明这是一个符号链接,所以我们要去找apport-bug:
1':重复1
$ which apport-bug
/usr/bin/apport-bug
2':重复2
$ file /usr/bin/apport-bug
/usr/bin/apport-bug: POSIX shell script text executable
说明这是一个文本文件,无须另外下载源代码,只要用喜欢的编辑器直接打开就好,例如
3: 查看代码
less /usr/bin/apport-bug


ps命令的例子:
1.同样,首先要知道ps命令是对应于那个可执行文件:
$ which ps
/bin/ps
2.查看文件类型:
$ file /bin/ps
/bin/ps: ELF 64-bit LSB executable, x86-64, version 1 (SYSV),
dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped
说明这是一个可执行的二进制文件,不能直接用文本编辑器打开了,那么我们需要进一步找到包含这个文件的软件包
3.查找对应的软件包:
$ dpkg -S /bin/ps
procps: /bin/ps
原来是procps这个软件包提供了/bin/ps这个文件.那么接下来就好办了:
4.从软件仓库下载软件包源代码:
$ apt-get source procps
这时候进行configure和make的话,可能会有很多编译依赖需要解决,不过我们可以用万能的apt-get:
5.自动安装编译依赖的头文件:
$ sudo apt-get build-dep procps
非常强大,无须解释,用过了就永远记住了.
然后就是正常的configure和make了.build-dep这一步能够节省很多时间.

cd命令的例子:
1. which cd
这一步没有任何输出,原因在于cd命令是bash的内置命令.这一步能把很多新手卡死.
关于bash内置命令:
$ man bash-builtins

2.既然是内置命令,那要看代码就只能去看bash的代码了.
$ which bash
/bin/bash
其他同上.

至于其他的发行版是否也有类似dpkg -S / apt-get source / sudo apt-get build-dep
的命令,我就不是很清楚了,只是从shlug的朋友知道fedora中
rpm -qf procps
可以得到程序对应的安装包名字;
yumdownloader --source procps
可以下载源代码;
不过我没有试过,请求使用fedora的朋友确认一下.
不知有没有类似 build-dep的命令呢?

抛砖引玉,希望使用别的发行版的朋友也分享一下这方面的东西 :-)


--
Regards,
Qian Hong
-
Send from Ubuntu
http://www.ubuntu.com/

yinhm

unread,
Jan 21, 2011, 5:41:20 AM1/21/11
to gz...@googlegroups.com
2011/1/21 Qian Hong <frac...@gmail.com>:

> 4.从软件仓库下载软件包源代码:
> $ apt-get source procps
> 这时候进行configure和make的话,可能会有很多编译依赖需要解决,不过我们可以用万能的apt-get:
> 5.自动安装编译依赖的头文件:
> $ sudo apt-get build-dep procps
> 非常强大,无须解释,用过了就永远记住了.
> 然后就是正常的configure和make了.build-dep这一步能够节省很多时间.
>

既然是debian类系统,无需configue make
直接 dpkg-buildpackage -b 编译deb包后 dpkg -i PgkName.deb

一个有用的场景是 back-porting,比如服务器需要部署某个软件,
而stable版本可能过于陈旧,可以利用testing的deb-src来编译升级需要的deb。

--
Regards,
@yinhm
Friendfeed: https://friendfeed.com/yinhm
有微码头:http://yinhm.appspot.com
github: https://github.com/yinhm

Qian Hong

unread,
Jan 21, 2011, 5:57:37 AM1/21/11
to gz...@googlegroups.com
2011/1/21 yinhm <epa...@gmail.com>:

> 既然是debian类系统,无需configue make
> 直接 dpkg-buildpackage -b 编译deb包后 dpkg -i PgkName.deb
>
> 一个有用的场景是 back-porting,比如服务器需要部署某个软件,
> 而stable版本可能过于陈旧,可以利用testing的deb-src来编译升级需要的deb。

谢谢,学习了!

刘滔

unread,
Jan 21, 2011, 8:15:29 AM1/21/11
to gz...@googlegroups.com
终于知道怎么找源代码了,还一直挺想看一下grep的源代码的,谢谢了~

--
您收到此邮件是因为您订阅了 Google 网上论坛的“广州 GNU/Linux 用户组”论坛。
要向此网上论坛发帖,请发送电子邮件至 gz...@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 gzlug+un...@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/gzlug?hl=zh-CN 访问此网上论坛。




--
高调做事,低调做人……慢慢参悟……

leung hiphen

unread,
Jan 21, 2011, 9:53:43 AM1/21/11
to gz...@googlegroups.com
嗯,这个方法我也没用过,谢!
back-porting我的懒方法是取得新的deb再dpkg


既然是debian类系统,无需configue make
直接 dpkg-buildpackage -b 编译deb包后 dpkg -i PgkName.deb

一个有用的场景是 back-porting,比如服务器需要部署某个软件,
而stable版本可能过于陈旧,可以利用testing的deb-src来编译升级需要的deb。

--
Regards,
@yinhm
Friendfeed: https://friendfeed.com/yinhm
有微码头:http://yinhm.appspot.com
github: https://github.com/yinhm
--
您收到此邮件是因为您订阅了 Google 网上论坛的“广州 GNU/Linux 用户组”论坛。
要向此网上论坛发帖,请发送电子邮件至 gz...@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 gzlug+un...@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/gzlug?hl=zh-CN 访问此网上论坛。




--
Hiphen

donilan lan

unread,
Jan 21, 2011, 9:53:45 AM1/21/11
to gz...@googlegroups.com

如果早点找到这贴就不用折腾那么久了。

D

在 2011 年 1 21 日,4:15 下午,"刘滔" <mat.l...@gmail.com>编写:

终于知道怎么找源代码了,还一直挺想看一下grep的源代码的,谢谢了~

在 2011年1月21日 下午1:57,Qian Hong <frac...@gmail.com>写道:


>
> 2011/1/21 yinhm <epa...@gmail.com>:
> > 既然是debian类系统,无需configue make

> > 直接 dpkg-buildpackage ...




--
高调做事,低调做人……慢慢参悟……



--
您收到此邮件是因为您订阅了 Google 网上论坛的“广州 GNU/Linux 用户组”论坛。
要向此网上论坛发帖,请发送电子邮件至 gz...@googlegroups.com

要取消...

yinhm

unread,
Jan 21, 2011, 10:47:16 AM1/21/11
to gz...@googlegroups.com
不是严肃的应用环境也没关系,服务器上要求还是高点,有时因为依赖不满足,需要编译一堆包。
对于debian,优先考虑backports源。

刘滔

unread,
Jan 21, 2011, 1:40:22 PM1/21/11
to gz...@googlegroups.com
我只是为了看看源代码而已,虽然我也喜欢自己编译软件来安装。不过我还是觉得现在水平不够,虽然下载了grep的源代码包,不过Makefile里面看不出一点依赖关系来,看了grep.c也没看懂什么,只看懂了getopt()的那部分,路还远着哪~
高调做事,低调做人……慢慢参悟……

Reply all
Reply to author
Forward
0 new messages