在">Ubuntusci的一部分努力之下,许多没有被Ubuntu软件仓库收录的软件包被添加到了仓库中。把其他类UNIX系统上的软件(或者其他Linux发行版上的软件)移植到Ubuntu Linux中是一件复杂的事情,需要的时间和努力会比预期更多。
不考虑Ubuntu软件仓库,任何已经出现在Debian软件仓库中至少4至5年的软件都将可能成为我们移植打包工作可能面临的困难。这还是个保守的假设。如果仅仅只是将源代码拷贝过来,简单地为Ubuntu(或者Debian)编译一下就可以,相信很多人早就做过了。那些特定的、一直以来没有人移植打包的软件主要是因为他们在Debian/Ubuntu上不能完美编译。
这份文档针对那些从未试过给Debian/Ubuntu制作软件包的读者。因为我们发现,即使软件编译和运行无错,打包的实际过程仍然可能会让人感到困惑。希望随着项目的推进,社区把更多的精力花费在软件包检查上,使我们制作的软件包质量过硬。
工具
Ubuntu/Debian的开发新手经常会对“source”这个词感到困惑。“Source-code”通常指某个程序(program),或者某个应用(application),或者软件包的源代码。当我们说“Sources”的时候,指的是用于构建软件包的文件。例如,软件包“Foo”的“source-code”(源代码)是一个或者一堆文本文件,通过GCC编译连接之后可以产生二进制可执行文件;而我们所说的“Foo”软件包的“sources”,指的是所有用于构建Foo.deb这个debian包的文件,其中包括源代码文件。
构建deb软件包的基本过程如下:
* 下载软件的源码包;
* 把源码包解压缩到某个目录;
* 在源码目录内创建debian化目录 (./debian).
* 修改./debian目录内的文件,如包维护者的详细信息、包描述,等等;
* 在本机编译源代码;
* 在本机生成.deb包;
* 把经过我们修改后能成功编译生成deb包的sources上传到Launchpad PPA[1]。
当软件成功地上传到Launchpad,并在Launchpad上成功编译生成deb包后,我们的工作就基本上完成了。我们的Launchpad PPA源地址可以分享给其他想使用我们的deb包的人。我们甚至可以申请把我们的deb包移入Ubuntu的官方主软件仓库中。
这过程中需要用到的工具至少有:
* 浏览器,或者类似的软件——用于下载软件的源代码包;
* 解压缩软件——用于解压下载回来的源代码包;
* dh_make(dh-make包的一部分)——用于自动创建./debian目录和其他用于创建.deb包的骨架模板文件;
* make(Gnu make)——构建过程中要用到的工具;
* debchange/dch(devscripts包的一部分)——用于编辑包的版本号;
* debuild(devscripts包的一部分)——运行构建过程,包括编译连接,以及生成deb包;
* fakeroot(fakeroot包的一部分)——这个东西是必须的;
* dput——上传经过签名的deb文件。
建议所有打包工作都在较新的Ubuntu系统下进行,这样可以大大方便和简化整个过程。