2007年2月14日星期三

使用源提供的源代码构建 .deb 包

使用源提供的源代码构建 .deb 包

  • 下载源码包

    APT提供了一套简便的方法帮你获得发布版中众多程序的源代码以及创建一个.deb所需的所有文件。

    首先, 在 /etc/apt/sources.list 文件中加入 deb-src 条目. 详细参阅 APT HOWTO

    然后, 运行命令

    # apt-get update 

    # aptitude update 

    就可以用下面的命令下载源码包:

    # apt-get source packagename 
    # aptitude source packagename 

    下载的软件包会包含.orig.tar.gz,.dsc 和 .diff.gz。对于 Debian 专用的软件包,最后一个文件不会下载,第一个文件的文件名中没有"orig"项。

    dpkg-source 读取 .dsc 文件信息,将源码包解包到 packagename-version 目录,下载下来的源码包中有一个 debian/ 目录,里面是创建 .deb 包所需的文件。

    例如:

    $ apt-get source nano Reading package lists... Done Building dependency tree... Done Need to get 1199kB of source archives. Get:1 http://ftp.us.debian.org testing/main nano 1.3.11-2 (dsc) [706B] Get:2 http://ftp.us.debian.org testing/main nano 1.3.11-2 (tar) [1173kB]        Get:3 http://ftp.us.debian.org testing/main nano 1.3.11-2 (diff) [25.4kB]       Fetched 1199kB in 3m46s (5287B/s)                                               ... ... dpkg-source: extracting nano in nano-1.3.11 dpkg-source: unpacking nano_1.3.11.orig.tar.gz dpkg-source: applying ./nano_1.3.11-2.diff.gz 

    做相应调整后, 在源代码的根目录 nano-1.3.11 下运行:

    # dpkg-buildpackage -rfakeroot -uc -b 

    将代码编译成为软件包.

    想要下载的源码包自动编译成软件包,只需在命令行中加上 -b,例如:

    # apt-get -b source packagename 

    请在下载包所在的目录中运行上面的命令。

    # dpkg -i file.deb 

    apt-get的source命令与它的其它命令有所不同,普通用户权限就可以运行source命令,指定文件被下载到用户调用 apt-source package 命令时所处的目录中。

  • 编译源码包所需的软件包

    通常,编译源码包时要用到某些头文件和共享库,所有的源码包的管理文件 (control file) 中都有一个域 "Build-Depends:", 域中指出了编译该源码包需要哪些附加包。

    如果你仅仅想检查一下编译当前包需要哪些相关软件包,可以使用 apt-cache show 命令的一个变种,它将显示软件包信息中有关 Build-Depends 的行。

    $ apt-cache showsrc nano|grep Build-Depends   Build-Depends: dpkg-dev (>= 1.13.9), libncurses5-dev, libncursesw5-dev, libslang2-dev, debhelper (>= 5.0.22), dpatch 

    APT 提供了一个简单的方法下载这些附加包,你只需运行 apt-get build-dep package, 其中 package 就是你打算编译的源码包名称。例如:

    # apt-get build-dep nano Reading package lists... Done Building dependency tree... Done The following NEW packages will be installed:   build-essential dpatch g++ libncursesw5-dev libslang2-dev 0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded. Need to get 986kB of archives. After unpacking 2806kB of additional disk space will be used. Do you want to continue [Y/n]?  

    这些用于 nano 正确编译指定源码包的附加包将会被安装。注意这个命令不能用来搜索软件的源码包,你得另外运行 apt-get source 下载源码包。


    --
    一步一步教你从互联网赚钱
    http://www.zqzn.com/index.asp?rid=key480769

没有评论: