2012-08-30 43 views
1

我正在为apc创建rpm。在编写spec文件时,我意识到一些命令可能有一些可以在编译时间内不断变化的路径。例如。这些命令需要在建筑时间内执行。在RPM SPEC文件中防止硬编码路径

$ /usr/local/php/bin/phpize 
$ ./configure --with-php-config=/usr/local/php/bin/php-config 

phpizephp-config文件的完整路径可能发生变化。那么如何防止这种依赖关系,以便我不应该在我的spec文件中硬编码这些路径。

回答

1

因为这些命令在建立时使用,对这个问题的理想解决方案是在这里:

  1. 上分配查找程序包,其提供这些命令或路径例如PHP-配置是由PHP-devel包提供在Fedora操作系统上。在fedora中,你可以使用yum whatprovides "*/php-config"找到它,或者它们已经安装在系统上,然后使用rpm -qf /path/to/command

  2. 一旦你知道这些包,将它们作为BuildRequire标签添加到spec文件中。即使您使用硬编码路径(这不是当然最好的方法),第2步将确保无论何时从spec文件构建包,路径总是存在。

  3. 代替/ usr /你可以使用%{_前缀},它完全取决于你在构建这个rpm的发行版上可用的宏。检查宏文件的路径宏。一个具有常见宏定义的链接是here