Bash
使用自定義二進制/文件名稱建構 bash(或備用 linux 包)
我正在嘗試將 Bash 4.2 建構為用於 Enterprise Linux 5 系統的 RPM 包,預設情況下與 3.2.25 一起提供。這可以成功,但是,我希望兩個版本在系統上共存,以避免與系統包衝突,並允許系統/其他腳本繼續使用它們兼容的 bash3。
我的計劃如下:
- 重命名包’bash4’並且不要與’bash’衝突或提供’sh'
- 配置 bash 以使用二進制名稱“bash4”進行建構,並相應地更改任何文件或支持文件的路徑
理論上這很簡單,而且 Vim 在其配置腳本中提供二進制前綴/後綴,但是 bash 似乎沒有這個功能。我發現的最接近的是 automake 的 EXEEXT,它提供了對可執行擴展(例如 Windows 上的 .exe)的支持,但這並不是為我想要做的事情而設計的,它不能解決文件問題。
雖然
bash
autoconf 版本 (2.63) 有點舊(2008 年 9 月),但它支持--program-transform-name
和--program-suffix
特性。遺憾的是,bash 建構過程沒有使用文件中詳述的這些特性,也沒有使用參數來允許在建構時處理手冊頁。由於文件和更改的數量很少,我推荐一種半手動的方法,即編寫一個小腳本來進行更改預安裝。您可以選擇使用installwatch來確保在安裝過程中擷取所有內容,但
bash
實際上非常少。(FWIW,我快速瀏覽了 FreeBSD bash 埠和 Debian bash 更新檔,沒有任何合適的修復跡象。)雖然通常是破壞建構的一種有趣方式,但您可以在這裡濫用
EXEEXT
:ac_cv_exeext=42 ./configure [...] make ./bash42 -c 'echo $BASH_VERSION' 4.2.42(1)-release
因為它為您節省的只是重命名,我真的不推薦它;-)
還有一點可以從中獲得:
./configure [...] make -e Program=bash42
因為這也反映了您在生成的
bashbug
腳本中的更改(儘管它沒有重命名它)。