以下这些软件包已经随标准的 Debian 安装过程进入了系统,所以你可能不需要再动手安装它们(以及任何附加的依赖软件包)。然而,你还是应该用 aptitude show package 或者 dpkg -s package来检查一下。(译注:apt show PACKAGE 亦可)
autoconf、automake 和 autotools-dev - 很多新程序使用 configure 脚本和 Makefile 文件来帮助预处理程序。(参看 info autoconf、info automake)。 autotools-dev 则用于保持指定的自动配置文件为最新,并带有关于使用那些文件的最佳方法的文档。
debhelper 和 dh-make - dh-make 是用于创建我们示例软件包骨架所必须的,它会使用 debhelper 中的一些工具来创建软件包。他们不是创建软件包所必须的,但对新维护人员而言,我们 强烈推荐。它可以使整个过程极为简化,并易于在将来维护。(参看 dh_make(8)、debhelper(1)、/usr/share/doc/debhelper/README) [3]
新的 debmake 可以作为标准 dh-make 的代替品。debmake 能做的事情更多,并且拥有包含非常多打包实例的 HTML 文档。文档可以通过 debmake-doc 软件包获取。
devscripts - 此软件包提供了一些非常好且有用的脚本来帮助维护者,不过这写脚本并非制作软件包所必须。此软件包所推荐或建议的软件包都值得一看。(参看 /usr/share/doc/devscripts/README.gz)
fakeroot - 这个工具使你可以在编译过程中必要的时候以普通用户来模拟 root 用户环境。 (参看 fakeroot(1))
file - 这个小程序可以检测文件的类型。(参看 file(1))
gfortran - GNU Fortran 95 编译器,如果你的程序是用 Fortran 编写的则必须用此工具完成编译。(参看 gfortran(1))
git - 此软件包提供了用于快捷处理大型项目的著名版本控制系统 - git。它被广泛用于各种开源项目,其中最著名的是 Linux 内核项目。(参见 git(1), git Manual (/usr/share/doc/git-doc/index.html).)
gnupg - 让你可以使用 数字签名 签署你的软件包。当你想把它分发给其他人时这一点特别重要。如果你要把你的成果加入到 Debian 发行版中,那这是必须的步骤。(参看 gpg(1).)
gpc - GNU Pascal 编译器。如果你的程序是用 Pascal 写的则需要此工具。值得一提的是 fp-compiler,Free Pascal 编译器(FPC),也能够很好地胜任编译任务。(参见 gpc(1), ppc386(1).)
lintian - Debian 软件包检查工具,使你可以在编译软件包后知道它是否犯了常见的错误,并对其找到的错误进行解释。 (参见 lintian(1), Lintian User's Manual.)
patch - 这是一个非常有用的工具,它可以把 diff 程序生成的差异清单文件应用到原先的文件上,从而生成一个打了补丁的版本。(参看 patch(1))
patchutils - 此软件包提供了一些帮助处理补丁的工具,如 lsdiff、interdiff 和 filterdiff 命令。
pbuilder - 此软件包提供了创建和维护 chroot 环境的工具。在它的 chroot 环境中编译 Debian 软件包可以检查编译依赖是否合适,并避免 FTBFS (Fails To Build From Source,源代码编译失败)的 Bug。(参看 pbuilder(8) 和 pdebuild(1))
perl - Perl 是现今类Unix系统中使用最普遍的解释型脚本语言,它常被称作Unix的瑞士军刀。(参看 perl(1))
python - Python 是 Debian 系统中另一个最常用的解释型脚本语言,它拥有着可圈可点的强大功能和十分清晰的语法。(参看 python(1))
quilt - 此软件包帮助你管理一系列的补丁。它们被以逻辑栈的方式组织在一起。你可以 apply (=push)、un-apply (=pop) 或简单地刷新它们然后再放入栈内。(参看 quilt(1), and /usr/share/doc/quilt/quilt.pdf.gz.)
xutils-dev - 一些通常用于 X11 的程序,使用其宏功能可以生成 Makefile 文件。(参看 imake(1)、xmkmf(1))
https://www.debian.org/doc/manuals/maint-guide/start.zh-cn.html
对于仓库中
main
区的软件, Debian Policy 要求其 完全兼容 Debian Free Software Guidelines (Debian 自由软件准则) (DFSG) 并且它 不能要求使用main
区以外的软件来编译或执行。这即是最理想的状况。对于仓库中
contrib
区的软件,其许可证必须满足 DFSG 的全部条件,不同于 main 区软件的一点是,它们可以依赖于main
之外的软件包来完成编译或运行。对于仓库中
non-free
区的软件,其许可证可以不满足 DFSG 中的一部分条件。其中坚决不能违背的一点是,该软件 必须是可分发的。https://www.debian.org/doc/manuals/maint-guide/first.zh-cn.html
做个简单的终端 tar.gz
bash$ mkdir -p hello-sh/hello-sh-1.0; cd hello-sh/hello-sh-1.0 $ cat > hello <<EOF #!/bin/sh # (C) 2011 Foo Bar, GPL2+ echo "Hello!" EOF $ chmod 755 hello $ cd .. $ tar -cvzf hello-sh-1.0.tar.gz hello-sh-1.0
解压一个tar包
bash$ mkdir ~/gentoo ; cd ~/gentoo $ wget https://www.example.org/gentoo-0.9.12.tar.gz $ tar xvzf gentoo-0.9.12.tar.gz $ ls -F gentoo-0.9.12/ gentoo-0.9.12.tar.gz
makefile
有些比较简单的程序源码自己带有
Makefile
, 这时你可以很容易地使用make
命令来编译它。[11] 有一些软件的 Makefile 还支持make check
,这个命令可以完成一系列程序检验和测试。当程序编译好后即可用make install
命令,将程序安装到目标目录。现在尝试编译和运行你的程序,你需要确保它能正常工作,以及它在安装和运行时不会破坏别的东西。
你还可以运行
make clean
(或更好的make distclean
) 来清理编译目录。Makefile 中有时还会支持make uninstall
,它被用来卸载已经安装了的程序文件。
如果上游不使用像
2.30.32
这样的常规版本格式,而是用类似11Apr29
这样的日期作为版本,类似于随机的代号字符串,或者以VCS的哈希值作为版本号的一部分,那么请确认将其从 upstream version 中移除。 为此作出的改动信息可以记录在debian/changelog
文件中。 如果你需要发明一个版本字符串,请使用YYYYMMDD
这个格式作为上游版本,比如20110429
。这会确保 dpkg 在升级软件包时能够正确解读新版本。 如果需要确保未来能够平滑过渡到类似0.1
这样的版本号的话,那就请使用0~YYMMDD
格式作为上游版本,例如0~110429
。版本字符串 [18] 可以用 dpkg(1) 来进行比较:
$ dpkg --compare-versions ver1 op ver2
版本比较规则可总结为以下几点:
字符串要从头到尾进行比较。
字母比数字大。
数字作为整数进行比较。
字母按照 ASCII 编码顺序进行比较。
对于点号 (
.
),加号 (+
),以及波浪号 (~
) 则有对应的特殊规则,具体如下:
0.0
<0.5
<0.10
<0.99
<1
<1.0~rc1
<1.0
<1.0+b1
<1.0+nmu1
<1.1
<2.0
有一种比较棘手的情况,当上游释出
gentoo-0.9.12-ReleaseCandidate-99.tar.gz
作为gentoo-0.9.12.tar.gz
的预发布版本时,就需要确保升级工作妥当进行:重命名该上游源代码为gentoo-0.9.12~rc99.tar.gz
.
首先设置两个 环境变量,
$DEBEMAIL
和$DEBFULLNAME
,这样大多数 Debian 维护工具就能够正确识别你用于维护软件包的姓名和电子邮件地址。[19]
bash$ cat >>~/.bashrc <<EOF DEBEMAIL="[email protected]" DEBFULLNAME="Firstname Lastname" export DEBEMAIL DEBFULLNAME EOF $ . ~/.bashrc
一般来说,由上游程序产生的 Debian 软件包都是 外来 的。 若你想要用上游源代码
gentoo-0.9.12.tar.gz
创建一个外来 Debian 软件包,你可以在它的基础上进行外来软件包初始化,这只需要调用 dh_make 命令:
bash$ cd ~/gentoo $ wget https://example.org/gentoo-0.9.12.tar.gz $ tar -xvzf gentoo-0.9.12.tar.gz $ cd gentoo-0.9.12 $ dh_make -f ../gentoo-0.9.12.tar.gz
当然,这里请用你原版源码归档的名字来替换 filename (文件名)。 [20] 详情请参见 dh_make(8) 。
你会看到一些输出,询问你想要创建什么类型的软件包。这里的 Gentoo 被规划为一个单一二进制包——它仅仅产生一个二进制包, 亦即单个
.deb
文件——于是我们就选择第一项 (按s
键), 认真阅读屏幕上的输出信息, 然后按*
ENTER*
键来确认。 [21]执行 dh_make 后,上级目录中自动创建了一份上游 tarball 的副本,名为
gentoo_0.9.12.orig.tar.gz
,这个文件和稍后要介绍的debian.tar.gz
合在一起便满足了一部分 Debian 非本土源码包的要求。
bash$ cd ~/gentoo ; ls -F gentoo-0.9.12/ gentoo-0.9.12.tar.gz gentoo_0.9.12.orig.tar.gz
本文作者:墨洺的文档
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!