我有几台服务器 (10) 在 x86 上运行 Debian Lenny。我需要从源代码编译一些包。我知道在生产服务器上安装编译工具(为了安全)不是一个好习惯。
我想知道,我是否可以在单台计算机(x86)上编译这些软件包并将它们安装在服务器上?
有什么问题吗 ?
软件包示例
- 内核源
- 阿帕奇
- PHP5
- ...
十分感谢。
我有几台服务器 (10) 在 x86 上运行 Debian Lenny。我需要从源代码编译一些包。我知道在生产服务器上安装编译工具(为了安全)不是一个好习惯。
我想知道,我是否可以在单台计算机(x86)上编译这些软件包并将它们安装在服务器上?
有什么问题吗 ?
软件包示例
十分感谢。
您有十台 Lenny 服务器都运行 x86 架构。完全有可能构建一个安装到任何运行特定架构的计算机上的软件包。使用 构建 Debian 软件包是一种很好的做法
pbuilder
,以避免任何“在开发盒上工作”的问题。重建一个包相对简单。
apt-get
有一个source
命令会拉下源代码。如果所需要的只是一个简单的configure
选项更改,那么您就差不多完成了。编辑debian/rules
文件,并用类似的东西对包进行版本升级~jldugger0
,因此您覆盖了您从中派生的 debian 版本,但不是来自 Debian 的任何新版本。只需增加尾随的 0 以保持碰撞本地版本。不要直接碰撞 Debian 版本,看在上帝的份上,不要碰撞时代——如果你想确保较新的版本不会覆盖本地更改,请固定包。请注意,您正在招致重大的安全风险,并且需要找到某种方式来订阅包中的更改以供审核。本地版本的包的两个问题是:应该努力跟上新版本的步伐。如果您的更改足够简单,您也许可以使用应用补丁的脚本。如果它是侵入性的,那么随着冲突的累积,不向上游推送更改将花费您越来越多的时间。另一个问题是依赖关系。内核、Apache 和 PHP 都是其他包所依赖的核心组件。考虑您要对包进行的更改是否会影响依赖于它的其他包。
只要服务器来自相同的发行版(并且具有相同的平台,x86),在其中一个上编译并在多个上安装应该没有区别。这与获得预编译的二进制文件或包本身一样好。
事实上,你也可以打包(或者只是 tar.bz2 编译的目录,把它带到每个服务器,在本地解压并在
make install
那里运行。安装完成后,只需从这些服务器中删除提取的目录。
如果架构相同,那么它将非常简单。如果没有,则称为交叉编译,需要进行一些设置。
也许一个想法是为自定义包设置一个内部 debian 存储库。这样,该软件包将通过 apt 提供给您的服务器(只要他们知道您的自定义存储库)
你可以:
您还可以使用 make-kpkg 命令制作 .deb 包,这些包与您在标准 repos 中可以找到的非常相似。