在 Debian 上重建软件包和软件包管理器

在 Debian 上重建软件包和软件包管理器

这个问题困扰了我一段时间,无法通过谷歌搜索找到任何好的答案,希望有人能在这里给出一个可靠的答案。

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

首先,如何安装启用了非默认模块的 NGiNX。我认为这很简单,只需下载软件包源、编辑某些内容、重建并安装即可。但是如何一步一步地做到这一点。

其次,一旦您安装了重建的软件包,如果发布了较新版本的 NGiNX,并且您想通过运行简单的“apt-get upgrade”命令来升级它,该怎么办?它会这样做吗,还是您必须重新下载并重建软件包?此外,如果它不起作用,您如何让它像那样工作?

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

答案1

具体来说,对于 Nginx,你将传递配置脚本特定的参数,如下所示这里

新版本的 Nginx 意味着您每次都必须下载源代码并重新构建和安装。一旦您从源代码构建,您的包管理器就与该包无关了。不过,这对您来说几乎不是什么问题,因为 Debian 的发展速度非常快。今天发布的全新源代码版本至少要半年后才会出现在 Debian 存储库中。

是的,整个从源代码构建的过程非常棘手。这意味着 Debian 包含的优秀启动脚本不适用于您自定义的 Nginx 构建,并且需要进行一些逆向工程才能使其正常工作。

你是否需要最新的 Nginx,并带有特殊的编译时选项,或者你是否可以使用来自多特德布

如果你绝对、肯定地坚持要构建自己的 Nginx,至少将其转换为 Debian 包,以便你可以重复使用自定义构建。以下是一些指示。有许多人比 Debian 更擅长打包软件。使用他们的软件包。不要自己制作。

更新:阅读此内容变更日志适用于 Nginx 1.2.3。他们链接到这个电子表格其中,它表示 nginx-extras 包提供 MP4 模块支持。

答案2

Joel 提到了一些构建 Debian 软件包的不错的替代方案,您应该认真考虑,因为它们很可能更适合。但是,直接回答您的问题,有几种方法可以实现。

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

其次,您可以解压现有软件包,根据需要修改源代码和构建环境,然后重新构建并重新打包。这相当简单,但充满了潜在危险。步骤通常如下:

  1. 安装该build-essential软件包,其中包含构建 Debian 软件包所需的工具。

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

  3. 使用 安装适当的构建依赖项apt-get build-dep nginx

  4. 进行修改。参考《新维护者指南》会有所帮助,因为构建将自动进行,并且可能会撤消您的一些更改。请确保增加构建版本,以便您的软件包可以安装在现有版本上。

  5. 使用 构建包dpkg-buildpackage -b。该-b标志表示dpkg您不想重新生成源包。

  6. 安装您的包。

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

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

  2. 按照平常的方式构建项目(make例如,但不是make install)。

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

  4. 按照交互式提示构建软件包。了解 Debian 打包惯例有助于制作有用的软件包;例如,您必须从现有软件包中复制依赖项。

最后一种方法是使用外星人将现有包(RPM、Slackware tgz 等)转换为.deb包。我自己没有使用过这种方法,它需要一个在编译时配置方面符合您需求的现有包。

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

相关内容