使用自訂二進位/文件名稱建立 bash(或備用 Linux 套件)

使用自訂二進位/文件名稱建立 bash(或備用 Linux 套件)

我正在嘗試將 Bash 4.2 建置為 RPM 軟體包,以便在 Enterprise Linux 5 系統上使用,預設使用 3.2.25。這工作成功,但是,我希望兩個版本在系統上共存,以避免與系統套件衝突,並允許系統/其他腳本繼續使用它們相容的bash3。

我的計劃如下:

  • 重新命名包“bash4”,不要與“bash”衝突或提供“sh”
  • 配置 bash 以使用二進位名稱“bash4”進行構建,並相應地更改任何文件或支援文件的路徑

理論上這很簡單,Vim 在其配置腳本中提供了二進制前綴/後綴,但是 bash 似乎沒有此功能。我發現的最接近的是automake 的EXEEXT,它提供了對可執行擴展名的支援(例如Windows 上的.exe),但這並不是真正為我想做的事情而設計的,也沒有解決文件問題。

答案1

儘管bashautoconf 版本 (2.63) 有點舊(2008 年 9 月),但它支援--program-transform-name--program-suffix功能。遺憾的是 bash 建置過程並沒有使用這些功能文件中有詳細說明,也不使用參數來允許建置時處理手冊頁。

由於文件和更改的數量很少,因此我建議採用半手動方法,即編寫一個小腳本來在安裝前進行更改。您可以選擇使用安裝手錶確保您在安裝過程中捕獲所有內容,但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(儘管它沒有重命名)。

相關內容