作为我们产品发布的一部分,我们提供了在(UNIX)开发机器上编译的Apache HTTP Server二进制文件。
我们告诉客户机将二进制文件(安装在它们的UNIX服务器上)安装在编译它时所在的同一目录结构下。对于一些客户端来说,这是不合适的,例如,他们可以在服务器上安装软件的位置有限制,并且他们不想自己编译Apache。
有没有一种方法可以编译Apache HTTP Server,以便可以使用环境变量动态指定其安装位置?
我花了几天的时间试图解决这个问题,但找不到方法。这让我相信Apache二进制文件在编译时硬编码了一些目录路径,阻碍了我们所需的可移植性。
有没有人能做到这一点?
发布于 2008-08-22 12:34:20
我认为解决这个问题的方法是开发一个"./configure && make“脚本,您的客户端可以使用它来安装、指定和编译二进制文件。当然,这需要客户机在其服务器上安装所有源代码,或者您也可以在NFS共享上提供这些源代码。
发布于 2008-08-26 12:31:10
如果您正在为特定位置编译Apache2,但又希望您的客户端能够将其安装到其他位置(我假设它们与您的构建机器具有相同的体系结构和操作系统),那么您可以这样做,但是apachectl脚本将需要一些售后处理。
我刚刚测试了以下步骤:
运行./configure --prefix=/opt/apache2后,
sudo make install以在构建计算机上安装。cd /opt/apache2; sudo tar cf - apache2 | gzip -c > ~/apache2.tar.gz/opt/mynewdir/dan/apache2中进行测试。所以基本上,您的客户端不能使用rpm或类似的东西--除非您知道如何使其可重定位(我不知道:-)。conf/httpd.conf文件将充满硬编码的绝对路径--他们只需将其更改为所需的任何路径即可。apachectl脚本也有硬编码的路径。这只是一个shell脚本,所以您可以破解它,或者给他们一个sed脚本,以便将构建计算机上的旧路径转换为客户端上的新路径。./bin/httpd -f /opt/mynewdir/dan/conf/httpd.conf :-)希望这能有所帮助。如果它对您无效,请让我们知道您收到的任何错误消息。
发布于 2008-08-26 09:45:38
我认为解决这个问题的方法是开发一个“./
&& make”脚本,你的客户端可以用它来安装、指定和编译二进制文件。当然,这需要客户机在其服务器上安装所有源代码,或者您也可以在NFS共享上提供这些源代码。
更不用说完整的构建工具链了。如今,大多数主要发行版中的默认版本都不是GCC。强制客户端将其安装到/opt/my_apache2/或类似的位置不是很明智吗?
https://stackoverflow.com/questions/22140
复制相似问题