我正在尝试将Bash4.2构建为一个RPM包,以便在Enterprise 5系统上使用,默认为3.2.25。但是,我希望这两个版本在系统上共存,避免与系统包冲突,并允许系统/其他脚本继续使用与其兼容的bash3。
我的计划如下:
理论上这很简单,Vim在它的配置脚本中提供了二进制前缀/后缀,但是bash似乎没有这个特性。我发现的最接近的是automake的EXEEXT,它提供了对可执行扩展的支持(比如Windows上的.exe ),但这并不是为我想要做的事情而设计的,也不是为了解决文档问题。
发布于 2013-10-07 10:46:50
尽管bash autoconf版本(2.63)有点旧(2008年9月),但它支持--program-transform-name和--program-suffix特性。遗憾的是,bash构建过程没有使用这些特性作为按文件详细说明,也不使用参数来允许构建时处理手册页。
由于文件和更改的数量很小,我建议采用半手动方式,即编写一个小脚本来进行预安装。您可以选择使用安装表来确保在安装过程中捕获所有内容,但是bash实际上是非常小的。(FWIW,我快速查看了FreeBSD bash端口和Debian补丁,没有发现合适的补丁。)
虽然通常是破坏构建的一种有趣的方式,但是您可以在这里滥用EXEEXT:
ac_cv_exeext=42 ./configure [...]
make
./bash42 -c 'echo $BASH_VERSION'
4.2.42(1)-release因为它只给了你一个改名,所以我真的不推荐它;-)
我们还可以从中得到更多的好处:
./configure [...]
make -e Program=bash42因为这也反映了您在生成的bashbug脚本中的更改(尽管它没有重命名)。
https://unix.stackexchange.com/questions/93893
复制相似问题