重build软件包和debian上的软件包pipe理器

这是一直困扰着我一段时间,无法find任何好的答案谷歌search,希望有人可以有一个坚实的答案在这里。

这是关于如何重builddebian软件包以及如何维护它们。

首先,我将如何安装启用非默认模块的NGiNX。 我认为这就像下载软件包源码,编辑东西,重build它并安装它一样简单。 但是,你怎么做,一步一步来。

其次,一旦安装了重新安装的软件包,如果发布新版本的NGiNX,并且希望通过运行一个简单的“apt-get upgrade”命令进行升级,该怎么办? 它会这样做,还是你必须重新下载和重build包? 另外,如果不是那样工作的话,你如何使它工作呢?

有人请给出一个明确的答案。 非常感谢!

具体来说,使用Nginx,您将传递configuration脚本特定参数,如下所述。

Nginx的新版本意味着你必须每次下载源代码并重新编译并重新安装。 一旦你从源代码构build,你的包pipe理器与该包无关。 但是,这对你来说几乎不是问题,因为Debian正在以侵蚀的速度移动。 今天发布的全新源码版本将不会在半年之内到达Debian版本库。

是的,这整个从源头上的业务是一个蠕虫的jar头。 这意味着Debian包含的很好的启动脚本将不适用于你自定义的Nginx版本,并且会有一些反向工程来使它正常工作。

你需要绝对最新的Nginx的特殊编译时选项,或者你可以解决从Dotdeb版本?

如果你确实坚持要build立你自己的Nginx,至less把它变成一个Debian包,这样你就可以重用你的自定义构build。 这里有一些说明 。 有很多人在为Debian打包软件方面做得更好。 使用他们的包裹。 不要自己做。

更新:阅读Nginx 1.2.3的更新日志 。 他们链接到这个电子表格 ,它表明nginx-extras包提供MP4模块支持。

Joel提到了一些你应该认真考虑的Debian软件包的一些好的select,因为它们很可能是更好的select。 但是,要直接回答您的问题,有几种方法可以解决这个问题。

首先,您可以从头开始编译和打包软件。 这是一个复杂的过程,可能不是您想要做的,但如果是这样,请查看Debian新维护者指南 。

其次,您可以解包现有的软件包,根据需要修改源代码和构build环境,重build和重新打包。 这很简单,虽然充满了潜在的危险。 一般来说,

  1. 安装build-essential软件包,它具有构buildDebian软件包所需的工具。

  2. 通过运行apt-get source nginx或任何软件包名称来下载软件包源代码。 这将下载并解压源代码包,包括任何补丁,并且可以重新打包。 您可能需要添加或取消注释/etc/apt/sources.list deb-srcconfiguration行的相应部分的存储库。

  3. 使用apt-get build-dep nginx安装适当的构build依赖关系。

  4. 进行修改。 参考新的维护者指南在这里是有帮助的,因为构build将被自动化,并且可以撤消一些你的改变。 一定要增加构build版本,以便您的包可以安装在现有的版本上。

  5. 使用dpkg-buildpackage -b构build包。 -b标志告诉dpkg你不想重新生成源包。

  6. 安装你的软件包。

更简单的方法是使用checkinstall程序,该程序通过运行安装命令并生成一个能够复制命令所做更改的程序包来生成Debian软件包。 这适用于许多软件包,而且相当简单:

  1. 下载源代码并根据需要进行修改。

  2. 像平常一样构build项目(例如,但不能make install )。

  3. 运行sudo checkinstall -D make install 。 如有必要,您可以修改这个不同的安装命令(例如python setup.py install for Python项目)。

  4. 按照交互提示构build包。 了解Debian的包装习惯有助于做一个有用的包装; 例如,您将不得不从现有的软件包中复制依赖项。

最后一种方法是使用Alien将现有的软件包(RPM,Slackware tgz等)转换为.deb软件包。 我自己并没有使用这种方法,而且它需要一个现成的包来满足您在编译时configuration方面的需求。

这些选项都适用于Debian或Ubuntu,但我只在Ubuntu上试过。