在自由软件的世界里,经常需要学习源码或为程序除错,所以你需要下载它们。APT提 供了一套简便的方法帮你获得发布版中众多程序的源代码以及创建一个.debs所需的 所有文件。
Debian源码的另一个普遍用途是将unstable发布版的新版程序进行改写以供别的发 布版使用。例如,从stable发布版外引入新的软件包,需要重新生成.debs将它在 原发布版中的关联关系迁移到新的发布版。
要完成这些工作,/etc/apt/sources.list文件中deb-src所指 引用镜像源应该是unstable,别忘了将行首的注释符去掉。详情参考 /etc/apt/sources.list文件, 第 2.1 节。
用下面的命令下载源码包:
$ apt-get source packagename
通常会下载三个文件:一个.orig.tar.gz、一个.dsc和一个.diff.gz。对于Debian专用的软件包,不会下载最后一个文件,第一个文件的文 件名中没有“orig”项。
dpkg-source通过.dsc文件中的信息,将源码包解包到 packagename-version目录,下载下来的源码包中有一个 debian/目录,里面是创建.deb包所需的文件。
想要下载的源码包自动编译成软件包,只需在命令行中加上-b,如下:
$ apt-get -b source packagename
如果你不打算在下载后就立刻创建.deb文件,你可以在之后用下面的命令创建:
$ dpkg-buildpackage -rfakeroot -uc -b
上述命令应当在下载后为软件包创建的目录中执行。要安装用这种方式构建好的 软件包,只能直接使用软件包管理器,例如:
# dpkg -i file.deb
apt-get的source命令与它的其它命令有所不同,普通用
户就可以运行source命令。文件被下载到用户调用apt-source package
命令时所处的目录中。
通常,编译源码包时要用到某些头文件和共享库,所有的源码包的控制文件中都 有一个域“Build-Depends:”,域中指出了编译该源码包需要哪些附加包。
APT提供了一个简单的方法下载这些附加包,你只需运行apt-get build-dep package,其中“package”就是你打算编译的源码包 名称。见下例:
# apt-get build-dep gmc
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
comerr-dev e2fslibs-dev gdk-imlib-dev imlib-progs libgnome-dev libgnorba-dev
libgpmg1-dev
0 packages upgraded, 7 newly installed, 0 to remove and 1 not upgraded.
Need to get 1069kB of archives. After unpacking 3514kB will be used.
Do you want to continue? [Y/n]
这些将要被安装的包是用于正确编译gmc的。注意这个命令不
能用来搜索某个软件的源码包,你得另外运行apt-get source下载源码包。
如果你想做的是检查要编译一个软件包需要哪些其它的软件包,apt-cache show可以显示它(从那考获取软件包信息, 第 5 章,在众多信息之中,Build-Depends一行会列出那些需要的软件包。
# apt-cache showsrc package
APT HOWTO
1.8.10.4 - 2005年3月kov@debian.orgiamlyoo@163.com