如果我想在不使用包pipe理器的情况下在Linux中运行应用程序,是我从源码编译它的唯一select吗?

我有两个方面的项目,我想在工作中完成:

  1. 使wiki用户能够对公司Active Directory(LDAP)服务器进行身份validation。
  2. 为我的开发团队设置一个代码审查工具。

这是问题。 工具所在的Linux服务器有一个没有编译LDAP的PHP版本,由于某种原因Apache服务器缺lessmod_proxy_html。

如果我在Windows上运行,我会下载相关的模块,将它们放到ext或模块目录中,然后popup服务器,然后继续我的业务。 但是,对于Linux来说,似乎我唯一的select是重新编译PHP(用于LDAP库),或者自己编译mod_proxy_html模块及其所有依赖项。

现在,我知道你可能在想什么:“你为什么不用一个软件包pipe理器来安装模块呢? 这是一个公平的问题。

  1. 服务器只能通过具有白名单列表的代理访问公共Internet
    站点。 (毕竟它是一个内联网服务器。)
  2. 运行在服务器上的Apache和PHP来自LAMP包。 它们不受YUM或RPM或任何其他3个字母的首字母缩略词的控制。

我能够从头开始编译PHP,但不是没有良好的牦牛剃须 。 我不得不下载并编译4或5个依赖关系,然后才能使用LDAP库编译PHP,即使如此, make test基本上也是这么说的:“嗨,哥们,我知道你经历了很多麻烦来编译它,还挺好的,祝你好运!“

所以我的问题是, 为什么这是必要的? 为什么我不能下载我想要的库/模块的预编译(静态编译的)版本,把它们放在Apache和PHP可以看到的地方,重启Apache服务器并继续我的快乐之路。

您找不到软件分发的Windows模型的原因几乎与二进制兼容性和库版本相同。 您可以devise一个构build过程,它可以比任何支持X个Unix衍生产品和Y个处理器体系结构的任何平台(通过自动检测必要的构build工具)更容易地编译软件。

在这种情况下,许多公司都在自己的networking上安装了一个软件包分发服务器,允许受限制的服务器访问。 该服务器可以刷新自己的存储库,也可以作为请求的代理服务器,如果已经下载了一次,则服务于本地版本的包。 如果您最终构build自己的定制软件包,这也最终成为中心分发点。

不幸的是,这不会对您有所帮助,因为您下载了第三方“应用程序堆栈”,而不是使用供应商提供的解决scheme。 这些通常是为了让软件爱好者更容易,他们只是想把事情搞好,不需要花费太多精力就可以让组件相互搭配,但是在企业级,你必须仔细考虑这是怎么回事将适合您的基础设施的软件生命周期。

无论您使用的是哪种Linux发行版,都可能为其提供的软件包提供源代码。 最有可能的是,它也为LAMP堆栈提供了预先构build的包装。

去这里的方法是获取包的源代码,根据需要进行修改并重新编译。

您应该在客户端PC上执行此操作,并将生成的包上传到服务器,从而无需从互联网上下载任何东西

如果您select安装第三方供应商提供的二进制文件,则应该获取其源并对其进行修改。

为什么你没有在网上find预编译的libs / modules for php是因为没有这个需要。 使用为您的发行版而制作的(源)包通常更方便。