如何做一个小的改变Debian工具并重新包装它?
一如以往,一切都是第一次。 最近我想在我的Ubuntu 6.10(Edgy Eft)工作站上使用邮件通知器。 我认为在我的工具栏中有一个信封会显示我有新的邮件是很好的。 当我使用默认的Gnome桌面时,mail-notify看起来像是正确的工具给我。 我使用标准的Ubuntu / Debian方式来安装软件包:
apt-get install mail-notify
当我想要配置要监控的邮箱时,我最初没有收到通知。 这很奇怪,我每天收到大约200封邮件(不包括垃圾邮件)。 挖掘互联网,变得清楚,连接到邮件服务器的TLS / SSL选项被该软件包的Debian维护者禁用。 显然他有SSL / TLS许可证的问题,因此他已经禁用了该选项。 但是我从来没有透过互联网传递我的用户名和密码。 所以这里我是一个很好的空邮件通知图标在我的系统托盘,如果我没有解决这个问题,它将保持为空。
显然的解决方案当然是从源头重建工具。 在我找到最简单的方式使Ubuntu真正有效之前,我必须浏览很多信息。 这是我如何做到的。
每次编译时都需要开发包。 如果您从源代码重新编译Debian / Ubuntu软件包,则不需要运行正常的软件包命令“./configure”
,这是Linux中重新编译软件包的标准方式。 有debian工具将重新编译包,重新包装并为您安装。
- 我总是以root身份运行这些类型的练习,尽管还有其他方法可以重新构建一个包(使用
fakeroot
或将sudo
放在每个命令的前面),这里我不用。~$ sudo bash
Password:
# - 获取debian邮件通知包的来源:
# apt-get source mail-notification
这将给你一个子目录(在我的情况下甚至是两个子目录,因为我有一个修改的/etc/apt/sources.list来包括建议的更新)。 我想保持目前的稳定版本6.10,而不是试验太多,所以我将这篇文章的剩余部分限制在3.0版本。
mail-notification-3.0.dfsg.1
mail-notification-4.0-rc2 - 获取编译邮件通知包所需的所有开发包(包括gtk dev包)
# apt-get build-dep mail-notification
“build-deb”选项非常好地检索这个软件包所依赖的每一个软件。 如果这是您第一次尝试从源代码编译,请准备下载大量的软件包。
- 获取开发包,以编译具有SSL支持的邮件通知。
# apt-get install libssl-dev
- 更改到源代码树目录的邮件通知:
# cd mail-notification-3.0.dfsg.1
- 使用您最喜欢的编辑器,我的是“vi”,编辑Debian包配置文件,其中指定了编译选项。 记住,这是Debian / Ubuntu具体的,但是Debian实现包管理的方式相当不错,一旦你习惯了它。 从定义变量DEB_CONFIGURE_EXTRA_FLAGS的行中删除' --disable-ssl '选项:
# vi debian/rules
#!/usr/bin/make -f
# -*- mode: makefile; coding: utf-8 -*-
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/rules/simple-patchsys.mk
include /usr/share/cdbs/1/class/gnome.mk
DEB_INSTALL_MANPAGES_mail-notification := debian/mail-notification.1
DEB_CONFIGURE_SCRIPT_ENV += LDFLAGS=-Wl,--export-dynamic
#DEB_CONFIGURE_EXTRA_FLAGS += --disable-ssl –with-gconf-schema-file-dir=/usr/share/gconf/schemas
DEB_CONFIGURE_EXTRA_FLAGS += --with-gconf-schema-file-dir=/usr/share/gconf/schemas
DEB_DH_MAKESHLIBS_ARGS_mail-notification += --noscripts
DEB_DH_MAKESHLIBS_ARGS_mail-notification-evolution += --noscripts
CFLAGS += -fPIC
AUTOSTARTDIR = debian/mail-notification/etc/xdg/autostart
EVODIR = debian/tmp/usr/lib/evolution/2.8/plugins
BONOBODIR = debian/tmp/usr/lib/bonobo/servers
<snipped> - 为了停止更新管理器的思考,需要从apt源更新此软件包,请编辑changelog,并在更改日志的开头添加几行。 我知道,还有其他的方式告诉Ubuntu / Debian有关更新版本,但这是我做了如何做的:
# vi debian/changelog
mail-notification (3.0.dfsg.1-3ubuntu8a) edgy; urgency=low
* debian/rules: Enable TLS/SSL
-- Martin Sat, 10 Feb 2007 20:28:06 +0100
mail-notification (3.0.dfsg.1-3ubuntu8) edgy; urgency=low
* debian/rules: Fix path to .desktop file to fix FTBFS.
-- Martin Pitt Thu, 12 Oct 2006 10:55:06 +0200
<snipped>观看ubuntu8后添加的' a '。 你只需要确保你在这里有一个不同的名字,但不是太多的不同,因为我仍然希望通知,如果和何时的官方更新可用。
另一个建议是将.0.0。<your-name> .0附加到包版本。 做你自己的选择。
阅读debian新维护者指南,了解有关打包“.deb”的更多信息。 还要在变更日志里写一些合理的内容,所以你知道这个包/更改是什么。 - 要编译源代码,构建软件包并进行安装,您必须使用软件包工具:
# dpkg-buildpackage -uc -b
请阅读dpkg-buildpackage的手册页,以了解有关选项的更多信息。 该软件包现在已经通过启用的TLS / SSL选项完全重新编译。 它将在父目录中创建一个新的可安装软件包。
- 要安装新构建的包,请转到主目录一个package install命令的问题。
# cd ..
# dpkg -i mail-notification_3.0.dfsg.1-3ubuntu8a_i386.deb - 您可以检查SSL支持是否已启用:
# mail-notification --list-features
- 准备。 您可能需要退出GNOME桌面并重新登录才能激活邮件通知并查看新功能。 配置要监控的邮箱(可以监控多个邮箱!),并享受一个很好的信封,指示新邮件已经到达。