重新编译来自其他服务器的源码包

我有几台服务器(10)在x86上运行Debian Lenny。 我需要从源代码编译一些软件包。 我知道在生产服务器上安装编译工具并不是一个好的做法(为了安全)。

我想知道,如果我可以在一台计算机(x86)上编译这些软件包并将其安装在服务器上?

有什么问题吗 ?

包的例子

  • 内核源代码
  • 阿帕奇
  • PHP5

万分感谢。

你有十台Lenny服务器都运行x86 arch。 完全可以构build一个安装到运行特定拱门的计算机的软件包。 用pbuilder构buildDebian软件包是一个很好的习惯,以避免任何“在开发包上工作”的问题。

重build一个软件包相对简单。 apt-get有一个source命令,将拉下源代码。 如果所需的只是一个简单的configure选项更改,那么你几乎已经设置好了。 编辑debian/rules文件,然后使用~jldugger0这个版本来打包这个~jldugger0 ,这样就可以覆盖你从Debian中得到的版本,但是Debian并没有更新。 只是增加尾随0来保持碰撞本地版本。 不要直接碰撞Debian版本,为了上帝的缘故,请不要打开EPOCH –如果您想确保新版本不会覆盖本地更改,请将软件包固定。 请注意,您将面临严重的安全风险,需要find一些方法来订阅包中的更改以供审阅。

本地版本的软件包的两个问题是:应该努力跟上新版本的步伐。 如果您的更改足够简单,则可以通过应用修补程序的脚本来处理。 如果它是侵入性的,不会推动上游的变化会花费你越来越多的时间冲突积累。 另一个问题是依赖关系。 内核,Apache和PHP都是其他软件包所依赖的核心组件。 考虑你想对一个软件包所做的修改是否会影响到其他软件包,具体取决于它。

只要服务器来自同一个发行版(并且具有相同的平台,x86),编译其中一个并安装在几个应该没有区别。 这将会像获得预编译的二进制文件或一个包本身一样好。

事实上,你也可以打包(或只是tar.bz2编译的目录,把它带到每个服务器,本地提取并运行make install那里。

安装完成后,只需从这些服务器中删除提取的目录。

如果架构是相同的,那么这将是非常简单的。 如果不是的话,那就叫做交叉编译,需要一些设置。

也许一个想法是设置一个内部的debian库定制包。 那样的话,这个软件包就可以通过apt来使用(只要他们知道你的自定义仓库)

你可以:

  • 正如其他人已经回答,编译成软件包(或tar文件),并复制和安装它们,
  • 把它们全部编译到一个服务器上,把它们安装到一个共享目录下,然后NFS挂载它(/ usr / local或/ usr / share)。 这显然不适用于内核映像。

您也可以使用make-kpkg命令来制作.deb软件包,这些软件包与标准软件仓库中的软件包非常相似。